Why is there a difference in NDVI Values on Sentinel Hub & QGIS

I downloaded Sentinel-2 MSI L2A product for 17th Nov 2022 from Sentinel Hub, and converted DN values to reflectance, reprojected to EPSG 4326 and calculated NDVI in QGIS. I also downloaded raw data for Band 4 & Band 8 form Sentinel Hub EO Browser, and then calculated the NDVI in QGIS. Although the spatial variation is the same, there is a major difference in the values.


What could be the reason for this difference ? Is it some step in the preprocessing which is being missed ? Because as far as I know atmospheric correction using Sen2Cor won’t be required for this product since it’s already BOA, and there aren’t any other pre-processing steps for Sentinel Optical Data.

You did not provide the details of the comparison, but I am guessing this is related to this thread:

Thanks for the prompt reply,
Here are the stats for the Sentinel EOBrowser Layer


And these are the ones for the ones calculated in QGIS


This is a problem, since I am using NDVI to analysis vegetation health, and a difference 0.18 between the means (an average difference of approximately 0.15 - 0.175, is observed for all values), is too big. I guess the problem I ma also facing could be related to the harmonization of data, but I am not sure.

Here are the differences in the raw band values :


Band 8


Band 4

Well, have you tried to set-up the “harmonizeData” to false?

The “stats” don’t help much. What would be important is a full description of the process you run in one or another way, so that we could understand, what is actually happening.

But, as mentioned, best to simply try to change the parameter first. If this “solves” the “error”, do consider what is more important for you - temporal consistency of data (in which case harmonizeValue=true is better) or comparison with “other data”.

I downloaded the data directly from the browser, not through code, nor did I run the evalscript. However I was able to get comparable results when I used this formula :
As mentioned in this doc. Thanks for highlighting the issue though. Since my work also involves time-series analysis of vegetation I would want temporal consistency both before and after January 2022.

Thanks again for the insight.

1 Like

Also before doing this set DN=0 as “noData Value”. Also after calculation reflectance set all pixel values > 0 as 0, in order to calculate Vegetation Indices etc.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.