Indices & Variables Reference#

Complete catalog of 88 variables supported by ndvi2gif v1.0.0, organized by category and satellite platform.

Overview by Category#

Category

Count

Platforms

Description

Optical Vegetation

40

S2, S3, Landsat, MODIS

NDVI, EVI, SAVI, and derivatives

SAR Vegetation

7

Sentinel-1

Radar-based vegetation indices

ERA5 Climate

40

ERA5-Land

Temperature, precipitation, soil, radiation

CHIRPS

1

CHIRPS

High-resolution precipitation

Total

88

7 platforms

Complete variable library


Optical Vegetation Indices (40)#

Compatible with: Sentinel-2, Sentinel-3, Landsat 4-9, MODIS

Core Vegetation Indices (7)#

NDVI - Normalized Difference Vegetation Index#

index='ndvi'

Formula: (NIR - Red) / (NIR + Red)

Range: -1 to +1

Description: Most widely used vegetation index. Measures greenness and photosynthetic activity.

Interpretation:

  • < 0: Water, clouds, snow

  • 0 - 0.2: Bare soil, rock

  • 0.2 - 0.5: Sparse vegetation, grassland

  • 0.5 - 0.8: Dense vegetation, crops

  • 0.8: Very dense vegetation, forests

Reference: Rouse et al. (1974)


EVI - Enhanced Vegetation Index#

index='evi'

Formula: 2.5 * (NIR - Red) / (NIR + 6*Red - 7.5*Blue + 1)

Range: -1 to +1

Description: Improved vegetation index with atmospheric and soil corrections. Less sensitive to atmospheric conditions than NDVI.

Advantages: Better in high biomass areas, reduced soil brightness influence

Reference: Huete et al. (2002)


SAVI - Soil Adjusted Vegetation Index#

index='savi'

Formula: ((NIR - Red) / (NIR + Red + L)) * (1 + L) where L=0.5

Range: -1 to +1

Description: Minimizes soil brightness influence in areas with sparse vegetation.

Use Cases: Arid/semi-arid regions, early crop growth

Reference: Huete (1988)


GNDVI - Green Normalized Difference Vegetation Index#

index='gndvi'

Formula: (NIR - Green) / (NIR + Green)

Range: -1 to +1

Description: More sensitive to chlorophyll content than NDVI. Better for later growth stages.

Use Cases: Nitrogen assessment, crop health monitoring


NDMI - Normalized Difference Moisture Index#

index='ndmi'

Formula: (NIR - SWIR1) / (NIR + SWIR1)

Range: -1 to +1

Description: Sensitive to vegetation water content. Useful for drought monitoring.

Use Cases: Irrigation management, drought stress detection, fire risk


EVI2 - Two-Band Enhanced Vegetation Index#

index='evi2'

Formula: 2.5 * (NIR - Red) / (NIR + 2.4*Red + 1)

Description: EVI without blue band requirement. Compatible with more sensors.

Advantages: Works with Landsat TM/ETM+ without blue band


ARVI - Atmospherically Resistant Vegetation Index#

index='arvi'

Formula: (NIR - (2*Red - Blue)) / (NIR + (2*Red - Blue))

Description: Reduces atmospheric effects (aerosols, haze) using blue band.

Use Cases: Areas with high atmospheric contamination

Reference: Kaufman & Tanré (1992)


Water Indices (5)#

NDWI - Normalized Difference Water Index#

index='ndwi'

Formula: (Green - NIR) / (Green + NIR)

Range: -1 to +1

Description: Delineates open water features. Opposite of NDVI pattern.

Interpretation:

  • 0.3: Water bodies

  • 0 - 0.3: Mixed pixels

  • < 0: Land

Reference: McFeeters (1996)


MNDWI - Modified Normalized Difference Water Index#

index='mndwi'

Formula: (Green - SWIR1) / (Green + SWIR1)

Description: Improved water index that suppresses built-up areas better than NDWI.

Advantages: Better separation of water from urban areas

Reference: Xu (2006)


NDMI (Water Content)#

index='ndmi'

See Moisture section above - dual use for vegetation water content and water body detection


