I would like to perform atmospheric correction with sen2cor, using in situ measured AOT values instead of relying on the DDV algorithm. I learned that this can be done by setting the “Visibility” parameter to the desired value, and setting “VIS_Update_Mode” to 0 in the L2A_GIPP.xml file. But the problem is that I have measured AOT values, not visibility. How to convert AOT values to visibility?
I found how to convert AOT to visibility. It can be done based on known relations between AOT and visibility (e.g., from ATCOR manual or from radiative transfer model runs). A model is fitted where ln(VIS) = a + b * ln(AOT). The model parameters are dependent on altitude (z). This all has been explained in the S2 ATBD document. But I have another question: In the L2A_GIPP.xml file the maximum allowed visibility is 120 km. If I set the visibility to larger values, a warning will be printed to the sen2cor output. It says: “Details: Element ‘Visibility’: [facet ‘maxInclusive’] The value ‘180.0’ is greater than the maximum value allowed (‘120’).” However, it seems that sen2cor runs properly and uses the higher visibility value. For example, if I set visibility to 180 km and VIS Update Mode to 0, then sen2cor will produce an AOT map that has AOT values of 0.055 (which correspond approximately to visibility of 180 km). Also it seems that the surface reflectance values are different than they would be if using visibility of 120 km. So, I am not sure if one can use larger visibility values than 120 km in the processing, and how does it affect the results. Does anyone know?