Normalised Difference Vegetation Index (NDVI) Climatology

Date modified: February 2022

Service overview

Description

Digital Earth Africa’s NDVI climatology product represents the long-term average baseline condition of vegetation for every Landsat pixel over the African continent. Both mean and standard deviation NDVI climatologies are available for each calender month.

Some key features of the product are:

  • NDVI climatologies were developed using harmonized Landsat 5,7,and 8 satellite imagery.

  • Mean and standard deviation NDVI climatologies are produced for each calender month, using a temporal baseline period from 1984-2020 (inclusive)

  • Datasets have a spatial resolution of 30 metres

The product contains 36 measurements, across three categories of data (12 measurements within each category, one for each month):

  • mean_<month>: These measurements show the mean NDVI calculated from all available NDVI data from 1984-2020 for the given month.

  • stddev_<month>: These measurements show the standard deviation of NDVI values of all available NDVI data from 1984-2020 for the given month.

  • count_<month>: These measaurements show the number of clear observations that go into creating the mean and standard deviation measurements.

    Important Note: Due to the inconsistent data availability of Landsat 5 over equatorial Africa, and due to persistent cloud coverage over these same regions, the quality of the long-term NDVI baseline is poor in equatorial Africa. We recommend not using the product in locations where the clear obervation count is less than ~30 observations. Below this, the standard deviation layers are prone to data artefacts owing to temporal smoothing operations performing poorly on sparse datasets, and residual cloudy pixels not being sufficiently ‘averaged out’ by a decent volume of input data.

A Jupyter Notebook which demonstrates loading and using this dataset in the Sandbox is also available.

Specifications

Table 1: NDVI Climatology specifications

Specification

Product name

ndvi_climatology_ls

Cell size - X (metres)

30

Cell size - Y (metres)

30

Coordinate reference system

EPSG: 6933

Temporal resolution

N/A

Temporal range

1984-2020

Parent dataset

Landsat 5,7,8

Update frequency

N/A

Table 2: NDVI Climatology measurements

Band ID

Description

Value range

Data type

NoData/Fill value

mean_jan

Mean NDVI for January (1984-2020)

0 - 1

float32

nan

mean_feb

Mean NDVI for February (1984-2020)

0 - 1

float32

nan

mean_mar

Mean NDVI for March (1984-2020)

0 - 1

float32

nan

mean_apr

Mean NDVI for April (1984-2020)

0 - 1

float32

nan

mean_may

Mean NDVI for May (1984-2020)

0 - 1

float32

nan

mean_jun

Mean NDVI for June (1984-2020)

0 - 1

float32

nan

mean_jul

Mean NDVI for July (1984-2020)

0 - 1

float32

nan

mean_aug

Mean NDVI for August (1984-2020)

0 - 1

float32

nan

mean_sep

Mean NDVI for September (1984-2020)

0 - 1

float32

nan

mean_oct

Mean NDVI for October (1984-2020)

0 - 1

float32

nan

mean_nov

Mean NDVI for November (1984-2020)

0 - 1

float32

nan

mean_dec

Mean NDVI for December (1984-2020)

0 - 1

float32

nan

stddev_jan

Standard Deviation of NDVI for January (1984-2020)

0 - 1

float32

nan

stddev_feb

Standard Deviation of NDVI for February (1984-2020)

0 - 1

float32

nan

stddev_mar

Standard Deviation of NDVI for March (1984-2020)

0 - 1

float32

nan

stddev_apr

Standard Deviation of NDVI for April (1984-2020)

0 - 1

float32

nan

stddev_may

Standard Deviation of NDVI for May (1984-2020)

0 - 1

float32

nan

stddev_jun

Standard Deviation of NDVI for June (1984-2020)

0 - 1

float32

nan

stddev_jul

Standard Deviation of NDVI for July (1984-2020)

0 - 1

float32

nan

stddev_aug

Standard Deviation of NDVI for August (1984-2020)

