How to convert DN into TOA Reflectance

I’m handling Sentinel2 data (Level-1c Product )
And I want to convert DN into TOA Reflectance.
However, I can not understand how to do well.

I checked
TOA Reflectance Computation
I can not find Ak and Ks .

if you are working with Level-1c products you already have TOA reflectance

I understanded that Level-1c products have TOA reflectance.

I opened the Sentinel2 data with Tff format in ArcGIS. (after resumpling and subset in SNAP)

Then, the minimum pixcel value is 996 ,maximum pixcel value is 6172.

I think TOA reflectance is within the numerical range of 0 to 1.
Do you know anything?

You need to divide your values by the QUATIFICATION value. It’s value is 10000 and can be found in the metadata.


But If you divide by 10000 to obtain reflectance I will obtain reflectnace values like 1.2 or 2.3, not in the 0 to 1 range. This is because pixel values are from 0 to 32674 or more.
Isn’t it

I guess you saved you product as 16 bit integer Geotiff at a previous step. Better leave it in the BEAM DIMAP format, because it preserves the original values.

Thank you very much for you quick answer.
Is there any posibility to export in a Geotiff with reflectance values in 0 to 1 range??

You can try data conversion to Float, but without histogram stretching.
But I would not save as GeoTiff unless needed. Conversion to GeoTIFF causes loss of all metadata information which is required for many processing steps.

Or you convert the data in a way I described yesterday.

Thanks Marco and Andreas, but I’m interested too in how to transform reflectante scaled TOA values in L1C product in reflectante 0 to 1 TOA values. I mean do it by myself with a raster calulator.

And after this calculate radiance … and then the DN.

I’m trying to get back step by step from reflectance scaled TOA values to DN, and do it all with a raster calculator beginning with the jp2 file downloaded from any band.

  1. reflectance scaled TOA values -> 2. reflectance 0 to 1 TOA values -> 3. radiance values -> 4. digital number

And I don’t know how transform 1. in to 2. (is not as simple as divide by 10000 because the new values will not be 0 to 1 range, isn’t?
The main reason to do all of this “manually” is because we have test calculate NDVI values after using sen2cor corrections and give us very extreme values (-0.999 to 0.999) we don’t think are normal/logic values.

So I prefer to go at the beginning, and review all rasters one by one, aboveall radiance in order to do atmosferic corrections.

Thanks agani for your time.

Actually the original L1C values are between 0 and 1.0, except some very saturated pixels. These values might go up to 1.2. And if you want to get the DN values you should not convert to radiances. Start directly from the reflectances.

1 Like

Thanks again Marco!!