LSWI - Land Surface Water Index#

index='lswi'

Formula: (NIR - SWIR1) / (NIR + SWIR1)

Description: Detects surface water and soil moisture. Similar to NDMI.


AWEInsh - Automated Water Extraction Index (no shadow)#

index='aweinsh'

Formula: 4 * (Green - SWIR1) - (0.25*NIR + 2.75*SWIR2)

Description: Eliminates shadow pixels that contaminate water extraction.

Advantages: Robust in urban and mountainous areas

Reference: Feyisa et al. (2014)


Advanced Vegetation Indices (10)#

OSAVI - Optimized Soil Adjusted Vegetation Index#

index='osavi'

Formula: (NIR - Red) / (NIR + Red + 0.16)

Description: Optimized L parameter for SAVI. Works across wider vegetation range.


MSAVI - Modified Soil Adjusted Vegetation Index#

index='msavi'

Formula: (2*NIR + 1 - sqrt((2*NIR+1)^2 - 8*(NIR-Red))) / 2

Description: Self-adjusting L parameter based on NIR-Red relationship.


VARI - Visible Atmospherically Resistant Index#

index='vari'

Formula: (Green - Red) / (Green + Red - Blue)

Description: Uses only visible bands. Good for RGB sensors without NIR.


GCI - Green Chlorophyll Index#

index='gci'

Formula: (NIR / Green) - 1

Description: Sensitive to leaf chlorophyll content variations.

Use Cases: Nitrogen status, crop health assessment


SIPI - Structure Insensitive Pigment Index#

index='sipi'

Formula: (NIR - Blue) / (NIR - Red)

Description: Ratio of carotenoids to chlorophyll. Stress indicator.


NBR - Normalized Burn Ratio#

index='nbr'

Formula: (NIR - SWIR2) / (NIR + SWIR2)

Description: Highlights burned areas and fire severity.

Use Cases: Post-fire assessment, burn scar mapping


BAIS2 - Burned Area Index for Sentinel-2#

index='bais2'

Formula: Complex formula using Red, NIR, SWIR1, SWIR2

Description: Optimized for Sentinel-2 burn severity mapping.

Platform: Sentinel-2 only (requires specific bands)


BSI - Bare Soil Index#

index='bsi'

Formula: ((SWIR1 + Red) - (NIR + Blue)) / ((SWIR1 + Red) + (NIR + Blue))

Description: Identifies bare soil and unvegetated areas.


NDSI - Normalized Difference Snow Index#

index='ndsi'

Formula: (Green - SWIR1) / (Green + SWIR1)

Description: Identifies snow cover vs clouds.

Interpretation: > 0.4 typically indicates snow


CIG - Chlorophyll Index Green#

index='cig'

Formula: (NIR / Green) - 1

Description: Chlorophyll content using green band. Similar to GCI.


Sentinel-2 Exclusive Indices (Red Edge) (12)#

These indices require Sentinel-2’s red edge bands (B5, B6, B7).

NDRE - Normalized Difference Red Edge#

index='ndre'  # Sentinel-2 only

Formula: (NIR - RedEdge1) / (NIR + RedEdge1)

Description: Uses red edge for detailed vegetation assessment.

Advantages: More sensitive to chlorophyll variations than NDVI


MCARI - Modified Chlorophyll Absorption Ratio Index#

index='mcari'  # Sentinel-2 only

Formula: ((RedEdge1 - Red) - 0.2*(RedEdge1 - Green)) * (RedEdge1 / Red)

Description: Chlorophyll content with reduced soil/atmospheric effects.


CIre - Chlorophyll Index Red Edge#

index='cire'  # Sentinel-2 only

Formula: (NIR / RedEdge1) - 1

Description: Chlorophyll-sensitive index using red edge.


IRECI - Inverted Red Edge Chlorophyll Index#

index='ireci'  # Sentinel-2 only

Formula: (RedEdge3 - Red) / (RedEdge2 / RedEdge1)

Description: ESA’s chlorophyll index for Sentinel-2.


RECI - Red Edge Chlorophyll Index#