0 - 1

float32

nan

stddev_sep

Standard Deviation of NDVI for September (1984-2020)

0 - 1

float32

nan

stddev_oct

Standard Deviation of NDVI for October (1984-2020)

0 - 1

float32

nan

stddev_nov

Standard Deviation of NDVI for November (1984-2020)

0 - 1

float32

nan

stddev_dec

Standard Deviation of NDVI for December (1984-2020)

0 - 1

float32

nan

count_jan

Number of clear obs in January (1984-2020)

0 - ~160

int16

-999

count_feb

Number of clear obs in February (1984-2020)

0 - ~160

int16

-999

count_mar

Number of clear obs in March (1984-2020)

0 - ~160

int16

-999

count_apr

Number of clear obs in April (1984-2020)

0 - ~160

int16

-999

count_may

Number of clear obs in May (1984-2020)

0 - ~160

int16

-999

count_jun

Number of clear obs in June (1984-2020)

0 - ~160

int16

-999

count_jul

Number of clear obs in July (1984-2020)

0 - ~160

int16

-999

count_aug

Number of clear obs in August (1984-2020)

0 - ~160

int16

-999

count_sep

Number of clear obs in September (1984-2020)

0 - ~160

int16

-999

count_oct

Number of clear obs in October (1984-2020)

0 - ~160

int16

-999

count_nov

Number of clear obs in November (1984-2020)

0 - ~160

int16

-999

count_dec

Number of clear obs in December (1984-2020)

0 - ~160

int16

-999

The specific temporal and geographic extents for the product can be explored as an interactive map on the Metadata Explorer. Data is available for the region shaded in blue.

Figure 1: The dataset coverage for the NDVI Climatology product

376fc950e73f46c8b1f544841d5c01d2

Media and example images

Image 1: Animations of the NDVI Climatology layers. Left: Mean NDVI; Right: Std. Dev. NDVI

9e15bacaa1b94c6b944ab51811958fe0

License

CC BY Attribution 4.0 International License

Data Access

Amazon Web Services S3

The NDVI Climatology service is available in AWS S3 thanks to the Public Dataset Program.

Table 3: AWS data access details

AWS S3 details

Bucket ARN

arn:aws:s3:::deafrica-services

Product name

ndvi_climatology_ls

The bucket is located in the region af-south-1 (Cape Town). Additional region specifications can be applied as follows:

aws s3 ls --region=af-south-1 s3://deafrica-services/ndvi_climatology_ls/

The file paths follow the format:

<productname>/<version>/<x>/<y>/<timeperiod>/<x><y>_<timeperiod>_<band>.<extension>

Table 4: AWS file path convention

File path element

Description

Example

productname

Product name

ndvi_climatology_ls

version

Product version

1.0.0

x

Tile number in the x direction.

x17

y

Tile number in the y direction.

y156

timeperiod

Year of data collection followed by period of time and time unit in the format YYYY--P<period><unit>. Time units are designated by capitalised letters, Y for years and M for months.

1984--P37Y

x_y_timeperiod_band.extension

File name. Combines x, y, timeperiod with band, using Band IDs, and file extensions. For most tiles, the file extension is .tif.

Open Data Cube (ODC)

The NDVI Climatology datasets can be accessed through the Digital Earth Africa ODC API, which is available through the Digital Earth Africa Sandbox.

ODC product name: ndvi_climatology_ls

For examples on how to use the ODC API, see the DE Africa example notebook repository.

OGC Web Services (OWS)

This service is available through DE Africa’s OWS.

Table 5: OWS data access details.

OWS details

Name

DE Africa Services

Web Map Services (WMS) URL

https://ows.digitalearth.africa/wms?version=1.3.0

Web Coverage Service (WCS) URL

https://ows.digitalearth.africa/wcs?version=2.1.0

Layer names

ndvi_climatology_ls

Digital Earth Africa OWS details can be found at https://ows.digitalearth.africa/.

