[GRASS-dev] Unexpected EVI range from "i.vi"

Markus Metz markus.metz.giswork at gmail.com
Thu Jun 20 08:46:52 PDT 2013

I think I figured it out:

The EVI formula in i.vi is for MODIS. The generic formula is

G * ( nir - red)  / (nir + C1 * red - C2 * blue + L)

where G is a gain factor, C1, C2 are coefficients to correct for
aerosol influences in the red band using the blue band and L is the
canopy background adjustment that addresses non-linear, differential
NIR and red radiant transfer through a canopy.

The formula is scale-dependent, i.e. dependent on the range of the
input data. Scaling the input test values to a [0, 10000] range (the
range of the MODIS input bands), I get EVI values in the range [-1,
1]. Furthermore, different coefficients might be needed for different

Some more points:

The reference in i.vi for EVI is wrong, it must be

A.Huete, K.Didan, T.Miura, E.P.Rodriguez, X.Gao, L.G. Ferreira. 2002.
Overview of the radiometric and biophysical performance of the MODIS
vegetation indices. Remote Sensing of Environment 83 195-213.

The formula we used in R is wrong:

evi <- ( 2.5 * ( nir - red) ) / (nir + 6 * red - 7 * blue + 1.0)

it must be

evi <- ( 2.5 * ( nir - red) ) / (nir + 6 * red - 7.5 * blue + 1.0)

then I get again 6952.805

g.region rast= res= (-a) does not make sense, unless you want to
resample a raster map.

Markus M

More information about the grass-dev mailing list