Most used spectral Indices with free satellite data

Published on May 14, 2020 | Bikesh Bade | 1791 Views

Over the year researcher and scientists have been introduced to numerous spectral indices to solve complex environmental problems. Today many different indices exist and each one has its own significance in the study. Here are the most popular indices that be calculated from free data satellites.



Normalized Difference Vegetation Index (NDVI)


The Normalized Difference Vegetation Index is a simple indicator of photosynthetically active biomass or, in layman’s terms, a calculation of vegetation health. Simply put, NDVI helps to differentiate vegetation from other types of land cover (artificial) and determine its overall state. It also allows us to define and visualize vegetated areas on the map as well as to detect abnormal changes in the growth process.


More details





Normalized Difference Water Index (NDWI)


The NDWI is a remote sensing-based indicator sensitive to the change in the water content of leaves. It is derived index from the Near-Infrared (NIR) and Short Wave Infrared (SWIR) channels. The SWIR reflectance reflects changes in both the vegetation water content and the spongy mesophyll structure in vegetation canopies, while the NIR reflectance is affected by leaf internal structure and leaf dry matter content but not by water content. The combination of the NIR with the SWIR removes variations induced by leaf internal structure and leaf dry matter content, improving the accuracy in retrieving the vegetation water content. 


More details





Enhanced vegetation index (EVI)


The enhanced vegetation index (EVI) was developed as an alternative vegetation index to address some of the limitations of the NDVI. The EVI was specifically developed to:

  1. be more sensitive to changes in areas having high biomass (a serious shortcoming of NDVI),

  2. reduce the influence of atmospheric conditions on vegetation index values, and

  3. correct for canopy background signals.

EVI = G * ((NIR - R) / (NIR + C1 * R – C2 * B + L))

More details




Normalized Difference Snow Index (NDSI)


Normalized Difference Snow Index (NDSI) is a numerical indicator that highlights snow cover over land areas. The green and short wave infrared spectral bands are used to map the extent of snow cover. Snow and clouds reflect most of the incident radiation in the visible band. 

NDSI =(Green-SWIR) / (Green+SWIR)

More details




Normalized Burned Ratio Index (NBRI)


The Normalized Burn Ratio (NBR) is an index designed to highlight burnt areas in large fire zones. The formula is similar to NDVI, except that the formula combines the use of both near-infrared (NIR) and shortwave infrared (SWIR) wavelengths. NBRI takes advantage of the near-infrared and short wave infrared spectral bands, which are sensitive in vegetation changes, to detect burned areas and monitor the recovery of the ecosystem. The NBRI must be used at least in pairs in order to extract information. One NBRI image before the fire event and one or more NBRI images after the fire event. The difference among these NBRI images will highlight the burned areas and can be used to monitor the behavior of the ecosystem as time passes. 





Bare Soil Index (BSI)


Bare Soil Index (BSI) is a numerical indicator that combines blue, red, near-infrared, and short wave infrared spectral bands to capture soil variations. These spectral bands are used in a normalized manner. The short wave infrared and the red spectral bands are used to quantify the soil mineral composition, while the blue and the near-infrared spectral bands are used to enhance the presence of vegetation. BSI can be used in numerous remote sensing applications, like soil mapping, crop identification (in combination with NDVI), etc.

BSI = ((Red+SWIR) - (NIR+Blue)) / ((Red+SWIR) + (NIR+Blue))




Index-Based Built-up Index (IBI)


Index-based built-up index (IBI) – is proposed for the rapid extraction of built-up land features in satellite imagery. The IBI is distinguished from conventional indices by its first-time use of thematic index-derived bands to construct an index rather than by using original image bands.  Hence, the index makes use of the well-known SAVI and the MNDWI, according to the following expression: 



Get your own Google Earth Engine Python API based customize function to calculate all the indexes in the single function 



# get indexes
def getIndexes(image):
    # Normalized difference vegetation index (NDVI)
    ndvi = image.normalizedDifference(['nir','red']).rename("ndvi")
    image = image.addBands(ndvi)

    #  Normalized Difference Water Index(NDWI)
    ndwi = image.normalizedDifference(['nir','swir1']).rename("ndwi")
    image = image.addBands(ndwi)

    # Enhanced Vegetation Indexes (EVI)
    evi = image.expression('2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {
            'NIR' :'nir'),
            'RED' :'red'),
            'BLUE':'blue') }).float()
    image = image.addBands(evi.rename('evi'))

    # Normalized Burned Ratio Index(NBRI)
    nbri = image.normalizedDifference(['swir1', 'nir'])
    image = image.addBands(nbri)


    # Normalized Difference Snow Index(NDSI)
    ndsi = image.normalizedDifference(['green ', 'swir1'])
    image = image.addBands(ndsi)

    # Bare Soil Index (BSI)
    bsi = image.expression(((RED + SWIR) - (NIR + BLUE)) / ((RED + SWIR) + (NIR + BLUE)))', {
            'NIR' :'nir'),
            'RED' :'red'),
            'SWIR' :'swir1'),}).float()
    image = image.addBands(evi.rename('bsi'))


    #Add Index-Based Built-Up Index (IBI)
    ibiA = image.expression('2 * SWIR1 / (SWIR1 + NIR)', {
    'NIR'  :'nir')}).rename(['IBI_A'])

    ibiB = image.expression('(NIR / (NIR + RED)) + (GREEN / (GREEN + SWIR1))', {
    'NIR'  :'nir'),
    'RED'  :'red'),
    ibiAB = ibiA.addBands(ibiB);
    ibi = ibiAB.normalizedDifference(['IBI_A', 'IBI_B'])
    image = image.addBands(ibi.rename('ibi'))





Hi, What if I wanted to use EVI as a function, similar to: var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); Cheers.

  • Aug 10, 2020 |

Leave your comment