I have been doing NDVI (Landsat 4-5) analysis for my research area for some time now. I recently decided to try out EVI (MODIS). But the EVI values I get are a bit different from NDVI. For example maximum NDVI values reach upto 0.9 but maximum EVI values only reach 0.6. I read that EVI does not get saturated in dense biomass regions like NDVI does so maybe that is a reason for lower maximum EVI values? In any case, is there some conversion factor or some other way to compare the two values for the same region? For example if I say NDVI in a park changed from 0.3 to 0.6 in 5 years, the changes in EVI for the same park ofcourse wont be within the same range. This is a great confusion for the people who await my results as they only understand NDVI values and would think NDVI of 0.6 is equal to EVI of 0.6.
[GIS] How to compare EVI values with NDVI values
convertevindviremote sensing
Related Solutions
Please stick to one question per post in the future. It makes answering significantly easier.
Question 1 - How to calculate EVI:
The formula that you are using is "correct", in the sense that you are using the constants calculated for MODIS.
Question 2 - Why does QGis and ArcGIS provide different results:
Minuscule differences in results most likely originate from different resampling methods used when combining the spectral bands. It is a difficult discover the reason for the differences, without having the data available.
Question 3 - How to remove extreme values from a raster calculation:
Removing those values is best done by adjusting your raster calculation. One approach would be to simply add a parenthesis around the entire equation and multiply it by a pair of 'greater than' and 'less than' calculations.
Example:
(EVI) * (EVI > -1) * (EVI < 1) + (EVI > 1)*1 + (EVI < -1)*(-1)
The above outlined calculation would set all the values below -1
and above 1
to -1
and 1
, respectively.
Question 4 - When to apply the scale factors:
The scale factors should be applied when you are using the bands. If you applied them afterwards, to the EVI, then the effect of the constants in the equation would be changed, and your calculations would become incorrect. As such, you use is currently the right one.
The NDVI collections are just simple temporal composites of the actual data produced by the USGS (with a normalized ratio applied) and as such are pretty much only useful as browse products. If they don't suit your needs you should create your own with whatever modifications you feel are appropriate. In this case, I'd negative buffer the images by a few kilometers to remove all edge effects.
// Make a list of dates 32 days apart.
var start = '2015-01-01'
var days = ee.Number(32)
var steps = ee.Number(365).divide(days).floor()
var dates = ee.List.sequence(0, steps).map(function(period) {
return ee.Date(start).advance(ee.Number(days).multiply(period), 'day')
})
// For each date, make a NDVI mosaic
var collection = dates.map(function(start) {
var start = ee.Date(start)
var ndvi = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
.filterDate(start, start.advance(days, 'day'))
.map(function(image) {
// Compute NDVI and cut off the edges.
return image.normalizedDifference(["B5", "B4"])
.clip(image.geometry().buffer(-6000))
})
.mosaic()
.set('system:time_start', start.millis())
return ndvi
})
collection = ee.ImageCollection(collection)
var palette = [
'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
'66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
'012E01', '011D01', '011301'
]
Map.addLayer(collection.first(), {palette: palette, min:0, max:1})
You can of course augment this to try to mask clouds (see the Cloud Masking examples in the code editor Examples folders) or by using the Surface Reflectance data instead of the TOA data.
Best Answer
Well this is not exactly a GIS (definitely not arcgis) question, but remote sensing is somewhat related. Anyway, EVI (enhanced vegetation index) is similar to NDVI and to SAVI (Soil-adjusted vegetation index). To wit it corrects for atmospheric and soil distortions. As stated in the NASA website "While the EVI is calculated similarly to NDVI, it corrects for some distortions in the reflected light caused by the particles in the air as well as the ground cover below the vegetation".
Conversion is not as straight forwards as can seen by the formula of EVI provided by Wikipedia. I do not recommend conversion or comparison at all, since EVI and NDVI are two different indices. It would be more appropriate to use EVI, in particular in areas rich in Biomass, or in areas with scarce vegetation where soil might influence your results. Additionally, cross satellite comparisons would be wrong due to issues of spatial resolution (250 m in MODIS and 60 m in LANDSAT 4-5) and might be due to other wavelength issues of specific sensors.
If you want to compare NDVI and EVI anyway, I would at least recommend to calculate EVI and NDVI (with atmospheric correction) using data from only one satellite.