index='reci'  # Sentinel-2 only

Formula: (NIR / RedEdge1) - 1

Description: Alternative formulation for chlorophyll content.


S2REP - Sentinel-2 Red Edge Position#

index='s2rep'  # Sentinel-2 only

Formula: 705 + 35 * ((((NIR + Red) / 2) - RedEdge1) / (RedEdge2 - RedEdge1))

Description: Estimates position of red edge inflection point (nm).

Use Cases: Nitrogen status, crop health


NDVI_re1, NDVI_re2, NDVI_re3#

index='ndvi_re1'  # (NIR - RedEdge1) / (NIR + RedEdge1)
index='ndvi_re2'  # (NIR - RedEdge2) / (NIR + RedEdge2)
index='ndvi_re3'  # (NIR - RedEdge3) / (NIR + RedEdge3)

Description: NDVI variants using each of the 3 red edge bands.


MTCI - MERIS Terrestrial Chlorophyll Index#

index='mtci'  # Sentinel-2 compatible

Formula: (RedEdge2 - RedEdge1) / (RedEdge1 - Red)

Description: Chlorophyll concentration in dense canopies.


MSAVI_re - Modified SAVI with Red Edge#

index='msavi_re'  # Sentinel-2 only

Description: MSAVI using red edge band instead of red.


PSRI - Plant Senescence Reflectance Index#

index='psri'  # Sentinel-2 only

Formula: (Red - Green) / RedEdge2

Description: Detects plant senescence and maturity stages.


Water Quality Indices (6)#

NDTI - Normalized Difference Turbidity Index#

index='ndti'

Formula: (Red - Green) / (Red + Green)

Description: Estimates water turbidity and suspended sediment.


Chlorophyll-a (Simple Ratio)#

index='chlorophyll'

Formula: (Blue / Green)

Description: Estimates chlorophyll-a concentration in water.

Use Cases: Lake/reservoir monitoring, eutrophication


KIVU - Water Clarity Index#

index='kivu'

Description: Specific index for lake water clarity assessment.


NDCI - Normalized Difference Chlorophyll Index#

index='ndci'

Formula: (RedEdge1 - Red) / (RedEdge1 + Red)

Description: Chlorophyll concentration in turbid waters.

Platform: Sentinel-2 (requires red edge)


Turbidity#

index='turbidity'

Formula: Empirical formula using Red band

Description: Direct turbidity estimation from red reflectance.


Cyanobacteria#

index='cyanobacteria'

Formula: Uses Red and NIR bands

Description: Detects harmful algal blooms (cyanobacteria).


SAR Indices (7)#

Compatible with: Sentinel-1 (VV + VH polarizations)

RVI - Radar Vegetation Index#

sat='S1', index='rvi'

Formula: (4 * VH) / (VV + VH)

Range: 0 to ~4

Description: Most common SAR vegetation index. Sensitive to vegetation structure.

Interpretation:

  • < 0.5: Bare soil, water

  • 0.5 - 1.5: Sparse vegetation

  • 1.5: Dense vegetation


DPSVI - Dual Polarization SAR Vegetation Index#

sat='S1', index='dpsvi'

Formula: VV + VH

Description: Simple combination sensitive to total vegetation biomass.


RFDI - Radar Forest Degradation Index#

sat='S1', index='rfdi'

Formula: (VV - VH) / (VV + VH)

Description: Detects forest degradation and deforestation.


VSDI - Vegetation Scattering Difference Index#

sat='S1', index='vsdi'

Formula: VV - VH

Description: Difference between polarizations. Vegetation structure indicator.


VV - Vertical-Vertical Polarization#

sat='S1', index='vv'

Description: Single VV polarization backscatter. Sensitive to surface roughness.


VH - Vertical-Horizontal Polarization#

sat='S1', index='vh'

Description: Cross-polarization. Sensitive to volume scattering (vegetation canopy).


VV/VH Ratio#

sat='S1', index='vv_vh_ratio'

Formula: VV / VH

Description: Ratio between polarizations. Discriminates land cover types.


ERA5-Land Climate Variables (40)#

