Normalized Shortwave Infrared Difference Soil-Moisture for soil applications

When to use

  • Soil mapping in agricultural and arid environments
  • Salinity monitoring in irrigated areas
  • Erosion hazard assessment on bare ground
  • Organic matter and fertility surveys
  • Soil moisture inference (combined with other indices)

Limitations

  • Vegetation cover blocks the soil signal — most reliable on bare or sparse ground
  • Surface roughness and tilling state affect reflectance
  • Soil moisture varies daily and biases brightness measurements
  • Cannot directly measure subsurface properties
  • Mineral composition variability affects index calibration across regions

General Formula

S1 1550-1750 nm
S2 2080-2350 nm

Sensor-Specific Formulas

Most-used sensors — click to show code below

SensorProviderFormulaBand Mapping
USGS/NASA(B6 - B7)/(B6 + B7)S1→B6, S2→B7
ESA(B11 - B12)/(B11 + B12)S1→B11, S2→B12
MAXAR(SWIR3 - SWIR6)/(SWIR3 + SWIR6)S1→SWIR3, S2→SWIR6

Spectral Band Visualization — Landsat 8/9

Code Examples

Adapted for Landsat 8/9 bands —

nsds_landsat-8-9.py

Frequently Asked Questions

What is the NSDS (Normalized Shortwave Infrared Difference Soil-Moisture) and when should I use it?

Normalized Shortwave Infrared Difference Soil-Moisture for soil applications Soil indices characterise surface properties including brightness, moisture content, organic matter, and salinity. They work best on bare or sparsely vegetated ground where the soil spectral signal is not obscured. NSDS is particularly suited for soil. The general formula is (S1 - S2)/(S1 + S2), which requires S1 and S2 spectral bands.

Which satellite sensors can I use to calculate NSDS?

NSDS is supported by 3 satellite sensors in our database, including Landsat 8/9, Sentinel-2, WorldView 3. Each sensor uses different band designations — for example, Landsat 8/9 uses the formula (B6 - B7)/(B6 + B7), while Sentinel-2 uses (B11 - B12)/(B11 + B12). Select a sensor above to see its specific band mapping.

What spectral bands does NSDS require and why?

NSDS requires S1 (1550-1750 nm), S2 (2080-2350 nm). These wavelength regions target the specific spectral features that this index is designed to measure.

How do I calculate NSDS in Python or R?

Both Python and R code samples are provided above. In Python, use rasterio to load individual band GeoTIFF files and numpy for the arithmetic. In R, the terra package handles raster operations efficiently. The key is to load bands as floating-point arrays to avoid integer division, and to handle division-by-zero cases where the denominator equals zero. For production use, consider applying a valid data mask to exclude no-data pixels before calculation.

NSDS vs other soil indices

IndexNameHow it differs
BIBrightness IndexAlternative soil index — different band combination
BI2Second Brightness IndexAlternative soil index — different band combination
CIColoration IndexAlternative soil index — different band combination
NSDSI1Normalized Shortwave-Infrared Difference Bare Soil Moisture Index 1Alternative soil index — different band combination

Related Soil Indices

References

https://doi.org/10.3390/land10030231

Need help choosing?

Ask our AI assistant for sensor recommendations, code examples, or how NSDS compares to other indices for your specific use case.

Ask AI →