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?

  • Why not just download product 2A which is already in surface reflectance? – Albert Sep 14 '17 at 11:19
  • I need the remote sensing reflectance, not standard surface reflectance. I have edited my question. – dtanon Sep 14 '17 at 12:15

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:

Reflectance (float) = DC ( 16-bit integer) / (QUANTIFICATION_VALUE)

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):


Right-click in the desired band, go to Band Maths:

enter image description here

Enter the expression: B[1-12]/10000 (depends on the band selected)

enter image description here


Use Raster Calculator (Spatial Analyst extension needed) with the expression Float("band_name")/10000:

enter image description here


Use Raster calculator with the expression "band_name@1"/10000:

enter image description here

BOA (Bottom Of Atmosphere) reflectance

  1. Download Sen2Cor from ESA
  2. Install it in you machine
  3. You can use SNAP as a GUI to make correction. You can also use cmd in Windows or Terminal in OS X/Linux.

For cmd/terminal window

Open cmd/terminal window and just execute the following code:

L2A_Process /path/to/S2A_OPER_*_MSIL1C*.SAFE resolution = 10

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 or resolution = 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:

for /d %x in ('/path/to/S2A_OPER_*_MSIL1C*.SAFE') do L2A_Process %x --resolution = 10

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 apply L2A_Process.


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:

enter image description here

| improve this answer | |
  • Thanks but I need the "remote sensing reflectance" as defined by the water leaving radiance, so not a standard atmospheric correction, but specialized for ocean color analysis. I don't think I will achieve this with your solution? I will make my question more specific. – dtanon Sep 13 '17 at 8:04
  • @dtanon but is Sentinel-2 the correct product to your purpose? Check Sentinel-3 guides. I think it'll meet your expectations because a product of Atmospheric Correction of S-3 is Water Leaving Radiance. – aldo_tapia Sep 13 '17 at 11:27
  • I need a higher resolution so thats why Sentinel 2 is my choice – dtanon Sep 13 '17 at 13:10
  • @dtanon ok, I update my answer – aldo_tapia Sep 13 '17 at 13:36
  • It seems that I can't get the C2RCC plugin for SNAP 4 – dtanon Sep 14 '17 at 12:38

The level 1C is already in Top Of Atmosphere (TOA) reflectance.

If you are looking for Bottom of atmosphere reflectance you will need to download 2A product or process them from a 1C using Sen2Cor in SNAP (or any other package that support atmospheric correction for Sentinel-2).

| improve this answer | |

Maybe you can uses i.maxlik, this library, classifies the cell spectral reflectances in imagery data. Classification is based on the spectral signature information generated by either i.cluster, g.gui.iclass, or i.gensig. You can read in https://grass.osgeo.org/grass64/manuals/i.maxlik.html. And before you can extract this areas.

| improve this answer | |

ACOLITE is a free software which performs atmospheric correction of Sentinel-2 images for coastal and inland-waters applications.

It was developped by Vanhellemont, Q. and Ruddick, K. from the Royal Belgian Institue for Natural Sciences. You can obtain it here https://odnature.naturalsciences.be/remsem/software-and-data/acolite.

ACOLITE can output the remote sensing reflectance, which is calculated as the surface reflectance divided py pi (see the manual). Physically, you would obtain the same values by dividing level 2 products by pi. But this software was developped specifically for water bodies remote sensing applications.

Quoting Samantha Lavender on this thread:

As mentioned above there are differences when correcting over water versus land and so you can use a land focused AC over water, but the assumptions made will be causing errors. Also, you'll not be correcting for effects such a sky and sun glint plus adjacency. Over water these errors can become a significant issue as the reflectance of water is much lower, so AC code specifically designed for above-water applications tends to be used. The pi conversion is very much a simplification, with a f/Q factor (described in the document) traditionally used in marine AC code and Park and Ruddick (2005) improving on this further for coastal waters.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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