Overview
Monitoring vegetation health and water use is critical for managing agriculture, ecosystems, and groundwater. With open satellite imagery and cloud platforms like Google Earth Engine (GEE), we can estimate key biophysical parameters at scale: EVI, LAI, SCF, ET, T (transpiration) and E (evaporation). Below is a concise workflow, equations, interpretation, figure placeholders and the full GEE script to reproduce the analysis.
1. Enhanced Vegetation Index (EVI)
EVI measures canopy greenness while minimizing soil and atmospheric effects — better than NDVI in dense vegetation.
Formula (Landsat 8/9):
EVI = 2.5 * ( (B5 - B4) / (B5 + 6*B4 - 7.5*B2 + 1) )
Interpretation:
- 0.5–0.8: dense, healthy vegetation
- <0.2: sparse or stressed vegetation
2. Leaf Area Index (LAI)
LAI is total leaf area per ground area (m²/m²) and indicates canopy density. From EVI (Liu et al., 2012):
LAI = 3.618 * EVI - 0.118
Bound LAI (e.g., set negatives to 0, cap to ~6). Interpretation: >3 dense canopy; <1 sparse vegetation.
3. Surface Cover Fraction (SCF)
SCF is the proportion of ground covered by vegetation. Use the empirical formula:
SCF = 1 - exp(-alpha * LAI) /* alpha ≈ 0.463 */
SCF close to 1 → full cover; close to 0 → bare.
4. Evapotranspiration (ET)
ET is total water loss from soil + vegetation (E + T). ET can be estimated from vegetation indices empirically or via model datasets (MOD16, SSEBop). In simple proxy workflows ET can be scaled from EVI or derived using meteorological inputs.
Interpretation: High ET → active growth and water use; Low ET → dry or non-vegetated areas.
5. Transpiration (T) & 6. Evaporation (E)
Partition ET into T and E using SCF:
T = ET * SCF E = ET * (1 - SCF)
T indicates plant water use (important for irrigation planning). E represents soil/water surface loss.
Figures
Workflow in Google Earth Engine (short)
- Load Landsat 8/9 collection for time period and ROI.
- Mask clouds, compute median composites or multi-temporal stats.
- Compute EVI, derive LAI, compute SCF.
- Estimate ET (proxy or model), partition to T and E using SCF.
- Export GeoTIFFs for each layer.
Full GEE Script (Landsat 8 TOA → EVI, LAI, SCF, ET, T, E)
// Define ROI
Map.centerObject(roi, 8);
// Define time period
var startDate = '2015-01-01';
var endDate = '2024-12-31';
// Load Landsat 8 TOA (Collection 2)
var landsat = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate(startDate, endDate)
.filterBounds(roi)
.filter(ee.Filter.lt('CLOUD_COVER', 10));
// Function to calculate indices
var addIndices = function(image) {
var nir = image.select('B5');
var red = image.select('B4');
var blue = image.select('B2');
// Compute EVI
var evi = image.expression(
'2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))',
{'NIR': nir, 'RED': red, 'BLUE': blue}
).rename('EVI');
// Mask outliers
evi = evi.updateMask(evi.gt(-1).and(evi.lt(1)));
// EVI → LAI (Liu et al., 2012)
var lai = evi.expression('3.618 * EVI - 0.118', {'EVI': evi}).rename('LAI');
lai = lai.where(lai.lt(0), 0).where(lai.gt(6), 6);
// Surface Cover Fraction (SCF) after Šimůnek et al. (2009)
var alpha_i = 0.463;
var scf = lai.expression('1 - exp(-alpha * LAI)', {
'alpha': alpha_i, 'LAI': lai
}).rename('SCF');
// ET proxy (example, scale EVI)
var et = evi.multiply(5).rename('ET');
et = et.where(et.lt(0), 0);
// Partition ET
var t = et.multiply(scf).rename('T');
var e = et.multiply(ee.Image(1).subtract(scf)).rename('E');
return image.addBands([evi, lai, scf, et, t, e]);
};
// Apply function
var processed = landsat.map(addIndices);
print('Processed Collection:', processed.limit(3));
// Median composites
var evi_median = processed.select('EVI').median().clip(roi);
var lai_median = processed.select('LAI').median().clip(roi);
var scf_median = processed.select('SCF').median().clip(roi);
var et_median = processed.select('ET').median().clip(roi);
var t_median = processed.select('T').median().clip(roi);
var e_median = processed.select('E').median().clip(roi);
// Visualization settings
var visEVI = {min: 0, max: 1, palette: ['white','green']};
var visLAI = {min: 0, max: 6, palette: ['yellow','green','darkgreen']};
var visSCF = {min: 0, max: 1, palette: ['white','blue']};
var visET = {min: 0, max: 5, palette: ['white','orange','red']};
// Add layers to Map (if using Code Editor)
Map.addLayer(evi_median, visEVI, 'EVI Median');
Map.addLayer(lai_median, visLAI, 'LAI Median');
Map.addLayer(scf_median, visSCF, 'SCF Median');
Map.addLayer(et_median, visET, 'ET Median');
Map.addLayer(t_median, visET, 'Transpiration (T)');
Map.addLayer(e_median, visET, 'Evaporation (E)');
// === EXPORTS ===
var exports = [
{img: evi_median, name: 'EVI_Median_LS8'},
{img: lai_median, name: 'LAI_Median_LS8'},
{img: scf_median, name: 'SCF_Median_LS8'},
{img: et_median, name: 'ET_Median_LS8'},
{img: t_median, name: 'Transpiration_T_Median_LS8'},
{img: e_median, name: 'Evaporation_E_Median_LS8'}
];
exports.forEach(function(exp) {
Export.image.toDrive({
image: exp.img,
description: exp.name,
folder: 'GEE_Exports',
region: roi,
scale: 30,
crs: 'EPSG:4326',
fileFormat: 'GeoTIFF',
maxPixels: 1e13
});
});
Why these parameters matter
| Parameter | Key Insight | Application |
| EVI | Vegetation greenness | Crop monitoring |
| LAI | Leaf density | Transpiration estimation |
| SCF | Vegetation cover fraction | ET partitioning |
| ET | Total water loss | Water budget & drought assessment |
| T | Plant water use | Irrigation planning |
| E | Soil/surface evaporation | Surface water loss mapping |
Final thoughts
Combining EVI, LAI, SCF, ET, T and E provides a scalable, data-driven insight into vegetation–water interactions. For rigorous groundwater stress assessment, integrate these products with in-situ groundwater level data and meteorological forcing.