Thermal modelling • Land Surface Emissivity

LSE – Land Surface Emissivity (NDVI-based method)

LSE is a key parameter for converting top-of-atmosphere or brightness temperature into land surface temperature (LST). Here, LSE is estimated from NDVI using a simple NDVI-threshold / fractional vegetation cover approach.


LSE overview concept & use-cases

What does LSE represent?

Land Surface Emissivity (LSE) describes how efficiently the land surface emits thermal radiation compared to a black body. Different materials (soil, vegetation, water, urban) have slightly different emissivities, which strongly affect LST retrieval from thermal infrared bands.

  • Required input for single-channel and split-window LST algorithms.
  • Helps distinguish surface types in thermal imagery.
  • Improves accuracy of energy-balance and evapotranspiration models.
  • Often derived from NDVI (fractional vegetation cover) at medium resolution.

Note: many LSE schemes exist (NDVI-based, classification-based, spectral libraries). The formulation below is a common NDVI-based example.

NDVI-based LSE formula (example)

Fractional vegetation cover (Pv)
Pv = ((NDVI − NDVImin) / (NDVImax − NDVImin))²

Pv is the fractional vegetation cover, estimated from NDVI. NDVImin and NDVImax come from bare soil and full vegetation NDVI values in your scene / region.

LSE from Pv
ε = εv · Pv + εs · (1 − Pv) + C

where εv is vegetation emissivity (≈ 0.99), εs is bare soil emissivity (≈ 0.97), and C is a small cavity term (≈ 0.005).

Values above (εv, εs, C) are typical literature defaults and can be adjusted for specific surfaces or sensors.

Required inputs

Spectral components

Component Source
NDVI RED & NIR bands (Landsat, Sentinel-2, etc.)
NDVImin, NDVImax Estimated from image / ROI (bare soil & dense vegetation)
εv Vegetation emissivity (e.g. 0.99)
εs Soil emissivity (e.g. 0.97)
C Small cavity term (e.g. 0.005)

Tip: NDVI should be based on surface reflectance products, with clouds and water properly masked.

Interpreting LSE

Surface type Typical ε range
Dense vegetation ≈ 0.985 – 0.99
Bare soil ≈ 0.96 – 0.98
Water ≈ 0.98 – 0.99
Urban / built-up ≈ 0.92 – 0.97 (material-dependent)

These ranges vary with wavelength, sensor band, and material properties. Use sensor-specific emissivity libraries when high accuracy is needed.

Estimating LSE in Google Earth Engine (NDVI-based, Landsat 8/9)

  1. Compute NDVI from RED & NIR reflectance.
  2. Derive NDVImin and NDVImax over the ROI (bare soil / full vegetation).
  3. Compute fractional vegetation cover Pv.
  4. Compute LSE = εv·Pv + εs·(1−Pv) + C.
// LSE – Land Surface Emissivity example (NDVI-based, Landsat 8/9) in Google Earth Engine
var roi = /* your geometry here */;

// Landsat 8/9 L2 collection (surface reflectance)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
  .filterBounds(roi)
  .filterDate('2023-04-01', '2023-09-30')
  .filter(ee.Filter.lt('CLOUD_COVER', 20));

// Scale optical bands
function scaleL8(img) {
  var optical = img.select(['SR_B.']).multiply(0.0000275).add(-0.2);
  return img.addBands(optical, null, true);
}

l8 = l8.map(scaleL8);

// Median composite
var img = l8.median();

// NDVI = (NIR - RED) / (NIR + RED)
var nir  = img.select('SR_B5');
var red  = img.select('SR_B4');
var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI');

// Derive NDVI_min and NDVI_max over ROI (for vegetated land)
// You may use masks to restrict to non-water pixels if needed.
var ndviStats = ndvi.reduceRegion({
  reducer: ee.Reducer.minMax(),
  geometry: roi,
  scale: 30,
  maxPixels: 1e7
});

var ndviMin = ee.Number(ndviStats.get('NDVI_min'));
var ndviMax = ee.Number(ndviStats.get('NDVI_max'));

// Fractional vegetation cover Pv
var pv = ndvi.subtract(ndviMin)
  .divide(ndviMax.subtract(ndviMin).add(1e-6))
  .clamp(0, 1)
  .pow(2)
  .rename('Pv');

// Emissivity parameters
var ev = 0.99;   // vegetation emissivity
var es = 0.97;   // soil emissivity
var C  = 0.005;  // cavity term

// LSE = ev * Pv + es * (1 - Pv) + C
var lse = pv.multiply(ev)
  .add(pv.multiply(-1).add(1).multiply(es))
  .add(C)
  .rename('LSE');

// Visualisation
Map.centerObject(roi, 8);
Map.addLayer(lse, {
  min: 0.95, max: 1.02,
  palette: ['#0b1120','#1d4ed8','#22c55e','#eab308','#f97316']
}, 'LSE - Land Surface Emissivity');

// Optional export
Export.image.toDrive({
  image: lse,
  description: 'LSE_Landsat8_example',
  region: roi,
  scale: 30,
  maxPixels: 1e13
});

Important: this is a generic NDVI-based LSE example. If you use a specific emissivity scheme (e.g. classification-based, TES, multi-band), replace the equations while keeping this HTML layout as part of your indices / parameters library.

Part of the Start4IT Remote Sensing Indices Library. More indices & ready-to-use code: www.start4it.com/rs-indices