Compatible with: ERA5-Land (ECMWF reanalysis, 1950-present)

Temperature Variables (18)#

Core Temperature (Kelvin)#

sat='ERA5', index='temperature_2m'

Units: Kelvin

Description: Air temperature at 2 meters height (daily mean).

Coverage: 1950-present, ~11km resolution


Core Temperature (Celsius) - Auto-converted#

sat='ERA5', index='temperature_2m_celsius'

Units: °C (automatically converted from Kelvin)

Description: Same as above but in Celsius. Recommended for user-friendly output.


Daily Temperature Minimum#

sat='ERA5', index='temperature_2m_min'  # Kelvin
sat='ERA5', index='temperature_2m_min_celsius'  # °C

Description: Daily minimum temperature. Use key='min' for coldest day of period.


Daily Temperature Maximum#

sat='ERA5', index='temperature_2m_max'  # Kelvin
sat='ERA5', index='temperature_2m_max_celsius'  # °C

Description: Daily maximum temperature. Use key='max' for hottest day of period.


Dewpoint Temperature#

sat='ERA5', index='dewpoint_temperature_2m'  # Kelvin
sat='ERA5', index='dewpoint_temperature_2m_celsius'  # °C
sat='ERA5', index='dewpoint_temperature_2m_min'  # Daily min
sat='ERA5', index='dewpoint_temperature_2m_max'  # Daily max

Description: Dewpoint temperature at 2m. Humidity indicator.


Skin Temperature#

sat='ERA5', index='skin_temperature'  # Kelvin
sat='ERA5', index='skin_temperature_celsius'  # °C
sat='ERA5', index='skin_temperature_min'  # Daily min
sat='ERA5', index='skin_temperature_max'  # Daily max

Description: Land surface temperature.


Soil Temperature (Layer 1: 0-7cm)#

sat='ERA5', index='soil_temperature_level_1'  # Kelvin
sat='ERA5', index='soil_temperature_level_1_celsius'  # °C
sat='ERA5', index='soil_temperature_level_1_min'  # Daily min
sat='ERA5', index='soil_temperature_level_1_max'  # Daily max

Description: Soil temperature at 0-7cm depth.


Precipitation & Water Balance (10)#

Total Precipitation#

sat='ERA5', index='total_precipitation_sum'  # meters
sat='ERA5', index='total_precipitation_sum_lm2'  # L/m² (mm)

Units: meters or L/m² (1 L/m² = 1 mm)

Description: Daily accumulated precipitation (rain + snow).

Recommended: Use key='sum' for monthly/seasonal totals.


Total Evaporation#

sat='ERA5', index='total_evaporation_sum'  # meters
sat='ERA5', index='total_evaporation_sum_lm2'  # L/m²

Description: Daily evaporation from surface (negative values = upward flux).

Note: Negative in original data; absolute value recommended.


Potential Evaporation#

sat='ERA5', index='potential_evaporation_sum'  # meters
sat='ERA5', index='potential_evaporation_sum_lm2'  # L/m²

Description: Potential evapotranspiration (atmospheric demand).


Total Runoff#

sat='ERA5', index='runoff_sum'  # meters
sat='ERA5', index='runoff_sum_lm2'  # L/m²

Description: Total runoff (surface + subsurface).


Surface Runoff#

sat='ERA5', index='surface_runoff_sum'  # meters
sat='ERA5', index='surface_runoff_sum_lm2'  # L/m²

Description: Surface runoff only (excludes subsurface drainage).


Snowfall#

sat='ERA5', index='snowfall_sum'  # meters water equivalent
sat='ERA5', index='snowfall_sum_lm2'  # L/m²

Description: Daily snowfall in water equivalent.


Soil Moisture (4 layers)#

sat='ERA5', index='volumetric_soil_water_layer_1'  # 0-7 cm
sat='ERA5', index='volumetric_soil_water_layer_2'  # 7-28 cm
sat='ERA5', index='volumetric_soil_water_layer_3'  # 28-100 cm
sat='ERA5', index='volumetric_soil_water_layer_4'  # 100-289 cm

