Masquage des nuages avec load_ard()

Dans cet exercice, nous appliquerons un masque de nuage aux données Sentinel-2 au large des côtes du Ghana. Les masques cloud sont importants car ils suppriment les mauvais points de données de notre ensemble de données, afin que nous puissions former une image composite fiable.

Créer un nouveau cahier

Comme dans le dernier exercice, nous allons commencer par faire un nouveau notebook Jupyter vierge. Si vous voulez des instructions plus détaillées sur la création d’un nouveau notebook, consultez cette section dans l’exercice sur le chargement des données dans le bac à sable de la session précédente. Sinon, suivez les étapes ci-dessous.

  1. Naviguez vers le dossier Training (ou créez ce dossier en suivant les instructions de Session 1).

  2. Cliquez sur le bouton + et cliquez sur Python 3 dans la section Notebook.

  3. Renommez votre fichier pour que vous sachiez qu’il provient de cet exercice. Nous utiliserons ce cahier pour travailler avec les géomédias, alors appelons-le Geomedian_composite.ipynb.

  4. Ouvrez le cahier.

Configurer le notebook

Charger des packages et des fonctions

Dans la première cellule, tapez le code suivant, puis exécutez la cellule. Rappelez-vous que les cellules peuvent être exécutées en appuyant sur les touches Maj + Entrée de votre clavier.

image1

Nous avons utilisé la plupart de ces paquets et fonctions dans l’exercice précédent sur le chargement des données dans le bac à sable. rgb permet de tracer des images en couleur. display_map permet de visualiser la zone que nous avons sélectionnée.

Dans cette session, nous introduisons deux nouvelles fonctions : load_ard et xr_geomedian. Nous utiliserons load_ard pour charger les données afin qu’elles soient masquées par les nuages, et xr_geomedian est utilisé dans la section suivante pour calculer le géomédian.

Note

À partir de juin 2021, le paquet deafrica_tools a remplacé l’importation de fichiers dépréciée sys.path.append('../Scripts'). Pour plus d’informations sur deafrica_tools, visitez la documentation du module DE Africa Tools””.

Connectez-vous au datacube

Entrez le code suivant et exécutez la cellule pour créer notre objet dc, qui donne accès au datacube.

image2

Votre notebook est maintenant configuré. Ensuite, nous allons charger des données masquées par le nuage en utilisant load_ard().

Chargement des données avec load_ard()

Note

Si vous rencontrez des erreurs lors de l’exécution des cellules, consultez le guide de code de dépannage de la session précédente.

Intéressons-nous à une zone côtière du Ghana. Entrez le code suivant et exécutez-le pour afficher une carte de la zone. Comme précédemment, x désigne la longitude et ``y``la latitude.

Exemple d'entrée et de sortie de display_map.

Dans la nouvelle cellule ci-dessous, entrez le code suivant, puis exécutez-le pour charger les données Sentinel-2. Il générera le texte de sortie Using pixel quality parameters for Sentinel 2 ... (« Utilisation des paramètres de qualité des pixels pour Sentinel 2… »). Le texte de sortie nous indique que nous avons chargé 4 pas de temps.

J'utilise load_ard.

Prenez note de certaines des différences entre dc.load() et load_ard.

  • dc=dc est un paramètre obligatoire pour load_ard(). Cela relie la recherche de données à la connexion du datacube, que nous avons définie dans la configuration du notebook comme dc.

  • Le paramètre pour charger les produits est products (pluriel) et non product comme dans dc.load().

  • Les éléments du produit doivent être listés entre crochets [], ce qui n’est pas nécessaire pour dc.load().

  • min_gooddata signifie “minimum good data” et écarte les observations dont le nombre de pixels de bonne qualité est inférieur à la fraction requise.

Note

s2_l2a signifie Sentinel-2 Level-2A. Le quatrième caractère est un “l” alphabétique minuscule. Vérifiez que vous avez saisi le nom du produit correctement pour éviter les erreurs.

Nous pouvons utiliser le même code de traçage rgb que dans la dernière session pour afficher une image RVB d’un des pas de temps. Commençons par le premier pas de temps, qui a un index de 0.

Tracé d'un RVB du premier pas de temps.

Cela devrait produire une seule image RVB comme indiqué ci-dessous. Que se passe-t-il si vous essayez de changer le numéro index ?

Sortie RVB du premier pas de temps.

Si nous voulons voir les images RVB de tous les pas de temps en une seule fois, nous pouvons remplacer le paramètre index par le paramètre col. Le paramètre col signifie “colonne”. En spécifiant col='time', on crée une ligne d’images pour les pas de temps.

Tracé des RVB de tous les pas de temps.

La sortie devrait ressembler à ceci.

Sortie des RGB de col=time.

Conclusion

Bon travail - vous avez maintenant chargé des données en utilisant load_ard(), qui a un masque automatique de nuages. Nous pouvons voir que les images à différents moments ont une couverture nuageuse différente, donc elles ont été masquées à différents endroits. C’est pourquoi le fait d’avoir des données à différents intervalles de temps peut nous permettre de créer une image composite sans aucun nuage.

Dans la section suivante, nous utiliserons ces données chargées pour créer un composite géomédien.