[GIS] Why is there a difference between NDVI using Sentinel 2, in ArcMap & QGIS

arcgis-10.4arcmapndviremote sensingsentinel-2

I have been trying to calculate the NDVI for a scene using Sentinel 2 bands 4(red) & 8(NIR).
I first did it in ArcMap and then QGIS.
In both softwares, I used the raster calculator and included the basic NDVI formula = (NIR-Red)/(NIR+Red).

ArcMap gave me a range of 0-9221 (this varies with the stretch applied) while QGIS gave me more plausible values from 0.0258-0.5255.

I have read briefly that Sentinel 2 is TOA reflectance and has a scaling factor of 10000, which apparently can be found in the xml file that gets downloaded with the images. I never found this scaling factor mentioned in the xml file I downloaded.

Why is there this difference? How is the calculation being done on QGIS?

Best Answer

Arcmap is notorious for retaining the raster type and not treating values as decimals/float when calculated from 16bit integer rasters.

In order to force Arcmap to treat raster calculation result as a float, you should multiply one of the arguments by 1.0, or simply append a '.0' to a any constant or real number in the formula.

In your case (NIR-Red)*1.0/(NIR+Red) will suffice.

Related Question