Units: m³/m³ (volumetric water content)

Range: 0-1

Description: Soil moisture at different depths.

Use Cases:

  • Layer 1: Surface moisture, infiltration

  • Layer 3: Root zone (crops)

  • Layer 4: Deep groundwater interaction


Radiation (3)#

Surface Solar Radiation Downwards#

sat='ERA5', index='surface_solar_radiation_downwards_sum'

Units: J/m²

Description: Solar energy reaching surface. Use key='sum'.


Surface Net Solar Radiation#

sat='ERA5', index='surface_net_solar_radiation_sum'

Units: J/m²

Description: Net solar radiation (incoming - outgoing).


Surface Latent Heat Flux#

sat='ERA5', index='surface_latent_heat_flux_sum'

Units: J/m²

Description: Energy used for evaporation.


Wind (2)#

sat='ERA5', index='u_component_of_wind_10m'  # East-West
sat='ERA5', index='v_component_of_wind_10m'  # North-South

Units: m/s

Description: Wind velocity components at 10m height.

Calculate wind speed: sqrt(u² + v²)


Pressure (1)#

sat='ERA5', index='surface_pressure'

Units: Pa

Description: Atmospheric pressure at surface.


Snow (2)#

Snow Depth (Water Equivalent)#

sat='ERA5', index='snow_depth_water_equivalent'

Units: meters of water

Description: Snow pack water content.


Snowfall (Daily)#

sat='ERA5', index='snowfall_sum'

Units: meters of water

Description: Daily snowfall accumulation.


CHIRPS Precipitation (1)#

Compatible with: CHIRPS (1981-present, ~5.5km, 50°S-50°N)

Precipitation#

sat='CHIRPS', index='precipitation'

Units: mm/day

Description: Satellite + station blended precipitation.

Recommended: Use key='sum' for monthly/seasonal totals.

Advantages: Higher resolution (~5.5km) and station-calibrated vs ERA5 precipitation.


Usage Examples#

Optical Vegetation#

from ndvi2gif import NdviSeasonality

# Basic NDVI
ndvi = NdviSeasonality(roi=roi, sat='S2', index='ndvi')

# Advanced Sentinel-2 chlorophyll
chlorophyll = NdviSeasonality(roi=roi, sat='S2', index='ndre')

# Water bodies
water = NdviSeasonality(roi=roi, sat='S2', index='mndwi')

SAR Vegetation#

# All-weather vegetation monitoring
sar_veg = NdviSeasonality(
    roi=roi,
    sat='S1',
    index='rvi',
    key='median'  # Reduces speckle
)

Climate Variables#

# Temperature analysis (Celsius)
temp = NdviSeasonality(
    roi=roi,
    sat='ERA5',
    index='temperature_2m_celsius',
    start_year=1980,
    end_year=2023,
    key='mean'
)

# Precipitation totals
precip = NdviSeasonality(
    roi=roi,
    sat='ERA5',
    index='total_precipitation_sum_lm2',
    key='sum'  # Monthly/seasonal totals
)

# High-resolution precipitation
precip_chirps = NdviSeasonality(
    roi=roi,
    sat='CHIRPS',
    index='precipitation',
    key='sum'
)

# Soil moisture (root zone)
soil = NdviSeasonality(
    roi=roi,
    sat='ERA5',
    index='volumetric_soil_water_layer_3',  # 28-100cm
    key='mean'
)

Platform Compatibility Matrix#

Index Type

S2

S3

Landsat

MODIS

S1

ERA5

CHIRPS

Optical (basic)

Red Edge

SAR

Climate


References#

Vegetation Indices:

  • Rouse et al. (1974) - NDVI

  • Huete et al. (2002) - EVI

  • McFeeters (1996) - NDWI

  • Xu (2006) - MNDWI

  • Feyisa et al. (2014) - AWEInsh

Climate Datasets:

  • Muñoz-Sabater, J. (2019) - ERA5-Land [DOI:10.24381/cds.e2161bac]

  • Funk et al. (2015) - CHIRPS [DOI:10.1038/sdata.2015.66]


See Also#