Soil vs Vegetation • SWIR & RED ratio index

NDSII – Normalized Difference Soil Index II

NDSII is a soil–vegetation spectral index that compares SWIR and RED reflectance to enhance bare soil and dry surfaces, while suppressing dense green vegetation. It is useful in semi-arid landscapes and agricultural monitoring.


NDSII overview concept & use-cases

What does NDSII measure?

NDSII exploits the spectral contrast between the short-wave infrared (SWIR) band and the red band. Bare soil and dry surfaces usually show strong SWIR and red reflectance, while healthy vegetation absorbs in red and has a different spectral shape.

  • Separating bare soil from vegetation in agricultural fields.
  • Identifying dry, exposed soil patches in semi-arid regions.
  • Supporting land degradation and soil erosion studies.
  • Providing an additional soil-related feature in ML models with NDVI/SAVI.

Note: different papers may use slightly different band combinations under the name "NDSI" or "NDSII". The expression below is an example formulation; adapt it to match your preferred reference.

NDSII formula (example)

General normalized difference form
NDSII = (SWIR - RED) / (SWIR + RED)

Higher NDSII values tend to correspond to brighter, SWIR–dominated soil surfaces, while lower or negative values are more typical of vegetation or darker targets.

Landsat 8 / 9 (OLI)
NDSII = (B6 - B4) / (B6 + B4)

B6 = SWIR1, B4 = RED.

Sentinel-2 MSI
NDSII = (B11 - B4) / (B11 + B4)

B11=SWIR, B4=RED (10 m).

You may adjust the SWIR band (e.g. B11 vs B12 for Sentinel-2, or SWIR1 vs SWIR2 for Landsat) depending on which best matches your soil / lithology signature.

Required bands

Sensors & spectral bands

Sensor RED SWIR
Landsat 8 / 9 OLI B4 B6
Sentinel-2 MSI B4 B11

Tip: always use surface-reflectance products (SR) and apply any scale factors prior to computing NDSII.

Typical behaviour

Land-cover type NDSII trend
Bright bare soil / dry fields Higher, positive NDSII
Mixed soil–vegetation Intermediate values
Dense green vegetation Lower or negative NDSII
Water / shadow Very low / noisy NDSII

Numeric ranges depend on sensor, soil type, moisture, and illumination. Always validate with field data or high-resolution imagery.

Using NDSII in Google Earth Engine

  1. Select a surface-reflectance collection (Sentinel-2 SR or Landsat 8/9 SR).
  2. Filter by date, cloud cover, and region of interest (ROI).
  3. Compute NDSII as (SWIR - RED) / (SWIR + RED).
  4. Visualize the index and export it if needed.
// NDSII – Normalized Difference Soil Index II example (Sentinel-2) in Google Earth Engine
var roi = /* your geometry here */;

var s2 = ee.ImageCollection('COPERNICUS/S2_SR')
  .filterBounds(roi)
  .filterDate('2023-01-01', '2023-12-31')
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
  .median();

// Select bands (Sentinel-2 SR already scaled to reflectance)
var red  = s2.select('B4');
var swir = s2.select('B11');

// Compute NDSII = (SWIR - RED) / (SWIR + RED)
var ndsii = swir.subtract(red)
  .divide(swir.add(red))
  .rename('NDSII');

// Visualisation
Map.centerObject(roi, 10);
Map.addLayer(ndsii, {
  min: -0.5, max: 0.5,
  palette: ['#0b1120','#1d4ed8','#22c55e','#eab308','#f97316','#f97373']
}, 'NDSII - Soil Index II');

// Optional export
Export.image.toDrive({
  image: ndsii,
  description: 'NDSII_Sentinel2_example',
  region: roi,
  scale: 10,
  maxPixels: 1e13
});

Important: if your reference paper defines NDSII with a different band combination (e.g. SWIR2 instead of SWIR1, or with NIR), simply update the expression while keeping this HTML layout as a template.

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