- Disponibilité de l'ensemble de données
- 2015-06-27T00:00:00Z–2026-05-03T06:43:39Z
- Producteur de l'ensemble de données
- Union européenne/ESA/Copernicus/SentinelHub
- Intervalle de revisite
- 5 jours
- Tags
Description
La probabilité de couverture nuageuse S2 est créée avec la bibliothèque sentinel2-cloud-detector (à l'aide de LightGBM).
Toutes les bandes sont suréchantillonnées à une résolution de 10 mètres à l'aide de l'interpolation bilinéaire avant l'application de l'algorithme de base de gradient boosting. La probabilité à virgule flottante 0..1 obtenue est mise à l'échelle 0..100 et stockée sous forme d'UINT8. Les zones où il manque une ou plusieurs bandes sont masquées.
Les valeurs élevées sont plus susceptibles de correspondre à des nuages ou à des surfaces très réfléchissantes (par exemple, des toits ou de la neige).
Sentinel-2 est une mission d'imagerie multispectrale à haute résolution et à large fauchée qui soutient les études Copernicus sur la surveillance des terres, y compris la surveillance de la couverture végétale, des sols et de l'eau, ainsi que l'observation des voies navigables intérieures et des zones côtières.
Les données de niveau 2 sont disponibles dans la collection COPERNICUS/S2_SR_HARMONIZED. Les données de niveau 1B sont disponibles dans la collection COPERNICUS/S2_HARMONIZED. Des métadonnées supplémentaires sont disponibles pour les composants de ces collections.
Consultez ce tutoriel qui explique comment appliquer le masque de nuages.
Bandes
Bandes de fréquences
Taille des pixels : 10 mètres (toutes les bandes)
| Nom | Min | Max | Taille des pixels | Description |
|---|---|---|---|---|
probability |
0 | 100 | 10 mètres | Probabilité que le pixel soit nuageux |
Conditions d'utilisation
Conditions d'utilisation
L'utilisation des données Sentinel est régie par les Conditions d'utilisation des données Sentinel du programme Copernicus.
Explorer avec Earth Engine
Éditeur de code (JavaScript)
var s2Sr = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED'); var s2Clouds = ee.ImageCollection('COPERNICUS/S2_CLOUD_PROBABILITY'); var START_DATE = ee.Date('2019-01-01'); var END_DATE = ee.Date('2019-03-01'); var MAX_CLOUD_PROBABILITY = 65; var region = ee.Geometry.Rectangle({coords: [-76.5, 2.0, -74, 4.0], geodesic: false}); Map.setCenter(-75, 3, 12); function maskClouds(img) { var clouds = ee.Image(img.get('cloud_mask')).select('probability'); var isNotCloud = clouds.lt(MAX_CLOUD_PROBABILITY); return img.updateMask(isNotCloud); } // The masks for the 10m bands sometimes do not exclude bad data at // scene edges, so we apply masks from the 20m and 60m bands as well. // Example asset that needs this operation: // COPERNICUS/S2_CLOUD_PROBABILITY/20190301T000239_20190301T000238_T55GDP function maskEdges(s2_img) { return s2_img.updateMask( s2_img.select('B8A').mask().updateMask(s2_img.select('B9').mask())); } // Filter input collections by desired data range and region. var criteria = ee.Filter.and( ee.Filter.bounds(region), ee.Filter.date(START_DATE, END_DATE)); s2Sr = s2Sr.filter(criteria).map(maskEdges); s2Clouds = s2Clouds.filter(criteria); // Join S2 SR with cloud probability dataset to add cloud mask. var s2SrWithCloudMask = ee.Join.saveFirst('cloud_mask').apply({ primary: s2Sr, secondary: s2Clouds, condition: ee.Filter.equals({leftField: 'system:index', rightField: 'system:index'}) }); var s2CloudMasked = ee.ImageCollection(s2SrWithCloudMask).map(maskClouds).median(); var rgbVis = {min: 0, max: 3000, bands: ['B4', 'B3', 'B2']}; Map.addLayer( s2CloudMasked, rgbVis, 'S2 SR masked at ' + MAX_CLOUD_PROBABILITY + '%', true);
import ee import geemap.core as geemap
Colab (Python)
s2_sr = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED') s2_clouds = ee.ImageCollection('COPERNICUS/S2_CLOUD_PROBABILITY') start_date = ee.Date('2019-01-01') end_date = ee.Date('2019-03-01') max_cloud_probability = 65 region = ee.Geometry.Rectangle( coords=[-76.5, 2.0, -74, 4.0], geodesic=False, proj='EPSG:4326' ) def maskClouds(img): clouds = ee.Image(img.get('cloud_mask')).select('probability') is_not_cloud = clouds.lt(max_cloud_probability) return img.updateMask(is_not_cloud) # The masks for the 10m bands sometimes do not exclude bad data at # scene edges, so we apply masks from the 20m and 60m bands as well. # Example asset that needs this operation: # COPERNICUS/S2_CLOUD_PROBABILITY/20190301T000239_20190301T000238_T55GDP def maskEdges(s2_img): return s2_img.updateMask( s2_img.select('B8A').mask().updateMask(s2_img.select('B9').mask()) ) # Filter input collections by desired data range and region. criteria = ee.Filter.And( ee.Filter.bounds(region), ee.Filter.date(start_date, end_date) ) s2_sr = s2_sr.filter(criteria).map(maskEdges) s2_clouds = s2_clouds.filter(criteria) # Join S2 SR with cloud probability dataset to add cloud mask. s2_sr_with_cloud_mask = ee.Join.saveFirst('cloud_mask').apply( primary=s2_sr, secondary=s2_clouds, condition=ee.Filter.equals( leftField='system:index', rightField='system:index' ), ) s_2_cloud_masked = ( ee.ImageCollection(s2_sr_with_cloud_mask).map(maskClouds).median() ) rgb_vis = {'min': 0, 'max': 3000, 'bands': ['B4', 'B3', 'B2']} m = geemap.Map() m.set_center(-75, 3, 12) m.add_layer( s_2_cloud_masked, rgb_vis, 'S2 SR masked at ' + str(max_cloud_probability) + '%', True, ) m