For instructions on how to connect to OWS, see this tutorial.

Technical information

Landsat Harmonization method

Landsat satellites have the longest temporal record of Earth Observation data, covering nearly four decades and including landsat 5, 7 and 8 (and now Landsat 9). Ideally, the Landsat data record should be consistent over the Landsat sensor series, but Landsat-8 Operational Land Imager (OLI) has improved calibration over the previous Landsat-7 Enhanced Thematic Mapper (ETM +), and Landsat 5’s ETM. The different qualities of the sensors can result in discontinuities when concatenating NDVI time-series across different sensors.

To harmonize the different generations of Landsat sensors, 10,000 60 x 60m polygons were randomly disributed across the continent. At each sample location, a four year time series (2013-2016) of cloud-masked Landsat 7 and Landsat 8 images were loaded, and coincident Landsat 7 and Landsat 8 NDVI observations were retained. Coincident is defined here as acquisitions taken within two days of each other. In total, 35,189 coincident pixel obervations were collected (all pixels within the 60 x 60m polygons were kept).

Figure 1: The locations of coincident Landsat 7 and Landsat 8 images used to define the harmonization coefficients in eq 2. Points are coloured by the NDVI value of the Landsat 8 image.

8f1679980ccb494c8670e6bf67dd9311

Coincident samples were used to linearly regress Landsat 8 NDVI against Landsat 7 NDVI, the results of this are shown in Figure 2a as a density scatter plot. The linear relationship (eq 1.) between the two is expressed as (also represented by the red line in figure 2a):

eq.1:  NDVI_LS7 = 0.988 * NDVI_LS8 -0.015

To harmonize the datasets, Landsat 7 was transformed to better align with Landsat 8 using eq 2. Figure 2b plots the results after harmonization.

eq.2:  NDVI_LS7_harmonized = (NDVI_LS7 + 0.015) / 0.988

Figure 2: a) Density scatter plots between Landsat 7 NDVI and Landsat 8 NDVI before harmonization. Red line shows the linear relationship, and the blackline shows the 1:1 line. b) Density scatter plots between Landsat 7 NDVI and Landsat 8 NDVI *after* harmonization. The red line is directly on top of the 1:1 line

162d4e8be71a4f498862dc7ab9b280bb

We can visualise how the harmonization improves consistency between the sensors by plotting a time-series of NDVI before and after harmonization (figure 3).

Figure 3: The impact of Landsat 7 harmonization on an NDVI timeseries. Time-series is from an irrigated cropping region in Egypt.

a396fadf7bae4a51bfe3dd920bdba8da


NDVI Climatology Algorithm

The procedure for calculating the NDVI climatologies is listed step-by-step below. The code for reproducing the NDVI climatology product is publicly availabe on github:

  1. Load a concatenated Landsat 5 and Landsat 7 time series

    • Mask pixels in LS5 and LS7 where:

      • cloud, and cloud shadows occur, and apply morphological operators opening + dilation (improves the cloud mask)

      • Surface reflectance values > 65,455 or < 7272.72

      • Blue band surface reflectance is > 20,910 (removes some cloud missed by Fmask)

  2. Load landsat 8 timeseries

    • Mask pixels in LS8 where:

      • cloud, cloud shadows, and cirrus clouds occur, and apply morphological operators opening + dilation (improves the cloud mask)

      • Surface reflectance values > 65,455 or < 7272.72

      • Blue band surface reflectance is > 20,910 (removes some cloud missed by fmask)

  3. Calculate NDVI for each sensor

  4. Adjust Landsat 5-7 using eq. 2.

  5. Merge Landsat 5-7 time series with the Landsat 8 time-series

  6. Set as nodata pixels where NDVI is not between 0 and 1

  7. Apply a rolling mean temporal filter (window size = 3) to lesson the influence of noise and missed cloud in the time series

  8. Calculate monthly mean and standard deviation NDVI climatologies.