Atmospheric Toolbox

Questions on Cloud_fraction in L2_NO2 and S5P_L2_CLOUD

Hello,

I would like to ask you a few questions about ‘cloud fraction’.
I am dealing with NO2 data and I am interested to create maps of what is called ‘Cloud radiance fraction’.
Using harp.import is possible to import ‘cloud_fraction’ from L2_NO2_OFFLINE data, which is the ‘cloud fraction for NO2 fitting window’.
My first question is whether using this variable to see clouds in this spectral window is good enough or it would be better importing the cloud fraction variable from S5P_L2_CLOUD data.

As far as I understand and according to the table reported here: http://stcorp.github.io/harp/doc/html/ingestions/S5P_L2_NO2.html, cloud fraction is the default ingested variable whereas if I want the Cloud radiance fraction I should put ‘cloud_fraction=radiance’ inside my script. However, this doesn’t work. Here below my code (I am using Spyder in Anaconda):

L3_NO2_File= harp.import_product(file_name(s), operations=’
tropospheric_NO2_column_number_density_validity>75;
derive(tropospheric_NO2_column_number_density [Pmolec/cm2]);
derive(datetime_stop {time});
latitude > 49.2 [degree_north] ; latitude < 62.5 [degree_north] ; longitude > -9.6 [degree_east] ; longitude < 2.5 [degree_east];
bin_spatial(1260, 49.2, 0.01, 1210, -9.6, 0.01);
derive(latitude {latitude}); derive(longitude {longitude});
keep(NO2_column_number_density, tropospheric_NO2_column_number_density, stratospheric_NO2_column_number_density, NO2_slant_column_number_density, tropopause_pressure,absorbing_aerosol_index,cloud_fraction=radiance, datetime_start, longitude, latitude)’)

In the meantime, I plotted the daily average cloud_radiance over one specif day (so I just left ‘cloud_fraction’ inside the script above) and I found out that, as the test validity is >75 (i.e. cloud radiance fraction >0.5) I have no data in the very same areas where clouds are present (this makes sense!). So re-imported the data using a threshold >50 and now I can see better all the cloud fraction distribution. So my last questions are: is this procedure correct or do I need to map the ‘cloud_fraction=radiance’ variable? If so, how can I get it? Or do I need to use something else from L2_CLOUDS?

Thank you in advance for your time and help.

Dear SimK15,

I am by no means the S5P NO2 expert, however, if you read the official README file found here:

http://www.tropomi.eu/sites/default/files/files/publicSentinel-5P-Nitrogen-Dioxide-Level-2-Product-Readme-File_20191105.pdf

You will see, in page 5, the following note:

• qa_value > 0.75
This is the recommended pixel filter. It removes cloud-covered scenes (cloud radiance fraction

0.5), partially snow/ice covered scenes, errors, and problematic retrievals.

Which means that if you use the tropospheric_NO2_column_number_density_validity>75 you are good to go, and only pixels with associated cloud fraction < 20% are left if your dataset.

Good luck,
MariLiza

Sorry that I missed this question.

Be aware that cloud fraction is dependent on wavelength. The default cloud fraction that is ingested with NO2 gives you a kind of wavelength averaged fraction. The radiance cloud fraction is a cloud fraction that is specific to the wavelengths that are used to retrieve NO2.

To import the radiance cloud fraction with HARP from the NO2 product you would use:

L3_NO2_File= harp.import_product(file_name(s), operations=’
tropospheric_NO2_column_number_density_validity>75;
derive(tropospheric_NO2_column_number_density [Pmolec/cm2]);
derive(datetime_stop {time});
latitude > 49.2 [degree_north] ; latitude < 62.5 [degree_north] ; longitude > -9.6 [degree_east] ; longitude < 2.5 [degree_east];
bin_spatial(1260, 49.2, 0.01, 1210, -9.6, 0.01);
derive(latitude {latitude}); derive(longitude {longitude});
keep(NO2_column_number_density, tropospheric_NO2_column_number_density, stratospheric_NO2_column_number_density, NO2_slant_column_number_density, tropopause_pressure,absorbing_aerosol_index,cloud_fraction, datetime_start, longitude, latitude)’,
options='cloud_fraction=radiance')

The options are included as a different parameter to harp.import_product