diff --git a/DESCRIPTION b/DESCRIPTION index 023d39b8..03b8344c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,7 +2,7 @@ Package: RStoolbox Type: Package Title: Remote Sensing Data Analysis Version: 1.0.1 -Date: 2024-08-26 +Date: 2024-11-28 Authors@R: c( person("Benjamin", "Leutner", role= "aut", email="rstoolboxpackage@gmail.com", comment = c(ORCID = "0000-0002-6893-2002")), person("Ned", "Horning", role ="aut", email="horning@amnh.org"), diff --git a/man/spectralIndices.Rd b/man/spectralIndices.Rd index d73551d5..9fecfc95 100755 --- a/man/spectralIndices.Rd +++ b/man/spectralIndices.Rd @@ -86,7 +86,7 @@ Index values outside the valid value ranges (if such a range exists) will be set -\tabular{lllll}{ \strong{ Index } \tab \strong{ Description } \tab \strong{ Source } \tab \strong{ Bands } \tab \strong{ Formula } \cr CLG \tab Green-band Chlorophyll Index \tab Gitelson2003 \tab \code{redEdge3, green} \tab \eqn{redEdge3/green - 1} \cr CLRE \tab Red-edge-band Chlorophyll Index \tab Gitelson2003 \tab \code{redEdge3, redEdge1} \tab \eqn{redEdge3/redEdge1 - 1} \cr CTVI \tab Corrected Transformed Vegetation Index \tab Perry1984 \tab \code{red, nir} \tab \eqn{(NDVI + 0.5)/sqrt(abs(NDVI + 0.5))} \cr DVI \tab Difference Vegetation Index \tab Richardson1977 \tab \code{red, nir} \tab \eqn{s * nir - red} \cr EVI \tab Enhanced Vegetation Index \tab Huete1999 \tab \code{red, nir, blue} \tab \eqn{G * ((nir - red)/(nir + C1 * red - C2 * blue + L_evi))} \cr EVI2 \tab Two-band Enhanced Vegetation Index \tab Jiang 2008 \tab \code{red, nir} \tab \eqn{G * (nir - red)/(nir + 2.4 * red + 1)} \cr GEMI \tab Global Environmental Monitoring Index \tab Pinty1992 \tab \code{red, nir} \tab \eqn{(((nir^2 - red^2) * 2 + (nir * 1.5) + (red * 0.5))/(nir + red + 0.5)) * (1 - ((((nir^2 - red^2) * 2 + (nir * 1.5) + (red * 0.5))/(nir + red + 0.5)) * 0.25)) - ((red - 0.125)/(1 - red))} \cr GNDVI \tab Green Normalised Difference Vegetation Index \tab Gitelson1998 \tab \code{green, nir} \tab \eqn{(nir - green)/(nir + green)} \cr KNDVI \tab Kernel Normalised Difference Vegetation Index \tab Camps-Valls2021 \tab \code{red, nir} \tab \eqn{tanh(((nir - red)/(nir + red)))^2} \cr MCARI \tab Modified Chlorophyll Absorption Ratio Index \tab Daughtery2000 \tab \code{green, red, redEdge1} \tab \eqn{((redEdge1 - red) - (redEdge1 - green)) * (redEdge1/red)} \cr MNDWI \tab Modified Normalised Difference Water Index \tab Xu2006 \tab \code{green, swir2} \tab \eqn{(green - swir2)/(green + swir2)} \cr MSAVI \tab Modified Soil Adjusted Vegetation Index \tab Qi1994 \tab \code{red, nir} \tab \eqn{nir + 0.5 - (0.5 * sqrt((2 * nir + 1)^2 - 8 * (nir - (2 * red))))} \cr MSAVI2 \tab Modified Soil Adjusted Vegetation Index 2 \tab Qi1994 \tab \code{red, nir} \tab \eqn{(2 * (nir + 1) - sqrt((2 * nir + 1)^2 - 8 * (nir - red)))/2} \cr MTCI \tab MERIS Terrestrial Chlorophyll Index \tab DashAndCurran2004 \tab \code{red, redEdge1, redEdge2} \tab \eqn{(redEdge2 - redEdge1)/(redEdge1 - red)} \cr NBRI \tab Normalised Burn Ratio Index \tab Garcia1991 \tab \code{nir, swir3} \tab \eqn{(nir - swir3)/(nir + swir3)} \cr NDREI1 \tab Normalised Difference Red Edge Index 1 \tab GitelsonAndMerzlyak1994 \tab \code{redEdge2, redEdge1} \tab \eqn{(redEdge2 - redEdge1)/(redEdge2 + redEdge1)} \cr NDREI2 \tab Normalised Difference Red Edge Index 2 \tab Barnes2000 \tab \code{redEdge3, redEdge1} \tab \eqn{(redEdge3 - redEdge1)/(redEdge3 + redEdge1)} \cr NDVI \tab Normalised Difference Vegetation Index \tab Rouse1974 \tab \code{red, nir} \tab \eqn{(nir - red)/(nir + red)} \cr NDVIC \tab Corrected Normalised Difference Vegetation Index \tab Nemani1993 \tab \code{red, nir, swir2} \tab \eqn{(nir - red)/(nir + red) * (1 - ((swir2 - swir2ccc)/(swir2coc - swir2ccc)))} \cr NDWI \tab Normalised Difference Water Index \tab McFeeters1996 \tab \code{green, nir} \tab \eqn{(green - nir)/(green + nir)} \cr NDWI2 \tab Normalised Difference Water Index \tab Gao1996 \tab \code{nir, swir2} \tab \eqn{(nir - swir2)/(nir + swir2)} \cr NRVI \tab Normalised Ratio Vegetation Index \tab Baret1991 \tab \code{red, nir} \tab \eqn{(red/nir - 1)/(red/nir + 1)} \cr REIP \tab Red Edge Inflection Point \tab GuyotAndBarnet1988 \tab \code{red, redEdge1, redEdge2, redEdge3} \tab \eqn{0.705 + 0.35 * ((red + redEdge3)/(2 - redEdge1))/(redEdge2 - redEdge1)} \cr RVI \tab Ratio Vegetation Index \tab \tab \code{red, nir} \tab \eqn{red/nir} \cr SATVI \tab Soil Adjusted Total Vegetation Index \tab Marsett2006 \tab \code{red, swir2, swir3} \tab \eqn{(swir2 - red)/(swir2 + red + L) * (1 + L) - (swir3/2)} \cr SAVI \tab Soil Adjusted Vegetation Index \tab Huete1988 \tab \code{red, nir} \tab \eqn{(nir - red) * (1 + L)/(nir + red + L)} \cr SLAVI \tab Specific Leaf Area Vegetation Index \tab Lymburger2000 \tab \code{red, nir, swir2} \tab \eqn{nir/(red + swir2)} \cr SR \tab Simple Ratio Vegetation Index \tab Birth1968 \tab \code{red, nir} \tab \eqn{nir/red} \cr TTVI \tab Thiam's Transformed Vegetation Index \tab Thiam1997 \tab \code{red, nir} \tab \eqn{sqrt(abs((nir - red)/(nir + red) + 0.5))} \cr TVI \tab Transformed Vegetation Index \tab Deering1975 \tab \code{red, nir} \tab \eqn{sqrt((nir - red)/(nir + red) + 0.5)} \cr WDVI \tab Weighted Difference Vegetation Index \tab Richardson1977 \tab \code{red, nir} \tab \eqn{nir - s * red} } +\tabular{lllll}{ \strong{ Index } \tab \strong{ Description } \tab \strong{ Source } \tab \strong{ Bands } \tab \strong{ Formula } \cr CLG \tab Green-band Chlorophyll Index \tab Gitelson2003 \tab \code{redEdge3, green} \tab \eqn{redEdge3/green - 1} \cr CLRE \tab Red-edge-band Chlorophyll Index \tab Gitelson2003 \tab \code{redEdge3, redEdge1} \tab \eqn{redEdge3/redEdge1 - 1} \cr CTVI \tab Corrected Transformed Vegetation Index \tab Perry1984 \tab \code{red, nir} \tab \eqn{(NDVI + 0.5)/sqrt(abs(NDVI + 0.5))} \cr DVI \tab Difference Vegetation Index \tab Richardson1977 \tab \code{red, nir} \tab \eqn{s * nir - red} \cr EVI \tab Enhanced Vegetation Index \tab Huete1999 \tab \code{red, nir, blue} \tab \eqn{G * ((nir - red)/(nir + C1 * red - C2 * blue + L_evi))} \cr EVI2 \tab Two-band Enhanced Vegetation Index \tab Jiang 2008 \tab \code{red, nir} \tab \eqn{G * (nir - red)/(nir + 2.4 * red + 1)} \cr GEMI \tab Global Environmental Monitoring Index \tab Pinty1992 \tab \code{red, nir} \tab \eqn{(((nir^2 - red^2) * 2 + (nir * 1.5) + (red * 0.5))/(nir + red + 0.5)) * (1 - ((((nir^2 - red^2) * 2 + (nir * 1.5) + (red * 0.5))/(nir + red + 0.5)) * 0.25)) - ((red - 0.125)/(1 - red))} \cr GNDVI \tab Green Normalised Difference Vegetation Index \tab Gitelson1998 \tab \code{green, nir} \tab \eqn{(nir - green)/(nir + green)} \cr KNDVI \tab Kernel Normalised Difference Vegetation Index \tab Camps-Valls2021 \tab \code{red, nir} \tab \eqn{tanh(((nir - red)/(nir + red)))^2} \cr MCARI \tab Modified Chlorophyll Absorption Ratio Index \tab Daughtery2000 \tab \code{green, red, redEdge1} \tab \eqn{((redEdge1 - red) - (redEdge1 - green)) * (redEdge1/red)} \cr MNDWI \tab Modified Normalised Difference Water Index \tab Xu2006 \tab \code{green, swir2} \tab \eqn{(green - swir2)/(green + swir2)} \cr MSAVI \tab Modified Soil Adjusted Vegetation Index \tab Qi1994 \tab \code{red, nir} \tab \eqn{nir + 0.5 - (0.5 * sqrt((2 * nir + 1)^2 - 8 * (nir - (2 * red))))} \cr MSAVI2 \tab Modified Soil Adjusted Vegetation Index 2 \tab Qi1994 \tab \code{red, nir} \tab \eqn{(2 * (nir + 1) - sqrt((2 * nir + 1)^2 - 8 * (nir - red)))/2} \cr MTCI \tab MERIS Terrestrial Chlorophyll Index \tab DashAndCurran2004 \tab \code{red, redEdge1, redEdge2} \tab \eqn{(redEdge2 - redEdge1)/(redEdge1 - red)} \cr NBRI \tab Normalised Burn Ratio Index \tab Garcia1991 \tab \code{nir, swir3} \tab \eqn{(nir - swir3)/(nir + swir3)} \cr NDREI1 \tab Normalised Difference Red Edge Index 1 \tab GitelsonAndMerzlyak1994 \tab \code{redEdge2, redEdge1} \tab \eqn{(redEdge2 - redEdge1)/(redEdge2 + redEdge1)} \cr NDREI2 \tab Normalised Difference Red Edge Index 2 \tab Barnes2000 \tab \code{redEdge3, redEdge1} \tab \eqn{(redEdge3 - redEdge1)/(redEdge3 + redEdge1)} \cr NDVI \tab Normalised Difference Vegetation Index \tab Rouse1974 \tab \code{red, nir} \tab \eqn{(nir - red)/(nir + red)} \cr NDVIC \tab Corrected Normalised Difference Vegetation Index \tab Nemani1993 \tab \code{red, nir, swir2} \tab \eqn{(nir - red)/(nir + red) * (1 - ((swir2 - swir2ccc)/(swir2coc - swir2ccc)))} \cr NDWI \tab Normalised Difference Water Index \tab McFeeters1996 \tab \code{green, nir} \tab \eqn{(green - nir)/(green + nir)} \cr NDWI2 \tab Normalised Difference Water Index \tab Gao1996 \tab \code{nir, swir2} \tab \eqn{(nir - swir2)/(nir + swir2)} \cr NRVI \tab Normalised Ratio Vegetation Index \tab Baret1991 \tab \code{red, nir} \tab \eqn{(red/nir - 1)/(red/nir + 1)} \cr REIP \tab Red Edge Inflection Point \tab GuyotAndBarnet1988 \tab \code{red, redEdge1, redEdge2, redEdge3} \tab \eqn{0.705 + 0.35 * ((red + redEdge3)/(2 - redEdge1))/(redEdge2 - redEdge1)} \cr RVI \tab Ratio Vegetation Index \tab \tab \code{red, nir} \tab \eqn{red/nir} \cr SATVI \tab Soil Adjusted Total Vegetation Index \tab Marsett2006 \tab \code{red, swir2, swir3} \tab \eqn{(swir2 - red)/(swir2 + red + L) * (1 + L) - (swir3/2)} \cr SAVI \tab Soil Adjusted Vegetation Index \tab Huete1988 \tab \code{red, nir} \tab \eqn{(nir - red) * (1 + L)/(nir + red + L)} \cr SLAVI \tab Specific Leaf Area Vegetation Index \tab Lymburger2000 \tab \code{red, nir, swir2} \tab \eqn{nir/(red + swir2)} \cr SR \tab Simple Ratio Vegetation Index \tab Birth1968 \tab \code{red, nir} \tab \eqn{nir/red} \cr TTVI \tab Thiam's Transformed Vegetation Index \tab Thiam1997 \tab \code{red, nir} \tab \eqn{sqrt(abs((nir - red)/(nir + red) + 0.5))} \cr TVI \tab Transformed Vegetation Index \tab Deering1975 \tab \code{red, nir} \tab \eqn{sqrt((nir - red)/(nir + red) + 0.5)} \cr WDVI \tab Weighted Difference Vegetation Index \tab Richardson1977 \tab \code{red, nir} \tab \eqn{nir - s * red} \cr CUSTOM \tab Super custom index \tab Mueller2024 \tab \code{blue, red} \tab \eqn{blue + red} \cr CUSTOM \tab Super custom index \tab Mueller2024 \tab \code{blue, red} \tab \eqn{blue + red} } Some indices require additional parameters, such as the slope of the soil line which are specified via a list to the \code{coefs} argument. diff --git a/src/tinyexpr.c b/src/tinyexpr.c index 3e7ba4fe..0ec006a1 100644 --- a/src/tinyexpr.c +++ b/src/tinyexpr.c @@ -42,6 +42,7 @@ For log = natural log uncomment the next line. */ #include <stdio.h> #include <ctype.h> #include <limits.h> +#include <R.h> #ifndef NAN #define NAN (0.0/0.0) diff --git a/src/tinyexpr.h b/src/tinyexpr.h index a826c8b1..1e5c0dd0 100644 --- a/src/tinyexpr.h +++ b/src/tinyexpr.h @@ -36,10 +36,7 @@ extern "C" { typedef struct te_expr { int type; union {double value; const double *bound; const void *function;}; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpedantic" void *parameters[]; -#pragma GCC diagnostic pop } te_expr; @@ -84,4 +81,4 @@ void te_free(te_expr *n); } #endif -#endif /*TINYEXPR_H*/ +#endif /*TINYEXPR_H*/ \ No newline at end of file