Possible error in the calculation of the radiance of Sentinel-2 L1C-TOA scenes?

23 views
Skip to first unread message

Julian

unread,
Jun 20, 2024, 3:04:21 PM6/20/24
to RSGISLib Support
Hello, I tested the 6S correction of Sentinel-2 scenes with ARCSI. When looking at the calculated radiance scenes, I noticed that the radiance values do not match those obtained in the SNAP software, for example. So I took a closer look at the code snippet of rsgislib.imagecalibration.toa_refl_to_radiance(): RSGISCalculateRadianceFromTOAReflectance::RSGISCalculateRadianceFromTOAReflectance(int numberOutBands, float solarIrradiance, double distance, float solarZenith, float scaleFactor):rsgis::img::RSGISCalcImageValue(numberOutBands) { this->solarIrradiance = solarIrradiance; this->distance = distance; this->solarZenith = solarZenith; this->scaleFactor = scaleFactor; this->distSq = distance distance; }
void RSGISCalculateRadianceFromTOAReflectance::calcImageValue(float bandValues, int numBands, doubleoutput) { if(numBands != this->numOutBands) { throw rsgis::img::RSGISImageCalcException("The number of input and output image bands needs to be the same."); }
for(int i = 0; i < this->numOutBands; ++i) { output[i] = ((bandValues[i]/scaleFactor) * solarIrradiance[i] * cos(solarZenith)) / (M_PI * distSq); }
The error in the calculation must be due to an incorrect assignment of the variable „distance“. In rsgislib it seems that the Sentinel-Metadata-variable U gets defined as distance. However, according to https://seadas.gsfc.nasa.gov/help-9.0.0/ReflectanceToRadianceAlgorithmSpecification.html, the distance is equal to 1/U. As a result, the radiance determined by rsgislib.imagecalibration.toa_refl_to_radiance() is on average a few percent higher than it should actually be. This in turn means that atmospheric corrections from Sentinel-2 with ARCSI are also distorted. I may have misunderstood something, but after checking several times I always get differences in the radiance.
Reply all
Reply to author
Forward
0 new messages