Eau Sentinel-3 OLCI#
Produits utilisés : s3_olci_l2_wfr
Mots-clés données utilisées ; sentinel-3, jeux de données ; sentinel-3 OL_2_WFR
Aperçu#
Le produit Sentinel-3 OLCI Niveau-2 Water Full Resolution (OL_2_WFR) fournit des observations corrigées atmosphériquement et des paramètres géophysiques dérivés de l’instrument Ocean and Land Colour Instrument (OLCI) à bord des satellites Sentinel-3A et Sentinel-3B. OLCI a été lancé pour la première fois à bord de Sentinel-3A le 16 février 2016, suivi par Sentinel-3B le 25 avril 2018. Le produit comprend la réflectance quittant l’eau, les variables de qualité de l’eau et les paramètres atmosphériques à une résolution spatiale nominale d’environ 300 m. Lorsque les observations des deux satellites sont combinées, OLCI fournit un intervalle de revisite de moins de deux jours à l’équateur, avec une couverture plus fréquente aux latitudes plus élevées. Cela rend le produit précieux pour la surveillance des eaux intérieures, côtières et marines, y compris :
Surveillance de la concentration de chlorophylle-a et de la dynamique du phytoplancton
Détection des efflorescences algales nuisibles
Évaluation de la clarté de l’eau et de l’atténuation de la lumière
Surveillance des sédiments en suspension et de la turbidité
Cartographie de la matière organique dissoute colorée (MODC)
Surveillance de la qualité de l’eau intérieure, côtière et marine
Soutien à la surveillance des écosystèmes aquatiques et de l’environnement
Soutien aux études à long terme sur le climat et les ressources en eau
Les algorithmes et les approches de récupération ont été développés par l’Agence spatiale européenne (ESA) et ses partenaires, assurant la continuité avec l’héritage de MERIS et une performance spectrale et radiométrique améliorée. La validation s’appuie sur des mesures au sol et une inter-comparaison avec d’autres produits satellitaires. Plus d’informations sur le produit peuvent être trouvées dans le guide de l’utilisateur OLCI Water et les documents théoriques de base des algorithmes (ATBDs).
Description#
Ce cahier couvrira les sujets suivants :
Inspection des produits et des mesures disponibles dans le datacube
Chargement des données Sentinel-3 OLCI.
Tracer les résultats
Commencer#
Pour exécuter cette analyse, exécutez toutes les cellules du bloc-notes, en commençant par la cellule « Charger les packages ».
Charger des paquets#
Importez les packages Python utilisés pour l’analyse.
[1]:
%matplotlib inline
import datacube
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
from odc.geo.geom import Geometry
from deafrica_tools.plotting import display_map
from deafrica_tools.areaofinterest import define_area
Se connecter au datacube#
Connectez-vous au datacube pour que nous puissions accéder aux données de DE Africa.
[2]:
dc = datacube.Datacube(app="Sentinel_3")
Liste des produits#
Nous pouvons utiliser la fonctionnalité list_products du datacube pour inspecter les produits de DE Africa disponibles. Le tableau ci-dessous montre les noms de produits que nous utiliserons pour charger les données, une brève description des données et l’instrument satellite qui a acquis les données.
[3]:
dc.list_products().loc[dc.list_products()['description'].str.contains('Sentinel-3')]
[3]:
| name | description | license | default_crs | default_resolution | |
|---|---|---|---|---|---|
| name | |||||
| s3_ol_2_wfr_nrt | s3_ol_2_wfr_nrt | Sentinel-3 Level 2 Water Full Resolution (WFR)... | CC-BY-4.0 | EPSG:4326 | Resolution(x=0.003, y=-0.003) |
| s3_olci_l2_lfr | s3_olci_l2_lfr | Sentinel-3 OLCI L2 LAND | CC-BY-4.0 | EPSG:4326 | Resolution(x=0.003, y=-0.003) |
| s3_olci_l2_wfr | s3_olci_l2_wfr | Sentinel-3 OLCI L2 WATER | CC-BY-4.0 | EPSG:4326 | Resolution(x=0.003, y=-0.003) |
| s3_slstr_l2_lst | s3_slstr_l2_lst | Sentinel-3 LST | CC-BY-4.0 | EPSG:4326 | Resolution(x=0.003, y=-0.003) |
| s3_syn_2_vg1 | s3_syn_2_vg1 | Sentinel-3 Level-2 VG1 SYN product | CC-BY-4.0 | EPSG:4326 | Resolution(x=0.01, y=-0.01) |
Veuillez choisir le produit en spécifiant son nom, avec le produit s3_olci_l2_wfr
[4]:
product = "s3_olci_l2_wfr"
Liste des mesures#
Nous pouvons inspecter davantage les données disponibles pour le produit Sentinel-3 Land s3_olci_l2_wfr en utilisant la fonctionnalité list_measurements de datacube. Le tableau ci-dessous liste chacune des mesures disponibles dans les données.
[5]:
measurements = dc.list_measurements()
measurements.loc[product]
[5]:
| name | dtype | units | nodata | aliases | flags_definition | add_offset | scale_factor | |
|---|---|---|---|---|---|---|---|---|
| measurement | ||||||||
| A865 | A865 | int16 | 1 | 32767.0 | [aerosol_angstrom_exponent] | NaN | 0.0 | 0.0001 |
| ADG443_NN | ADG443_NN | int16 | log10(1/m) | 32767.0 | [CDM_absorbtion_coefficient] | NaN | 0.0 | 0.0001 |
| B01 | B01 | uint16 | 1 | 65535.0 | [Oa01_reflectance] | NaN | 0.0 | 0.0001 |
| B02 | B02 | uint16 | 1 | 65535.0 | [Oa02_reflectance] | NaN | 0.0 | 0.0001 |
| B03 | B03 | uint16 | 1 | 65535.0 | [Oa03_reflectance] | NaN | 0.0 | 0.0001 |
| B04 | B04 | uint16 | 1 | 65535.0 | [Oa04_reflectance] | NaN | 0.0 | 0.0001 |
| B05 | B05 | uint16 | 1 | 65535.0 | [Oa05_reflectance] | NaN | 0.0 | 0.0001 |
| B06 | B06 | uint16 | 1 | 65535.0 | [Oa06_reflectance] | NaN | 0.0 | 0.0001 |
| B07 | B07 | uint16 | 1 | 65535.0 | [Oa07_reflectance] | NaN | 0.0 | 0.0001 |
| B08 | B08 | uint16 | 1 | 65535.0 | [Oa08_reflectance] | NaN | 0.0 | 0.0001 |
| B09 | B09 | uint16 | 1 | 65535.0 | [Oa09_reflectance] | NaN | 0.0 | 0.0001 |
| B10 | B10 | uint16 | 1 | 65535.0 | [Oa10_reflectance] | NaN | 0.0 | 0.0001 |
| B11 | B11 | uint16 | 1 | 65535.0 | [Oa11_reflectance] | NaN | 0.0 | 0.0001 |
| B12 | B12 | uint16 | 1 | 65535.0 | [Oa12_reflectance] | NaN | 0.0 | 0.0001 |
| B16 | B16 | uint16 | 1 | 65535.0 | [Oa16_reflectance] | NaN | 0.0 | 0.0001 |
| B17 | B17 | uint16 | 1 | 65535.0 | [Oa17_reflectance] | NaN | 0.0 | 0.0001 |
| B18 | B18 | uint16 | 1 | 65535.0 | [Oa18_reflectance] | NaN | 0.0 | 0.0001 |
| B21 | B21 | uint16 | 1 | 65535.0 | [Oa21_reflectance] | NaN | 0.0 | 0.0001 |
| CHL_NN | CHL_NN | int16 | log10(mg/m^3) | 32767.0 | [algal_pigment_complex_waters] | NaN | 0.0 | 0.0001 |
| CHL_OC4ME | CHL_OC4ME | int16 | log10(mg/m^3) | 32767.0 | [algal_pigment_open_waters] | NaN | 0.0 | 0.0001 |
| IWV_W | IWV_W | uint8 | kg/m^2 | 255.0 | [integrated_water_vapour] | NaN | 0.0 | 1.0000 |
| KD490_M07 | KD490_M07 | int16 | log10(1/m) | 32767.0 | [diffuse_attenuation_coefficient] | NaN | 0.0 | 0.0001 |
| PAR | PAR | uint16 | microeinstein/s/m^2 | 65535.0 | [photosynthetically_active_radiation] | NaN | 0.0 | 1.0000 |
| T865 | T865 | int16 | 1 | 32767.0 | [aerosol_optical_thickness] | NaN | 0.0 | 0.0001 |
| TSM_NN | TSM_NN | int16 | log10(g/m^3) | 32767.0 | [total_suspended_matter] | NaN | 0.0 | 0.0001 |
| dataMask | dataMask | uint8 | 1 | 255.0 | [mask] | NaN | 0.0 | 1.0000 |
Le produit Sentinel-3 water possède 26 mesures :
Mesure |
Description |
Application |
|---|---|---|
A865 (Exposant d’Angström des aérosols) |
Paramètre d’aérosol décrivant la distribution de taille des particules atmosphériques. |
Correction atmosphérique, caractérisation des aérosols et études climatiques. |
ADG443_NN (Coefficient d’absorption de la matière dissoute et détritique colorée) |
Coefficient d’absorption de la matière organique dissoute colorée (MODC) et des matériaux détritiques à 443 nm, estimé à l’aide d’un algorithme de réseau neuronal. |
Surveillance de la matière organique dissoute, des apports d’eau douce et de la qualité de l’eau. |
B01 (Oa01) |
Sensible à la correction des aérosols et à une meilleure récupération des constituants de l’eau. |
Correction atmosphérique et récupération des constituants de l’eau. |
B02 (Oa02) |
Sensible aux substances jaunes, aux pigments détritiques et à la turbidité. |
Surveillance de la MODC, évaluation de la turbidité et analyse de la qualité de l’eau. |
B03 (Oa03) |
Correspond au maximum d’absorption de la chlorophylle et soutient les études biogéochimiques et de végétation. |
Récupération de la chlorophylle, analyse de la couleur de l’océan, biogéochimie et surveillance de la végétation. |
B04 (Oa04) |
Sensible à la chlorophylle. |
Récupération de la chlorophylle et surveillance de la qualité de l’eau. |
B05 (Oa05) |
Sensible à la chlorophylle, aux sédiments, à la turbidité et aux marées rouges. |
Récupération de la chlorophylle, surveillance des sédiments, évaluation de la turbidité et détection des efflorescences algales nuisibles. |
B06 (Oa06) |
Bande de référence de la chlorophylle (minimum). |
Récupération de la chlorophylle et analyse de la qualité de l’eau. |
B07 (Oa07) |
Sensible à la charge en sédiments. |
Surveillance du transport des sédiments et de la turbidité. |
B08 (Oa08) |
Correspond au deuxième maximum d’absorption de la chlorophylle et est sensible aux sédiments, aux substances jaunes et à la végétation. |
Extraction de la chlorophylle, surveillance des sédiments, analyse CDOM et surveillance de la végétation. |
B09 (Oa09) |
Optimisé pour une meilleure extraction de la fluorescence de la chlorophylle. |
Extraction de la fluorescence de la chlorophylle et analyse de la couleur de l’océan. |
B10 (Oa10) |
Correspond au pic de fluorescence de la chlorophylle et au bord rouge (red edge). |
Surveillance de la fluorescence de la chlorophylle et analyse de la végétation. |
B11 (Oa11) |
Représente la ligne de base de la fluorescence de la chlorophylle et la transition vers le bord rouge. |
Surveillance de la fluorescence de la chlorophylle et analyse de la végétation. |
B12 (Oa12) |
Sensible à l’absorption de l’oxygène, aux nuages et à la végétation. |
Détection des nuages, correction atmosphérique et surveillance de la végétation. |
B16 (Oa16) |
Utilisé pour la correction atmosphérique et des aérosols. |
Correction atmosphérique et extraction des aérosols. |
B17 (Oa17) |
Prend en charge la correction atmosphérique et des aérosols, la détection des nuages et la corégistration des pixels. |
Correction atmosphérique, détection des nuages et corégistration d’images. |
B18 (Oa18) |
Bande de référence pour l’absorption de la vapeur d’eau et bande de référence commune avec SLSTR pour la surveillance de la végétation. |
Correction de la vapeur d’eau et surveillance de la végétation. |
B21 (Oa21) |
Sensible à l’absorption de la vapeur d’eau et à la correction atmosphérique/aérosols. |
Extraction de la vapeur d’eau et correction atmosphérique. |
CHL_NN (Pigment algal – Eaux complexes) |
Concentration de chlorophylle-a estimée à l’aide d’un algorithme de réseau neuronal pour les eaux côtières et intérieures optiquement complexes. |
Surveillance de la qualité de l’eau, détection des proliférations algales nuisibles et évaluation de la santé des écosystèmes. |
CHL_OC4ME (Pigment algal – Eaux libres) |
Concentration de chlorophylle-a estimée à l’aide de l’algorithme OC4ME pour les eaux de pleine mer. |
Études de la productivité océanique, surveillance du phytoplancton et évaluation des écosystèmes marins. |
IWV_W (Vapeur d’eau intégrée) |
Vapeur d’eau atmosphérique intégrée à la colonne au-dessus de chaque observation. |
Correction atmosphérique, études climatiques et surveillance environnementale. |
KD490_M07 (Coefficient d’atténuation diffuse à 490 nm) |
Indique la vitesse à laquelle la lumière à 490 nm est atténuée dans la colonne d’eau, fournissant une mesure de la clarté de l’eau. |
Évaluation de la clarté de l’eau, surveillance des habitats aquatiques et études de la productivité primaire. |
PAR (Rayonnement photosynthétiquement actif) |
Quantité de lumière solaire disponible pour la photosynthèse atteignant la surface de la Terre. |
Études de la productivité primaire marine, croissance du phytoplancton et surveillance des écosystèmes. |
T865 (Épaisseur optique des aérosols) |
Mesure de la quantité d’aérosols dans l’atmosphère au-dessus de chaque observation. |
Correction atmosphérique, études de la qualité de l’air et surveillance climatique. |
TSM_NN (Matières en suspension totales) |
Concentration de particules en suspension dans l’eau estimée à l’aide d’un algorithme de réseau neuronal. |
Études sur le transport des sédiments, surveillance de la turbidité et gestion des eaux côtières et intérieures. |
dataMask (Masque de données) |
Masque binaire indiquant les observations valides et invalides. |
Exclusion des observations manquantes ou invalides et garantie d’une analyse de données fiable. |
Paramètres d’analyse#
La cellule suivante définit les paramètres qui définissent la zone d’intérêt sur laquelle effectuer l’analyse. #### Sélectionner l’emplacement Pour définir la zone d’intérêt, deux méthodes sont disponibles :
En spécifiant la latitude, la longitude et la zone tampon, ou en séparant les zones tampons de latitude et de longitude, cette méthode vous permet de définir une zone d’intérêt autour d’un point central. Vous pouvez saisir la latitude centrale, la longitude centrale et une valeur de zone tampon en degrés pour créer une zone carrée autour du point central. Par exemple, « lat = 10.338 », « lon = -1.055 » et « buffer = 0.1 » sélectionneront une zone avec un rayon de 0,1 degré carré autour du point avec les coordonnées « (10.338, -1.055) ».
Vous pouvez également fournir des valeurs de tampon distinctes pour la latitude et la longitude d’une zone rectangulaire. Par exemple, « lat = 10.338 », « lon = -1.055 » et « lat_buffer = 0.1 » et « lon_buffer = 0.08 » sélectionneront une zone rectangulaire s’étendant sur 0,1 degré au nord et au sud et 0,08 degré à l’est et à l’ouest à partir du point « (10.338, -1.055) ».
Pour des temps de chargement raisonnables, définissez la mémoire tampon sur « 0,1 » ou moins.
By uploading a polygon as a
GeoJSON or Esri Shapefile. If you choose this option, you will need to upload the geojson or ESRI shapefile into the Sandbox using Upload Files button
in the top left corner of the Jupyter Notebook interface. ESRI shapefiles must be uploaded with all the related files (.cpg, .dbf, .shp, .shx). Once uploaded, you can use the shapefile or geojson to define the area of interest. Remember to update the code to call the file you have uploaded.
Pour utiliser l’une de ces méthodes, vous pouvez décommenter la ligne de code concernée et commenter l’autre. Pour commenter une ligne, ajoutez le symbole "#" avant le code que vous souhaitez commenter. Par défaut, la première option qui définit l’emplacement à l’aide de la latitude, de la longitude et du tampon est utilisée.
Si vous exécutez le notebook pour la première fois, conservez les paramètres par défaut ci-dessous. Cela démontrera comment fonctionne l’analyse et fournira des résultats significatifs. L’exemple utilise le lac Mweru, un grand lac d’eau douce situé à la frontière entre la République démocratique du Congo (RDC) et la Zambie. Le lac Mweru soutient d’importantes pêcheries et les communautés environnantes, ce qui le rend bien adapté pour démontrer les produits de qualité de l’eau Sentinel-3 OLCI tels que la chlorophylle-a, les matières en suspension et la clarté de l’eau.
Pour exécuter le notebook pour une zone différente, assurez-vous que les données Sentinel-3 OLCI Land sont disponibles pour la zone choisie à l’aide de DEAfrica Explorer.
[6]:
# Method 1: Specify the latitude, longitude, and buffer)
aoi = define_area(lat= -8.9793, lon= 28.7650, buffer=0.55)
# Method 2: Use a polygon as a GeoJSON or Esri Shapefile.
# aoi = define_area(vector_path='aoi.shp')
#Create a geopolygon and geodataframe of the area of interest
geopolygon = Geometry(aoi["features"][0]["geometry"], crs="epsg:4326")
geopolygon_gdf = gpd.GeoDataFrame(geometry=[geopolygon], crs=geopolygon.crs)
# Get the latitude and longitude range of the geopolygon
lat_range = (geopolygon_gdf.total_bounds[1], geopolygon_gdf.total_bounds[3])
lon_range = (geopolygon_gdf.total_bounds[0], geopolygon_gdf.total_bounds[2])
[7]:
display_map(x=lon_range, y=lat_range)
[7]:
Charger le jeu de données Sentinel-3 à l’aide de dc.load()#
Maintenant que nous savons quels produits et mesures sont disponibles, nous pouvons charger les données du datacube en utilisant dc.load. Nous chargerons les données à partir des bandes spectrales satellites. En spécifiant output_crs='EPSG:4326' et resolution=(-0.003, 0.003), nous demandons au datacube de reprojeter nos données vers le système de coordonnées géographiques (CRS) mondial, avec des pixels d’environ 300 x 300 m. Enfin, group_by='solar_day' garantit que les images superposées prises à quelques secondes d’intervalle lors du passage du satellite sont combinées en un seul pas de temps dans les données.
[8]:
query = {
'x': (lon_range),
'y': (lat_range),
'time':('2026-05-01', '2026-05-30'),
'output_crs': 'EPSG:4326',
'resolution': (-0.003, 0.003)}
ds_S3 = dc.load(product=product,
group_by="solar_day",
**query)
ds_S3
[8]:
<xarray.Dataset> Size: 176MB
Dimensions: (time: 26, latitude: 368, longitude: 367)
Coordinates:
* time (time) datetime64[ns] 208B 2026-05-01T04:01:15.500000 ... 20...
* latitude (latitude) float64 3kB -8.428 -8.431 -8.434 ... -9.527 -9.529
* longitude (longitude) float64 3kB 28.22 28.22 28.22 ... 29.31 29.31 29.31
spatial_ref int32 4B 4326
Data variables: (12/26)
A865 (time, latitude, longitude) int16 7MB 0 0 0 ... 32767 32767
ADG443_NN (time, latitude, longitude) int16 7MB 0 0 0 ... 32767 32767
B01 (time, latitude, longitude) uint16 7MB 0 0 0 ... 65535 65535
B02 (time, latitude, longitude) uint16 7MB 0 0 0 ... 65535 65535
B03 (time, latitude, longitude) uint16 7MB 0 0 0 ... 65535 65535
B04 (time, latitude, longitude) uint16 7MB 0 0 0 ... 65535 65535
... ...
IWV_W (time, latitude, longitude) uint8 4MB 34 34 36 ... 255 255 255
KD490_M07 (time, latitude, longitude) int16 7MB 0 0 0 ... 32767 32767
PAR (time, latitude, longitude) uint16 7MB 0 0 0 ... 65535 65535
T865 (time, latitude, longitude) int16 7MB 0 0 0 ... 32767 32767
TSM_NN (time, latitude, longitude) int16 7MB 0 0 0 ... 32767 32767
dataMask (time, latitude, longitude) uint8 4MB 0 0 0 0 ... 255 255 255
Attributes:
crs: EPSG:4326
grid_mapping: spatial_refApplication des facteurs d’échelle et des décalages aux mesures Sentinel-3 OLCI#
⚠️ Remarque : De nombreuses mesures dans le produit Sentinel-3 OLCI Level-2 Water Full Resolution sont stockées sous forme d’entiers mis à l’échelle pour réduire la taille du fichier tout en conservant la précision de mesure requise. Pour convertir une valeur entière stockée en sa valeur physique, appliquez les attributs scale_factor (facteur d’échelle) et add_offset (décalage) fournis dans les métadonnées de la variable. Le scale_factor modifie l’amplitude de la valeur stockée, tandis que le add_offset la déplace vers la plage physique correcte.
Les valeurs manquantes ou de remplissage doivent être masquées avant d’appliquer la mise à l’échelle.
Par exemple, une valeur stockée de 2449 pour la bande de réflectance B01, avec un scale_factor de 0.0001 et un add_offset de 0, correspond à une valeur physique de 0.2449.
Le facteur d’échelle varie selon les mesures. La plupart des bandes de réflectance OLCI utilisent un facteur d’échelle de 0.0001, tandis que IWV_W (Vapeur d’eau intégrée) utilise un facteur d’échelle de 1.0, ce qui signifie que ses valeurs stockées sont déjà exprimées en valeurs physiques.
L’exemple suivant affiche le facteur d’échelle, le décalage et les unités pour toutes les mesures.
[9]:
metadata = pd.DataFrame(
[
{
"Measurement": measurement,
"Scale factor": ds_S3[measurement].attrs.get("scale_factor"),
"Add offset": ds_S3[measurement].attrs.get("add_offset"),
"Units": ds_S3[measurement].attrs.get("units"),
}
for measurement in ds_S3.data_vars
]
)
metadata
[9]:
| Measurement | Scale factor | Add offset | Units | |
|---|---|---|---|---|
| 0 | A865 | 0.0001 | 0.0 | 1 |
| 1 | ADG443_NN | 0.0001 | 0.0 | log10(1/m) |
| 2 | B01 | 0.0001 | 0.0 | 1 |
| 3 | B02 | 0.0001 | 0.0 | 1 |
| 4 | B03 | 0.0001 | 0.0 | 1 |
| 5 | B04 | 0.0001 | 0.0 | 1 |
| 6 | B05 | 0.0001 | 0.0 | 1 |
| 7 | B06 | 0.0001 | 0.0 | 1 |
| 8 | B07 | 0.0001 | 0.0 | 1 |
| 9 | B08 | 0.0001 | 0.0 | 1 |
| 10 | B09 | 0.0001 | 0.0 | 1 |
| 11 | B10 | 0.0001 | 0.0 | 1 |
| 12 | B11 | 0.0001 | 0.0 | 1 |
| 13 | B12 | 0.0001 | 0.0 | 1 |
| 14 | B16 | 0.0001 | 0.0 | 1 |
| 15 | B17 | 0.0001 | 0.0 | 1 |
| 16 | B18 | 0.0001 | 0.0 | 1 |
| 17 | B21 | 0.0001 | 0.0 | 1 |
| 18 | CHL_NN | 0.0001 | 0.0 | log10(mg/m^3) |
| 19 | CHL_OC4ME | 0.0001 | 0.0 | log10(mg/m^3) |
| 20 | IWV_W | 1.0000 | 0.0 | kg/m^2 |
| 21 | KD490_M07 | 0.0001 | 0.0 | log10(1/m) |
| 22 | PAR | 1.0000 | 0.0 | microeinstein/s/m^2 |
| 23 | T865 | 0.0001 | 0.0 | 1 |
| 24 | TSM_NN | 0.0001 | 0.0 | log10(g/m^3) |
| 25 | dataMask | 1.0000 | 0.0 | 1 |
Masquage#
Avant la visualisation, nous utilisons la bande dataMask pour masquer les valeurs affectées par les nuages ou d’autres problèmes de qualité. Le dataMask est une couche de qualité binaire, où une valeur de 1 indique une observation valide et 0 indique une observation invalide.
La comparaison ci-dessous illustre l’effet de l’application du masque en utilisant la mesure de réflectance de surface Bande 03 (B03). L’image de gauche montre les données originales, tandis que le panneau de droite montre la même observation après n’avoir conservé que les pixels où dataMask = 1. Cela démontre comment le masque supprime les observations sur les zones non ciblées (c’est-à-dire non aquatiques) et les observations peu fiables, produisant un ensemble de données plus propre pour la visualisation et l’analyse ultérieure.
[10]:
# Select a single observation for comparison
time_idx = 8
# Unmasked
b03 = (ds_S3["B03"].isel(time=time_idx)* ds_S3["B03"].attrs["scale_factor"])
# Masked
b03_masked = (ds_S3["B03"].where(ds_S3.dataMask == 1).isel(time=time_idx)* ds_S3["B03"].attrs["scale_factor"])
# Plot comparison
fig, ax = plt.subplots(1, 2, figsize=(12,5))
b03.plot(ax=ax[0], robust=True)
ax[0].set_title("Without dataMask")
b03_masked.plot(ax=ax[1], robust=True)
ax[1].set_title("With dataMask")
plt.tight_layout()
La comparaison démontre l’effet de l’application du dataMask. Sans masquage (à gauche), les observations invalides sont conservées, y compris les pixels affectés par les nuages, les terres ou d’autres problèmes de qualité. L’application du dataMask (à droite) supprime ces pixels peu fiables en ne conservant que les observations où dataMask = 1, ce qui donne une image plus propre, plus appropriée pour l’interprétation visuelle et l’analyse ultérieure.
Après avoir démontré son effet, le dataMask est maintenant appliqué à l’ensemble du jeu de données afin que toutes les visualisations et analyses ultérieures n’utilisent que des observations valides.
[11]:
ds_S3 = ds_S3.where(ds_S3.dataMask == 1)
La cellule ci-dessous visualise la réflectance de surface de la Bande 03 (B03) au moment de l’observation, représentant la réflectance corrigée atmosphériquement dans la région bleu-vert du spectre électromagnétique. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs de réflectance physiques.
[12]:
(ds_S3['B03'].isel(time=[0, 8, 18, 24])*ds_S3["B03"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4);
La cellule ci-dessous visualise le produit chlorophylle-a CHL_NN, estimé à l’aide d’un algorithme de réseau neuronal pour les eaux côtières et intérieures optiquement complexes. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs physiques.
[13]:
(ds_S3.isel(time=[0, 8, 18, 24])['CHL_NN']*ds_S3["CHL_NN"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4)
[13]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae4149a990>
La cellule ci-dessous visualise le produit chlorophylle-a CHL_OC4ME, estimé à l’aide de l’algorithme OC4ME pour les eaux de pleine mer. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs physiques.
[14]:
(ds_S3.isel(time=[0, 8, 18, 24])['CHL_OC4ME']*ds_S3["CHL_OC4ME"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4)
[14]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae414e2720>
La cellule ci-dessous visualise le produit Matières en suspension totales (TSM_NN), représentant la concentration de particules en suspension dans la colonne d’eau estimée à l’aide d’un algorithme de réseau neuronal. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs physiques.
[15]:
(ds_S3.isel(time=[0, 8, 18, 24])['TSM_NN']*ds_S3["TSM_NN"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4)
[15]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae4163f380>
La cellule ci-dessous visualise le Coefficient d'atténuation diffuse à 490 nm (KD490_M07), représentant la clarté de l’eau et la vitesse à laquelle la lumière est atténuée dans la colonne d’eau. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs physiques.
[16]:
(ds_S3.isel(time=[0, 8, 18, 24])['KD490_M07']*ds_S3["KD490_M07"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4)
[16]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae347eba70>
La cellule ci-dessous visualise le Rayonnement photosynthétiquement actif (PAR), représentant la quantité de lumière solaire disponible pour la photosynthèse atteignant la surface de la Terre. Comme le PAR a un facteur d’échelle de 1.0, aucune mise à l’échelle n’est requise avant la visualisation.
[17]:
(ds_S3.isel(time=[0, 8, 18, 24])['PAR']).plot(robust=True, col="time", col_wrap=4)
[17]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae42c81b80>
La cellule ci-dessous visualise l”Épaisseur optique des aérosols (T865), représentant la quantité d’aérosols dans l’atmosphère au-dessus de chaque observation. Le facteur d’échelle est appliqué avant la visualisation pour convertir les valeurs entières stockées en valeurs physiques.
[18]:
(ds_S3.isel(time=[0, 8, 18, 24])['T865']*ds_S3["T865"].attrs["scale_factor"]).plot(robust=True, col="time", col_wrap=4)
[18]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae34753a70>
La cellule ci-dessous visualise la Vapeur d'eau intégrée (IWV_W), représentant la vapeur d’eau atmosphérique totale contenue dans une colonne verticale de l’atmosphère. Comme IWV_W a un facteur d’échelle de 1.0, aucune mise à l’échelle n’est requise avant la visualisation.
[22]:
(ds_S3.isel(time=[0, 8, 18, 24])['IWV_W']).plot(robust=True, col="time", col_wrap=4)
[22]:
<xarray.plot.facetgrid.FacetGrid at 0x7fae4162b530>
Informations Complémentaires#
Licence Le code de ce notebook est sous licence Apache, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>`__.
Les données de Digital Earth Africa sont sous licence Creative Commons Attribution 4.0 <https://creativecommons.org/licenses/by/4.0/>.
Contact Si vous avez besoin d’aide, veuillez poster une question sur le canal Slack DE Africa <https://digitalearthafrica.slack.com/> ou sur le GIS Stack Exchange <https://gis.stackexchange.com/questions/ask?tags=open-data-cube> en utilisant la balise open-data-cube (vous pouvez consulter les questions posées précédemment `ici <https://gis.stackexchange.com/questions/tagged/open-data-
Si vous souhaitez signaler un problème avec ce notebook, vous pouvez en déposer un sur Github.
Version de Datacube compatible
[20]:
print(datacube.__version__)
1.9.13
Dernier test :
[21]:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
[21]:
'2026-09-02'