Create cloud mask for sentinel-2

I was trying to compute the cloud cover percentage for my study using sentinel-2 but i couldn’t find any QA band like landsat-8 has where cloud pixels are defined here. Moreover, i looked at the various solution people have mentioned to cloud mask sentinel-2 images using sen2cor, fmask or Idepix. But couldn’t understand how can i compute cloud cover percentage over a small study area. or How can i get specific cloud pixel values like mentioned for landsat-8.

1 Like

You will find scene classification data in Sentinel-2 L2A data source


I suggest you also check our s2cloudless:

So, I can crop my area of interest from original L2A scene and as you mentioned i can use the “SCL” layer to compute the % of cloud present in the scene, right?

One thing i didn’t understand what is the meaning of " it makes sense to use this layer only on full resolution as any interpolation based on classification codelist will not produce reasonable results. You should also use NEAREST upsampling/downsampling setting". Could you please explain?

Is there any difference in the L2A scene generated manually by sen2cor vs downloaded L2A scene from copernicus web?


This is only relevant if you are using Sentinel Hub services (which you say you do not). With Sentinel Hub services you can define, which resolution you would like to use - e.g. for full Senitnel-2 resolution it would be 10 meters. So when using SCL, you should use it at 10 meter resolution (20 and 60 should work correctly as well). If you choose to use SCL at 100 meter resolution, you might notice inaccuracies with SCL data due to JP2 wavelet transfor protocols.

In short, the one from Copernicus should be better as they use better digital elevation model than available publicly. The rest should be more or less the same.

1 Like

@gmilcinski any idea about this # Sen2cor 2.8 fails on product from early 2016 - ‘bool’ object has no attribute ‘SPACECRAFT_NAME’
. I am also getting the similar issue for early 2016 sentinel-2 images. With rest it’s working fine

Around November 2016 ESA changed the structure of the product to “COMPACT” and I guess some meta-data changed in parallel. AWS stores data in original format so it might be that default sen2cor is not applicable with it.

@gmilcinski I couldn’t find any L2A product before Nov’2018. So, I was converting manually from L1C to L2A using sen2cor. Any idea how to overcome this issue to get the L2A product for before nov-2016.

I guess you could somehow reconfigure sen2cor to work. Or you download products directly from SciHub. Or do process these data on