Learn R Programming

hsdar (version 0.4.1)

vegindex: vegindex

Description

Function calculates a variety of hyperspectral vegetation indices

Usage

vegindex(x, index, returnHCR = "auto", L = 0.5, 
         weighted = TRUE, ...)

Arguments

x
Object of class Speclib
index
Character string. Name or definition of index or vector with names/definitions of indices to calculate. See Details section for further information.
returnHCR
If TRUE, the result will be of class HyperSpecRaster, otherwise it is a data frame. If "auto", the class is automatically determined by passed Speclib.
L
Factor for SAVI index. Unused for other indices.
weighted
Logical indicating if reflectance values should be interpolated to fit wavelength position. If FALSE the reflectance values of nearest neighbour to passed position are returned. See
...
Further arguments passed to derivative functions. Only used for indices requiring derivations.

Value

  • A vector containing indices values. If index is a vector with length > 1, a data frame with ncol = length(index) and nrow = number of spectra in x is returned.

    If function is called without any arguments, return value will be a vector containing all available indices in alphabetical order.

Details

Index must be a charater vector containing pre-defined indices (selected by their name) or self defined indices or any combination of pre- and self-defined indices. Pre-defined indices{ The following indices are available: lll{ Name Formula Reference* Boochs $D_{703}$ Boochs et al. (1990) Boochs2 $D_{720}$ Boochs et al. (1990) CAI $0.5\cdot (R_{2000}+R_{2200})-R_{2100}$ Nagler et al. (2003) CARI $a = (R_{700}-R_{550}) / 150$ Kim et al. (1994) $b = R_{550}-(a\cdot 550)$ $R_{700}\cdot \textnormal{abs}(a\cdot 670+R_{670}+b)/R_{670}\cdot$ $(a^2+1)^{0.5}$ Carter $R_{695}/R_{420}$ Carter (1994) Carter2 $R_{695}/R_{760}$ Carter (1994) Carter3 $R_{605}/R_{760}$ Carter (1994) Carter4 $R_{710}/R_{760}$ Carter (1994) Carter5 $R_{695}/R_{670}$ Carter (1994) Carter6 $R_{550}$ Carter (1994) CI $R_{675}\cdot R_{690}/R_{683}^2$ Zarco-Tejada et al. (2003) CI2 $R_{760}/R_{700}-1$ Gitelson et al. (2003) ClAInt $\int_{600 nm}^{735 nm} R$ Oppelt and Mauser (2004) CRI1 $1/R_{515}-1/R_{550}$ Gitelson et al. (2003) CRI2 $1/R_{515}-1/R_{770}$ Gitelson et al. (2003) CRI3 $1/R_{515}-1/R_{550}\cdot R_{770}$ Gitelson et al. (2003) CRI4 $1/R_{515}-1/R_{700}\cdot R_{770}$ Gitelson et al. (2003) D1 $D_{730}/D_{706}$ Zarco-Tejada et al. (2003) D2 $D_{705}/D_{722}$ Zarco-Tejada et al. (2003) Datt $(R_{850}-R_{710})/(R_{850}-R_{680})$ Datt (1999b) Datt2 $R_{850}/R_{710}$ Datt (1999b) Datt3 $D_{754}/D_{704}$ Datt (1999b) Datt4 $R_{672}/(R_{550}\cdot R_{708})$ Datt (1998) Datt5 $R_{672}/R_{550}$ Datt (1998) Datt6 $(R_{860})/(R_{550}\cdot R_{708})$ Datt (1998) Datt7 $(R_{860} - R_{2218})/(R_{860} - R_{1928})$ Datt (1999a) Datt8 $(R_{860} - R_{1788})/(R_{860} - R_{1928})$ Datt (1999a) DD $(R_{749}-R_{720})-(R_{701}-R_{672})$ le Maire et al. (2004) DDn $2\cdot (R_{710}-R_{660}-R_{760})$ le Maire et al. (2008) DPI $(D_{688}\cdot D_{710})/D_{697}^2$ Zarco-Tejada et al. (2003) DWSI1 $R_{800}/R_{1660}$ Apan et al. (2004) DWSI2 $R_{1660}/R_{550}$ Apan et al. (2004) DWSI3 $R_{1660}/R_{680}$ Apan et al. (2004) DWSI4 $R_{550}/R_{680}$ Apan et al. (2004) DWSI5 $(R_{800} + R_{550})/(R_{1660} + R_{680})$ Apan et al. (2004) EGFN $(\max(D_{650:750})-\max(D_{500:550}))/$ Penuelas et al. $(\max(D_{650:750})+\max(D_{500:550}))$ (1994) EGFR $\max(D_{650:750})/\max(D_{500:550})$ Penuelas et al. (1994) EVI $2.5\cdot ((R_{800}-R_{670})/$ Huete et al. (1997) $(R_{800}-(6\cdot R_{670})-(7.5\cdot R_{475})+1))$ GDVI $(R_{800}^n-R_{680}^n) / (R_{800}^n+R_{680}^n)$** Wu (2014) GI $R_{554}/R_{677}$ Smith et al. (1995) Gitelson $1/R_{700}$ Gitelson et al. (1999) Gitelson2 $(R_{750}-R_{800}/R_{695}-R_{740})-1$ Gitelson et al. (2003) GMI1 $R_{750}/R_{550}$ Gitelson et al. (2003) GMI2 $R_{750}/R_{700}$ Gitelson et al. (2003) Green NDVI $(R_{800}-R_{550})/(R_{800}+R_{550})$ Gitelson et al. (1996) LWVI_1 $(R_{1094}-R_{983}) / (R_{1094}+R_{983})$ Galvao et al. (2005) LWVI_2 $(R_{1094}-R_{1205}) / (R_{1094}+R_{1205})$ Galvao et al. (2005) Maccioni $(R_{780}-R_{710})/(R_{780}-R_{680})$ Maccioni et al. (2001) MCARI $((R_{700}-R_{670})-0.2\cdot (R_{700}-R_{550}))\cdot$ Daughtry et al. (2000) $(R_{700}/R_{670})$ MCARI/OSAVI Daughtry et al. (2000) MCARI2 $((R_{750}-R_{705})-0.2\cdot (R_{750}-R_{550}))\cdot$ Wu et al. (2008) $(R_{750}/R_{705})$ MCARI2/OSAVI2 Wu et al. (2008) mND705 $(R_{750}-R_{705})/(R_{750}+R_{705}-2\cdot R_{445})$ Sims and Gamon (2002) mNDVI $(R_{800}-R_{680})/(R_{800}+R_{680}-2\cdot R_{445})$ Sims and Gamon (2002) MPRI $(R_{515}-R_{530})/(R_{515}+R_{530})$ Hernandez-Clemente et al. (2011) mREIP Red-edge inflection point using Gaussain fit Miller et al. (1990) MSAVI $0.5 \cdot (2\cdot R_{800}+1-$ Qi et al. (1994) $((2\cdot R_{800}+1)^2-8\cdot (R_{800}-R_{670}))^{0.5})$ MSI $R_{1600}/ R_{817}$ Hunt and Rock (1989) mSR $(R_{800}-R_{445})/(R_{680}-R_{445})$ Sims and Gamon (2002) mSR2 $(R_{750}/R_{705})-1/(R_{750}/R_{705}+1)^{0.5}$ Chen (1996) mSR705 $(R_{750}-R_{445})/(R_{705}-R_{445})$ Sims and Gamon (2002) MTCI $(R_{754}-R_{709})/(R_{709}-R_{681})$ Dash and Curran (2004) MTVI $1.2\cdot (1.2\cdot (R_{800}-R_{550})-$ Haboudane et al. $2.5\cdot (R_{670}-R_{550}))$ (2004) NDLI $(log(1/R_{1754}) - log(1/R_{1680}))/$ Serrano et al. (2002) $(log(1/R_{1754}) + log(1/R_{1680}))$ NDNI $(log(1/R_{1510}) - log(1/R_{1680}))/$ Serrano et al. (2002) $(log(1/R_{1510}) + log(1/R_{1680}))$ NDVI $(R_{800}-R_{680}) / (R_{800}+R_{680})$ Tucker (1979) NDVI2 $(R_{750}-R_{705})/(R_{750}+R_{705})$ Gitelson and Merzlyak (1994) NDVI3 $(R_{682}-R_{553})/(R_{682}+R_{553})$ Gandia et al. (2004) NDWI $(R_{860}-R_{1240}) / (R_{860}+R_{1240})$ Gao (1996) NPCI $(R_{680}-R_{430})/(R_{680}+R_{430})$ Penuelas et al. (1994) OSAVI $(1+0.16) \cdot (R_{800}-R_{670})/$ Rondeaux et al. $(R_{800}+R_{670}+0.16)$ (1996) OSAVI2 $(1+0.16) \cdot (R_{750}-R_{705})/$ Wu et al. (2008) $(R_{750}+R_{705}+0.16)$ PARS $R_{746}/R_{513}$ Chappelle et al. (1992) PRI $(R_{531}-R_{570})/(R_{531}+R_{570})$ Gamon et al. (1992) PRI_norm $\textnormal{PRI} \cdot (-1)/(\textnormal{RDVI}\cdot R_{700}/R_{670})$ Zarco-Tejada et al. (2013) PRI*CI2 $\textnormal{PRI} \cdot \textnormal{CI}2$ Garrity et al. (2011) PSRI $(R_{678}-R_{500}/R_{750}$ Merzlyak et al. (1999) PSSR $R_{800}/R_{635}$ Blackburn (1998) PSND $(R_{800}-R_{470})/(R_{800}-R_{470})$ Blackburn (1998) PWI $R_{970}/R_{900}$ Penuelas et al. (1997) RDVI $(R_{800}-R_{670})/\sqrt{R_{800}+R_{670}}$ Roujean and Breon (1995) REP_LE Red-edge position through linear extrapolation. Cho and Skidmore (2006) REP_Li $700 + 40\cdot ((R_{670}+R_{780}/2)/(R_{740}-R_{700}))$ Guyot and Baret (1988) SAVI $(1+L)\cdot (R_{800}-R_{670})/(R_{800}+R_{670}+L)$ Huete (1988) SIPI $(R_{800}-R_{445})/(R_{800}-R_{680})$ Penuelas et al. (1995), Penuelas et al. (1995a) SPVI $0.4\cdot 3.7\cdot (R_{800}-R_{670})-1.2\cdot$ Vincini et al. (2006) $((R_{530}-R_{670})^2)^{0.5}$ SR $R_{800}/R_{680}$ Jordan (1969) SR1 $R_{750}/R_{700}$ Gitelson and Merzlyak (1997) SR2 $R_{752}/R_{690}$ Gitelson and Merzlyak (1997) SR3 $R_{750}/R_{550}$ Gitelson and Merzlyak (1997) SR4 $R_{700}/R_{670}$ McMurtey et al. (1994) SR5 $R_{675}/R_{700}$ Chappelle et al. (1992) SR6 $R_{750}/R_{710}$ Zarco-Tejada and Miller (1999) SR7 $R_{440}/R_{690}$ Lichtenthaler et al. (1996) SR8 $R_{515}/R_{550}$ Hernandez-Clemente et al. (2012) SRPI $R_{430}/R_{680}$ Penuelas et al. (1995) SRWI $R_{850}/R_{1240}$ Zarco-Tejada et al. (2003) Sum_Dr1 $\sum_{i=626}^{795} D1_i$ Elvidge and Chen (1995) Sum_Dr2 $\sum_{i=680}^{780} D1_i$ Filella and Penuelas (1994) SWIR FI $R_{2133}^2/(R_{2225} \cdot R_{2209}^3$ Levin et al. (2007) SWIR LI $3.87 \cdot (R_{2210} - R_{2090}) -$ Lobell et al. (2001) $27.51 \cdot (R_{2280} - R_{2090}) - 0.2$ SWIR SI $-41.59 \cdot (R_{2210} - R_{2090}) +$ Lobell et al. (2001) $1.24 \cdot (R_{2280} - R_{2090}) + 0.64$ SWIR VI $37.72 \cdot (R_{2210} - R_{2090}) +$ Lobell et al. (2001) $26.27 \cdot (R_{2280} - R_{2090}) + 0.57$ TCARI $3\cdot ((R_{700}-R_{670})-0.2\cdot (R_{700}-R_{550})\cdot$ Haboudane et al. (2002) $(R_{700}/R_{670}))$ TCARI/OSAVI $\textnormal{TCARI} / \textnormal{OSAVI}$ Haboudane et al. (2002) TCARI2 $3\cdot ((R_{750}-R_{705})-0.2\cdot (R_{750}-R_{550})\cdot$ Wu et al. (2008) $(R_{750}/R_{705}))$ TCARI2/OSAVI2 $\textnormal{TCARI}2 / \textnormal{OSAVI}2$ Wu et al. (2008) TGI $-0.5 (190 (R_{670} - R_{550} ) - 120 (R_{670} - R_{480} ))$ Hunt et al. (2013) TVI $0.5\cdot (120\cdot (R_{750}-R_{550})-$ Broge and Leblanc $200\cdot (R_{670}-R_{550}))$ (2000) Vogelmann $R_{740}/R_{720}$ Vogelmann et al. (1993) Vogelmann2 $(R_{734}-R_{747})/(R_{715}+R_{726})$ Vogelmann et al. (1993) Vogelmann3 $D_{715}/D_{705}$ Vogelmann et al. (1993) Vogelmann4 $(R_{734}-R_{747})/(R_{715}+R_{720})$ Vogelmann et al. (1993) }

* For references please type: hsdardocs("References.pdf"). ** For GDVI n must be defined appending an underscore and the intended exponent to the index name. E.g., for n = 2, the correct index name would be "GDVI_2". Note that GDVI-indices with n = {2, 3, 4} will be derived if all available indices are calculated. } Self-defining indices{ Self-defined indices may be passed using the following syntax:

  • Rxxx:
{Reflectance at wavelength 'xxx'. Note that R must be upper case.} Dxxx:{First derivation of reflectance values at wavelength 'xxx'. Note that D must be upper case.} } Using this syntax, complex indices can be easily defined. Note that the entire definition of the index must be passed as one character string. Consequently, the NDVI would be written as "(R800-R680)/(R800+R680)".

References

See hsdardocs("References.pdf")

See Also

soilindex, derivative.speclib, rededge, get_reflectance

Examples

Run this code
## Example calculating NDVI
data(spectral_data)
ndvi <- vegindex(spectral_data, "NDVI")


## Example calculating all available indices
## Get available indices
avl <- vegindex()
vi <- vegindex(spectral_data, avl)

## Self-defined indices
## NDVI
vi <- vegindex(spectral_data, "(R800-R680)/(R800+R680)")
## NDNI
vi <- vegindex(spectral_data, 
               "(log(1/R1510) - log(1/R1680))/(log(1/R1510) + log(1/R1680))")
## D1
vi <- vegindex(spectral_data, "D730/D706")

Run the code above in your browser using DataLab