I’m calculating NDVI for Bryce Canyon National Park over many years. I want to find if the vegetation in this area is becoming less healthy due to drought and heat stress over the years. When I calculate mean and max values, the mean value seems to be far off. For instance, for one of the years: Max NDVI: 0.70, Mean NDVI: 0.05.

I'm consistently getting numbers in this low range (0.03 - 0.05). I’m thinking it has to do with the majority of the map being soil.

So, I'm wondering if using the mean NDVI is a good approach for seeing if the health of vegetation in this area is declining or getting better?

I've tried using SAVI, but this doesn't change the mean and max by much.

Also, I'm aware the NDVI anomaly approach, but I'm unsure as to how to calculate this or if this would be a better approach.


you should consider the two aspects of vegetation status apart from each others:

  • due to drought and heat stress, your vegetation could die and, as a result, the extent of the vegetation will decrease. If you have some reliable data with or without vegetation, you could determine a NDVI threshold to measure the extent of the vegetation each year.

  • in areas where you have some vegetation, the vegetation could suffer from hydric stress. In this case, you can work on the NDVI values of a patch of vegetation to see if it evolves, but you should compute this under the vegetation mask from the first step. Also, I don't know about your time series, but it could be usefull to compare yearly maxima because the peak of vegetation greenness doesn't always occur at the same time of the year.


You tried SAVI? What L-factor did you use? Did you try the modified version of SAVI? In an area like Bryce Canyon you will have a huge soil brightness component. I highly doubt that L=0.5 would adequately account for the soil line. You can empirically derive the L factor by plotting the red and nir bands and defining s by identifying the slope where vegetation drops out. Then L is derived by:

L = 1 - (2 * s * (nir - red) * (nir -s + red)) / (nir + red)

The MSAVI is a bit more robust than SAVI and is derived, using the L factor, following:

MSAVI = ( (nir - red)(1 + L) ) / (nir + red + L)  

Qi et al (1994) solved for a range of L and came up with a derivation of the modified SAVI that avoids having to derive L explicitly. The SAVI2 formula follows:

(2 * nir + 1 - sqrt((2 * nir + 1)^2 - 8 * (nir - red))) / 2

Another alternative is the SATIV or total vegetation index (Marsett et al., 2006). This metric is more akin to a measure of fractional cover. The SWIR2 (2.09 – 2.35 nm) band is used in addition the red and nir, the metric derived following:

SATIV = (nir - red) * (nir + red + L) * (1 + L) - (SWIR2 / 2)   

I would highly recommend standardizing, whatever metric you choose, across your time series. This could be done via a row standardization or following methods in Peters et al., (2002).


Marsett, R.C., Qi, J., Heilman, P., Biedenbender, S.H., Watson, M.C., Amer, S., Weltz, M., Goodrich, D., Marsett, R. 2006. Remote sensing for grassland management in the arid southwest. Rangeland Ecology and Management 59:530-540.

Peters, A.J., E.A. WalterShea, L. JI, A. Vliia, M. Hayes, M.D. Svoboda (2002) Drought Monitoring with NDVI-Based Standardized Vegetation Index Photogrammetric Engineering & Remote Sensing 68(1):71-75

Qi J., Chehbouni A., Huete A.R., Kerr Y.H., 1994. Modified Soil Adjusted Vegetation Index (MSAVI). Remote Sensing of Environment 48:119-126.


Instead of using mean NDVI values, try calculating the differenced NDVI (dNDVI) for two dates/years. This can be done by subtracting the NDVI raster from one year from the other using the Raster Calculator tool:

"NDVI_Year_2" - "NDVI_Year_1" = dNDVI

This will give you positive values if NDVI increased from year 1 to year 2 and negative values if it decreased showing year-to-year change. You can repeat this for each year step or year combination.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.