THEIA's L2A product format

=> Attention, il s'agit du format des données de Niveau 2A Sentinel-2 (et bientôt LANDSAT8) produites par THEIA/MUSCATE. Le format des données produites par l'outil SEN2COR de l'ESA est différent, tout comme le format des données produites par Sen2AGRI.

La description officielle du format des données se trouve ici

Niveau 2A : Réflectances de surface et masques de nuages

Le fichier zip distribué par THEIA contient plusieurs répertoires et plusieurs fichiers.

Les fichiers de ce répertoire sont les suivants :
  • les réflectances de surface sont fournies sous la forme d'un fichier GeoTiff par bande, pour les bandes à 10m (B2,B3,B4,B8) et les bandes à 20m (B5, B6, B7, B8A, B11 et B12) de Sentinel-2
  • pour le moment, les fichiers de réflectance de surface sont de deux types :
    • les données se terminant par "FRE_Bx.tif" (FRE pour Flat REflectance) ont, de plus, subi une correction supplémentaire qui prend en compte les effets des pentes
    • A terme, très probablement, seuls les fichiers "FRE" seront fournis, afin de diminuer les volumes à distribuer.
    • Dans les deux cas, les données sont codées sur 16 bits et il faut diviser par 10000 pour obtenir des réflectances de surface.
    • <REFLECTANCE_QUANTIFICATION_VALUE>10000</REFLECTANCE_QUANTIFICATION_VALUE>
    • La valeur No_Data (en dehors de l'image) vaut -10000

Nous fournissons aussi les variables atmosphériques déterminées par MACCS, aux résolutions 10m (ATB_R1.tif) et 20m (ATB_R2.tif).

  • Les fichiers contiennent deux bandes codées sur 8 bits :
    • La bande 1 correspond à la vapeur d'eau, il faut diviser les valeurs par 20 pour obtenir des g/cm2  <WATER_VAPOR_CONTENT_QUANTIFICATION_VALUE>20</WATER_VAPOR_CONTENT_QUANTIFICATION_VALUE>
    • La bande 2 correspond à l'épaisseur optique des aérosols, il faut diviser les valeurs par 200 pour obtenir l'épaisseur optique  <AEROSOL_OPTICAL_THICKNESS_QUANTIFICATION_VALUE>200</AEROSOL_OPTICAL_THICKNESS_QUANTIFICATION_VALUE>

Le répertoire MASK contient les informations suivantes :
  • Un masque de no_data, à résolution 10m (EDG_R1.tif) et 20m (EDG_R2.tif)
  • Un masque de pixels saturés au niveau 1 à résolution 10m (SAT_R1.tif) et 20m (SAT_R2.tif)
    • le premier bit correspond à la bande 1 de la résolution concernée
    • le deuxième bit correspond à la bande 2 de la résolution concernée
    • ...
    • Pour R1, l'ordre des bandes est : B2,B3,B4,B8, et pour R2, l'ordre des bandes est : B5,B6,B7,B8a,B11,B12
  • Un masque de nuages à chaque résolution (CLM_R1.tif ou CLM_R2.tif)
    • bit 0 (1) :Tous nuages (sauf les plus fins), et toutes les ombres
      bit 1 (2) : Tous nuages (sauf les plus fins)
      bit 2 (4) : Nuages détectés par seuil absolu dans le bleu
      bit 3 (8) : Nuages détectés par seuil multi-temporel
      bit 4 (16) : Nuages très fins
      bit 5 (32) : Ombres de nuages correspondant à un nuage
      bit 6 (64) : Ombres de nuages détectées dans la zone où les nuages pourraient être hors image (moins fiable)
      bit 7 (128) : Nuages hauts détectés par la bande 1.38 µm
    • Exemple 1 : la valeur 33 = 32+1 (00100001) indique qu'il s'agit d'une ombre (32), et le bit 1 indique qu'il s'agit soit d'une ombre, soit d'un nuage.
      Exemple 2 : la valeur 43 = 32 + 8 + 2 +1 (00101011)indique qu'il s'agit d'une ombre (32), d'un nuage détecté en multitemporel (8) (l'ombre est probablement sous le nuage) et les bits 0 et 1 sont mis à 1.
  • Un masque géophysique MG2 :
    • bit 0 (1) : Water mask
      bit 1 (2) : Tous nuages (sauf les plus fins)
      bit 2 (4) : Snow Mask
      bit 3 (8) : Shadow Mask ("OU" des bits 5 et 6 du masque de nuages)
      bit 4 (16) : Ombres topographiques
      bit 5 (32) : Zones masquées par le relief
      bit 6 (64) : Soleil trop bas pour une bonne correction des pentes
      bit 7 (128) : Soleil tangent à la surface (mauvaise correction des pentes)
  • IAB : Un masque des pixels pour lesquels la vapeur d'eau (bit1) et l'AOT (bit2) ont été interpolées (à résolution R1 ou R2). Sur la version 3.2 de MAJA? nbous nous sommes aperçus que le bit 2 a été inversé.
Utilisation du masque de nuages :

Si vous souhaitez un masque de nuages strict, testez simplement le fait que le masque de nuages soit supérieur à 0 SI vous souhaitez un masque de nuage un peu moins strict, vérifiez que le bit 0 est égal à 1 (Masque & (00000001) == 1)

=>

This page describes the data format of Sentinel-2   L2A generated by THEIA MUSCATE processing center at CNES.  ESA Sen2Cor format is different.

The official description of the data format   is here

Level 2A : Surface reflectances and cloud mask

The ZIP file distributed by Theia contains several files and directories.

The files are as follows :
  • the surface reflectances are provided as a GeoTiff per spectral band, for the 10m bands (B2, B3, B4, B8) and the 20m bands (B5, B6, B7, B8A, B11 et B12) of Sentinel-2.
  • there are two types of surface reflectance files
    • the files which end with "FRE_Bx.tif" (FRE for Flat REflectance) are also corrected for slope effect, which consists in suppressing the apparent reflectances variations. The corrected images look like if the land was flat.
    • After having compiled the user feedback, ity is likely that we will only distribute "FRE" files to reduce the data volume.
    • In any case, the data are coded on 16bits and you have to divide by 10000 to obtain reflectances.
    • <REFLECTANCE_QUANTIFICATION_VALUE>10000</REFLECTANCE_QUANTIFICATION_VALUE>
    • The  No_Data value (outside the image) is -10000

 

We also provide the values of the atmospheric variables computed by MACCS/MAJA, with a 10m resolution (ATB_R1.tif) and  20m resolution (ATB_R2.tif).

  • The files contain two bands coded on 8 bits each :
    • Band 1 is water vapour, you have to divide by 20 to obtain g/cm2  <WATER_VAPOR_CONTENT_QUANTIFICATION_VALUE>20</WATER_VAPOR_CONTENT_QUANTIFICATION_VALUE>
    • Band 2 is the Aerosol Optical Thickness, you have to divide by 200 to get the AOT. <AEROSOL_OPTICAL_THICKNESS_QUANTIFICATION_VALUE>200</AEROSOL_OPTICAL_THICKNESS_QUANTIFICATION_VALUE>

 

 

 

The mask directory provides :
  • A  no_data mask, at 10m resolution (EDG_R1.tif) and 20m (EDG_R2.tif)
  • A saturated pixel mask that comes from Level 1 with 10m resolution (SAT_R1.tif) and 20m (SAT_R2.tif)
    • first bit corresponds to first band at each resolution
    • second bit corresponds to second band at each resolution
    • ...
    • for R1, the bands appear in this order B2, B3, B4, B8, and for R2 : B5, B6, B7, B8a, B11, B12
  • a cloud mask for each resolution (CLM_R1.tif ou CLM_R2.tif)
    • bit 0 (1) : all clouds except the thinnest and all shadows
      bit 1 (2) : all clouds (except the thinnest)
      bit 2 (4) : clouds detected via mono-temporal thresholds
      bit 3 (8) : clouds detected via multi-temporal thresholds
      bit 4 (16) : thinnest clouds
      bit 5 (32) : cloud shadows cast by a detected cloud
      bit 6 (64) : cloud shadows cast by a cloud outside image
      bit 7 (128) : high clouds detected by 1.38 µm
    • Example 1 : value 33 = 32+1 (00100001) :  bit 1 tells us a shoadow or a cloud has been detected and bit 5 that it is a shadow (32),
    • Example 2 : value 11 =  8 + 2 +1 (00001011) tells us that it is a cloud (bits 1 and 2), detected by multi-temporal threshold (bit 4)
  • A geophysical mask MG2 :
    • bit 0 (1) : Water mask
      bit 1 (2) : All clouds (except the thinnests)
      bit 2 (4) : Snow Mask
      bit 3 (8) : all shadows ("OU" des bits 5 et 6 du masque de nuages)
      bit 4 (16) : Topographic shadows
      bit 5 (32) : Unseen pixels due to topography
      bit 6 (64) : Sun too low for a correct terrain correction
      bit 7 (128) : Sun direction tangent to slope (inaccurate terrain correction)
  • IAB : A mask of pixels for which the WaterVapour (bit 1) and Aerosol Optical Thickness (bit 2) was interpolated  (available at resolutions R1 or R2). However, in MAJA 3.2, there is an inversion of bit 2, which equals zero if interpolated)
How to use the cloud mask

If you want a very strict cloud and shadows mask, just test if cloud mask is greater than 0. This is our advice.If you are working in a region where you think MACCS/MAJA detects too many clouds, check that bit 1 is 1.  (Mask & (00000001) == 1)

4 comments

  • Igor Appel on 15/02/2019 at 03:15 said:

    You recommend "If you want a very strict cloud and shadows mask, just test if cloud mask is greater than 0". However if I work with snow data, I will miss all snow pixels. If it is correct I have the following questions:
    (1) How do you recommend to use "a very strict cloud and shadows mask" not removing snow pixels.
    (2) Could I browse images without downloading them - preferably in false colors combining three bands?
    Thank you.

    • Olivier Hagolle on 15/02/2019 at 07:49 said:

      Hi Igor,
      are you a Sentinel-2 user ? Because for Sentinel-2, MAJA is not too bad for telling snow from clouds, so it shoud work.
      Maybe are you a Venµs User ? In that case, without SWIR bands, it is quite hard to tell snow from clouds.
      But we are working on a snow index based on the NIR bands (10 and 11).
      Olivier

  • Thomas Lankester on 08/05/2019 at 12:07 said:

    Hi Olivier,
    Looking at the cloud mask bit description above, it should be impossible to combine bit 4 (16) : thinnest clouds with bits 1 and 2 (except the thinnest).
    However, I have found cloud mask values of 155 (128+16+8+2+1) and 147 (128+16+2+1).
    Have I misunderstood the bit mask values or is there another explanation?
    Cordialement Tom

    • Olivier Hagolle on 09/05/2019 at 11:38 said:

      Hi Thomas,
      This as changed recently, but I forgot to update the description. We have now included everything in the "all clouds" bits.

      Now I have to find from which product version this was introduced...
      Best regards
      Olivier

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>