I have been trying to calculate Enhanced Vegetation Index (EVI) using Sentinel-2 Level 1C imagery. I have atmospherically corrected the imagery (so the imagery is in BOA) but I can't seem to derive EVI in ArcGIS.

I have been calculating EVI using Raster Calculator using the following formula (2-band EVI):

(2.5 * ("Band 8" - "Band 4")) / ("Band 8" + (2.4 * "Band 4") + 1)

The range of the values are between 2.4 and -1.8 and the theoretical range is between 1 and -1.

Is there anyway that I can correct this?

  • Have you updated your ENVI to the latest version ?
    Jan 30, 2017 at 15:43
  • @PROBERT no I haven't. Is it better to calculate it in ENVI?
    – Shaupt
    Jan 31, 2017 at 9:14
  • I don't know if your version is up to date...however I found this and not sure if your equation is right ..but here it is the link to there..semiautomaticclassificationmanual-v5.readthedocs.io/en/latest/… . It is under 3.1.13. Spectral Indices.
    Jan 31, 2017 at 15:32
  • @PROBERT The question seems to be strictly about the EVI , with no reference to the usage of the application ENVI.
    – Kersten
    Feb 1, 2017 at 7:59
  • @Kersten. I was trying to help him/her to check if ENVI has the latest version and they might have it. I used to use ENVI and they have all the list of equation to choose. So, if they updated that EVI , they might have but I don't know. I might be wrong. So, I check it out and found the link to share is what I am trying to ensure if his equation is correct. That is all.
    Feb 1, 2017 at 16:20

2 Answers 2


Sentinel 2 L1C reflectances are multiplied by 10000. Therefore you should adapt your equation in order to take the into account (or you can divide all values by 10000, but I wouldn't do this). On the other hand, it is worth noting that, while most values will ly between -1 and 1, EVI could mathematically be out of this range.

(2.5 * float("Band 8" - "Band 4")) / ("Band 8" + (2.4 * "Band 4") + 10000)

As a remark, I don't see the reason to use "2 bands" EVI when you have a multispectral sensor with NIR, red and blue bands available at the highest spatial resolution (in this case of S2, 10 m). According to Huete et al 1997, the original EVI is 2.5 * ((NIR − R)/(1 + NIR + 6R − 7.5B)). The B(lue) band correspond to band 2 of Sentinel-2 MSI, NIR to Band 8 and R(ed) to band 4. As far as I know, no empirical study tried to adjust these parameters for the specific spectral response of the Sentinel-2 MSI bands, but they re "useable" like this.

  • @radouxjju You should modify your first expression because only the bands can be scaled; not the factor 1 (correctly expressed in your second expression attributed to Huete et al.).
    – xunilk
    Feb 20, 2021 at 4:03

Late to reply but I have blog post regarding this question and have described in details about EVI calculation in GEE. https://kaflekrishna.com.np/blog-detail/enhanced-vegetation-index-evi-sentinel-2-image-google-earth-engine/

In short, I have used function to compute EVI as:

def getEVI(image):
# Compute the EVI using an expression.
EVI = image.expression(
    '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {
        'NIR': image.select('B8').divide(10000),
        'RED': image.select('B4').divide(10000),
        'BLUE': image.select('B2').divide(10000)

image = image.addBands(EVI)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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