Note: A new GRASS GIS stable version has been released: GRASS GIS 7.8, available here.
Updated manual page: here
From Digital number to Radiance:
Satellite imagery is commonly stored in Digital Number (DN) for
storage purposes; e.g., Landsat5 data is stored in 8bit values
(ranging from 0 to 255), other satellites maybe stored in 10 or 16
bits. If the data is provided in DN, this implies that this imagery
is "uncorrected". What this means is that the image is what the
satellite sees at its position and altitude in space (stored in DN).
This is not the signal at ground yet. We call this data at-satellite
or at-sensor. Encoded in the 8bits (or more) is the amount of energy
sensed by the sensor inside the satellite platform. This energy is
called radiance-at-sensor. Generally, satellites image providers
encode the radiance-at-sensor into 8bit (or more) through an affine
transform equation (y=ax+b). In case of using Landsat imagery, look
at the i.landsat.toar for an easy way to transform DN to
radiance-at-sensor. If using Aster data, try the i.aster.toar
module.
From Radiance to Reflectance:
Finally, once having obtained the radiance at sensor values, still
the atmosphere is between sensor and Earth's surface. This fact
needs to be corrected to account for the atmospheric interaction
with the sun energy that the vegetation reflects back into space.
This can be done in two ways for Landsat. The simple way is through
i.landsat.toar, use e.g. the DOS correction. The more
accurate way is by using i.atcorr (which works for many
satellite sensors). Once the atmospheric correction has been applied
to the satellite data, data vales are called surface reflectance.
Surface reflectance is ranging from 0.0 to 1.0 theoretically (and
absolutely). This level of data correction is the proper level of
correction to use with i.vi.
ARVI is resistant to atmospheric effects (in comparison to the NDVI) and is accomplished by a self correcting process for the atmospheric effect in the red channel, using the difference in the radiance between the blue and the red channels (Kaufman and Tanre 1996).
arvi( redchan, nirchan, bluechan ) ARVI = (nirchan - (2.0*redchan - bluechan)) / ( nirchan + (2.0*redchan - bluechan))
DVI: Difference Vegetation Index
dvi( redchan, nirchan ) DVI = ( nirchan - redchan )
EVI: Enhanced Vegetation Index
The enhanced vegetation index (EVI) is an optimized index designed to enhance the vegetation signal with improved sensitivity in high biomass regions and improved vegetation monitoring through a de-coupling of the canopy background signal and a reduction in atmosphere influences (Huete A.R., Liu H.Q., Batchily K., van Leeuwen W. (1997). A comparison of vegetation indices global set of TM images for EOS-MODIS. Remote Sensing of Environment, 59:440-451).
evi( bluechan, redchan, nirchan ) EVI = 2.5 * ( nirchan - redchan ) / ( nirchan + 6.0 * redchan - 7.5 * bluechan + 1.0 )
EVI2: Enhanced Vegetation Index 2
A 2-band EVI (EVI2), without a blue band, which has the best similarity with the 3-band EVI, particularly when atmospheric effects are insignificant and data quality is good (Zhangyan Jiang ; Alfredo R. Huete ; Youngwook Kim and Kamel Didan 2-band enhanced vegetation index without a blue band and its application to AVHRR data. Proc. SPIE 6679, Remote Sensing and Modeling of Ecosystems for Sustainability IV, 667905 (october 09, 2007) doi:10.1117/12.734933).
evi2( redchan, nirchan ) EVI2 = 2.5 * ( nirchan - redchan ) / ( nirchan + 2.4 * redchan + 1.0 )
GARI: green atmospherically resistant vegetation index
The formula was actually defined: Gitelson, Anatoly A.; Kaufman, Yoram J.; Merzlyak, Mark N. (1996) Use of a green channel in remote sensing of global vegetation from EOS- MODIS, Remote Sensing of Environment 58 (3), 289-298. doi:10.1016/s0034-4257(96)00072-7
gari( redchan, nirchan, bluechan, greenchan ) GARI = ( nirchan - (greenchan - (bluechan - redchan))) / ( nirchan + (greenchan - (bluechan - redchan)))
GEMI: Global Environmental Monitoring Index
gemi( redchan, nirchan ) GEMI = (( (2*((nirchan * nirchan)-(redchan * redchan)) + 1.5*nirchan+0.5*redchan) / (nirchan + redchan + 0.5)) * (1 - 0.25 * (2*((nirchan * nirchan)-(redchan * redchan)) + 1.5*nirchan+0.5*redchan) / (nirchan + redchan + 0.5))) - ( (redchan - 0.125) / (1 - redchan))
GVI: Green Vegetation Index
gvi( bluechan, greenchan, redchan, nirchan, chan5chan, chan7chan) GVI = ( -0.2848 * bluechan - 0.2435 * greenchan - 0.5436 * redchan + 0.7243 * nirchan + 0.0840 * chan5chan- 0.1800 * chan7chan)
IPVI: Infrared Percentage Vegetation Index
ipvi( redchan, nirchan ) IPVI = nirchan/(nirchan+redchan)
MSAVI2: second Modified Soil Adjusted Vegetation Index
msavi2( redchan, nirchan ) MSAVI2 = (1/2)*(2*NIR+1-sqrt((2*NIR+1)^2-8*(NIR-red)))
MSAVI: Modified Soil Adjusted Vegetation Index
msavi( redchan, nirchan ) MSAVI = s(NIR-s*red-a) / (a*NIR+red-a*s+X*(1+s*s))
NDVI: Normalized Difference Vegetation Index
ndvi( redchan, nirchan ) Satellite specific band numbers ([NIR, Red]): MSS Bands = [ 7, 5] TM1-5,7 Bands = [ 4, 3] TM8 Bands = [ 5, 4] Sentinel-2 Bands = [ 8, 4] AVHRR Bands = [ 2, 1] SPOT XS Bands = [ 3, 2] AVIRIS Bands = [51, 29] NDVI = (NIR - Red) / (NIR + Red)
PVI: Perpendicular Vegetation Index
pvi( redchan, nirchan ) PVI = sin(a)NIR-cos(a)red
SAVI: Soil Adjusted Vegetation Index
savi( redchan, nirchan ) SAVI = ((1.0+0.5)*(nirchan - redchan)) / (nirchan + redchan +0.5)
SR: Simple Vegetation ratio
sr( redchan, nirchan ) SR = (nirchan/redchan)
VARI: Visible Atmospherically Resistant Index VARI was designed to introduce an atmospheric self-correction (Gitelson A.A., Kaufman Y.J., Stark R., Rundquist D., 2002. Novel algorithms for estimation of vegetation fraction Remote Sensing of Environment (80), pp76-87.)
vari = ( bluechan, greenchan, redchan ) VARI = (green - red ) / (green + red - blue)
WDVI: Weighted Difference Vegetation Index
wdvi( redchan, nirchan, soil_line_weight ) WDVI = nirchan - a * redchan if(soil_weight_line == None): a = 1.0 #slope of soil line
g.region raster=band.1 -p i.vi blue=band.1 red=band.3 nir=band.4 viname=dvi output=dvi r.univar -e dvi
g.region raster=band.1 -p i.vi blue=band.1 red=band.3 nir=band.4 viname=evi output=evi r.univar -e evi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=evi2 output=evi2 r.univar -e evi2
g.region raster=band.1 -p i.vi blue=band.1 green=band.2 red=band.3 nir=band.4 viname=gari output=gari r.univar -e gari
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=gemi output=gemi r.univar -e gemi
g.region raster=band.3 -p i.vi blue=band.1 green=band.2 red=band.3 nir=band.4 band5=band.5 band7=band.7 viname=gvi output=gvi r.univar -e gvi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=ipvi output=ipvi r.univar -e ipvi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=msavi output=msavi r.univar -e msavi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=ndvi output=ndvi r.univar -e ndvi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=pvi output=pvi r.univar -e pvi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=savi output=savi r.univar -e savi
g.region raster=band.3 -p i.vi red=band.3 nir=band.4 viname=sr output=sr r.univar -e sr
g.region raster=band.3 -p i.vi blue=band.2 green=band.3 red=band.4 viname=vari output=vari r.univar -e vari
g.copy raster=lsat7_2002_10,lsat7_2002.1 g.copy raster=lsat7_2002_20,lsat7_2002.2 g.copy raster=lsat7_2002_30,lsat7_2002.3 g.copy raster=lsat7_2002_40,lsat7_2002.4 g.copy raster=lsat7_2002_50,lsat7_2002.5 g.copy raster=lsat7_2002_61,lsat7_2002.61 g.copy raster=lsat7_2002_62,lsat7_2002.62 g.copy raster=lsat7_2002_70,lsat7_2002.7 g.copy raster=lsat7_2002_80,lsat7_2002.8
Calculation of reflectance values from DN using DOS1 (metadata obtained from p016r035_7x20020524.met.gz):
i.landsat.toar input=lsat7_2002. output=lsat7_2002_toar. sensor=tm7 \ method=dos1 date=2002-05-24 sun_elevation=64.7730999 \ product_date=2004-02-12 gain=HHHLHLHHL
g.region raster=lsat7_2002_toar.3 -p i.vi red=lsat7_2002_toar.3 nir=lsat7_2002_toar.4 viname=ndvi \ output=lsat7_2002.ndvi r.colors lsat7_2002.ndvi color=ndvi d.mon wx0 d.rast.leg lsat7_2002.ndvi
g.region raster=lsat7_2002_toar.3 -p i.vi blue=lsat7_2002_toar.1 red=lsat7_2002_toar.3 nir=lsat7_2002_toar.4 \ viname=arvi output=lsat7_2002.arvi d.mon wx0 d.rast.leg lsat7_2002.arvi
g.region raster=lsat7_2002_toar.3 -p i.vi blue=lsat7_2002_toar.1 green=lsat7_2002_toar.2 red=lsat7_2002_toar.3 \ nir=lsat7_2002_toar.4 viname=gari output=lsat7_2002.gari d.mon wx0 d.rast.leg lsat7_2002.gari
A FAQ on Vegetation in Remote Sensing
Written by Terrill W. Ray, Div. of Geological and Planetary Sciences,
California Institute of Technology, email: terrill@mars1.gps.caltech.edu
Snail Mail: Terrill Ray
Division of Geological and Planetary Sciences
Caltech, Mail Code 170-25
Pasadena, CA 91125
Last changed: $Date$
Available at: i.vi source code (history)
Note: A new GRASS GIS stable version has been released: GRASS GIS 7.8, available here.
Updated manual page: here
Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index
© 2003-2020 GRASS Development Team, GRASS GIS 7.6.2dev Reference Manual