# Questions on Cloud\_fraction in L2\_NO2 and S5P\_L2\_CLOUD

**URL:** https://forum.atmospherictoolbox.org/t/questions-on-cloud-fraction-in-l2-no2-and-s5p-l2-cloud/150
**Category:** Uncategorized
**Tags:** sentinel-5p
**Created:** [May 27, 2020, 4:24pm UTC](https://forum.atmospherictoolbox.org/t/questions-on-cloud-fraction-in-l2-no2-and-s5p-l2-cloud/150 "2020-05-27T16:24:16Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![SimK15](https://forum.atmospherictoolbox.org/letter_avatar_proxy/v4/letter/s/82dd89/32.png) [@SimK15](https://forum.atmospherictoolbox.org/u/SimK15)
#### Post date: [May 27, 2020, 4:24pm UTC](https://forum.atmospherictoolbox.org/t/questions-on-cloud-fraction-in-l2-no2-and-s5p-l2-cloud/150/1 "2020-05-27T16:24:17Z")

</div>

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](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.

---

<div class="post-metadata">

### Author: ![mariliza](https://forum.atmospherictoolbox.org/letter_avatar_proxy/v4/letter/m/c77e96/32.png) [@mariliza](https://forum.atmospherictoolbox.org/u/mariliza)
#### Post date: [June 25, 2020, 9:51am UTC](https://forum.atmospherictoolbox.org/t/questions-on-cloud-fraction-in-l2-no2-and-s5p-l2-cloud/150/2 "2020-06-25T09:51:10Z")

</div>

> [@SimK15](#):
>
> tropospheric\_NO2\_column\_number\_density\_validity\>75;

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](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

---

<div class="post-metadata">

### Author: ![sander.niemeijer](https://forum.atmospherictoolbox.org/user_avatar/forum.atmospherictoolbox.org/sander.niemeijer/32/5_2.png) [@sander.niemeijer](https://forum.atmospherictoolbox.org/u/sander.niemeijer)
#### Post date: [June 25, 2020, 10:16am UTC](https://forum.atmospherictoolbox.org/t/questions-on-cloud-fraction-in-l2-no2-and-s5p-l2-cloud/150/3 "2020-06-25T10:16:31Z")

</div>

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`
