I want to calculate "remote sensing reflectance" from Sentinel 2 image, which is derived from "water leaving radiance reflectance" of a water surface, to extract information of Total Suspended Matter and CDOM in a water body.
From my understanding, I need to perform an atmospheric correction which provides the water leaving radiance reflectance.
Anyone knows how to do this in SNAP, ArcGIS or QGIS?
Best Answer
The scenes are distributed by DC or Digital count. You need to use Quantification value to obtain reflectance.
As @gmorin mentioned, scenes are already in TOA reflectance, but distributed in DC. To calculate reflectance you need to use:
The value of Quantification value is defined in .xml metadata file:
(line 58 of MTD_MSIL1C.xml)
If you use Sen2Cor (
L2A_Process
) you'll obtain also DC in BOA (Bottom Of Atmosphere) reflectance. So you need to use Quantification value also. To obtain reflectance band by band (you can also stack them and apply this once or use arcpy, pyQGIS or R to do it):Snap
Right-click in the desired band, go to Band Maths:
Enter the expression:
B[1-12]/10000
(depends on the band selected)ArcGIS
Use Raster Calculator (Spatial Analyst extension needed) with the expression
Float("band_name")/10000
:QGIS
Use Raster calculator with the expression
"band_name@1"/10000
:BOA (Bottom Of Atmosphere) reflectance
For cmd/terminal window
Open cmd/terminal window and just execute the following code:
The output will be a
S2A_USER_*_MSIL2A*.SAFE
folder with the same structure than L1C, but in BOA reflectance.You can set
resolution = 20
orresolution = 60
. To change other parameters go to sen2cor/cfg/L2A_GIPP.xml, like to change target directory, DEM (doesn't apply in your case) or look-up tables configuration.You can also do this process into various folders by cmd/terminal windows. In cmd (windows) case, use a loop:
Finally, if you have downloaded a scene with a lot of granules and you want to use only one or a few of them, just delete the others granules from
S2A_OPER_*_MSIL1C*.SAFE/GRANULE/
folder and applyL2A_Process
.Important
The output will be in Digital Count, so you need to do the above process to extract the real value of reflectance
Water leaving reflectances
With L1C scene, just simply use C2RCC S2-MSI Processor in SNAP. Go to Optical/Thematic Water Processing/C2R Processors/S2-MSI, set it and run it: