Calcul du NDVI: partie 1
Cet exercice fait suite à la section précédente. Dans le exercice final de la session précédente, vous avez construit un cahier pour créer une composite géomédienne.
Dans cette section, nous allons créer un nouveau bloc-notes basé sur le bloc-notes de la section précédente. La plupart du code restera inchangé, mais nous changerons la zone d’intérêt et la durée. Nous ajouterons également des étapes pour rééchantillonner le nouvel ensemble de données et créer un géomédian. Dans la section suivante, nous calculerons et tracerons le NDVI.
Note
Nous allons utiliser le notebook que nous avons créé dans la section précédente, Créer un composite géomédien. Si vous n’avez pas encore configuré une copie du notebook appelé Geomedian_composite.ipynb
avec les paquets et fonctions nécessaires, suivez les instructions de la section précédente. Assurez-vous d’avoir terminé toutes les étapes, y compris le chargement de l’ensemble de données Sentinel-2.
Configurer le notebook
Créer une copie du cahier
Avant de passer à l’étape suivante,
Connectez-vous à l’Environnement de test et ouvrez le dossier Training.
Faites une copie du carnet de notes
Geomedian_composite.ipynb
.Renommez le bloc-notes en
Calculate_ndvi.ipynb
.
Voir créer une copie d’un carnet de notes et le renommer pour plus de détails.
Effacer le cahier
Nous devrons supprimer toute sortie des exécutions précédentes du notebook.
Sélectionnez Kernel -> Restart Kernel and Clear All Outputs….
Lorsque vous y êtes invité, sélectionnez Restart.
Lancer le notebook
Ce cahier est encore configuré pour exécuter l’exercice de la Session 3, vous devrez donc suivre les instructions ci-dessous pour le modifier. Travaillez cellule par cellule et faites attention à ce qui doit être modifié.
Mise en place
Exécutez la première cellule, qui contient les packages et les fonctions pour l’analyse. Pas besoin de changer quoi que ce soit ici.
Pour la commande
dc = datacube.Datacube
, changez le nom de l’application en"Calculate_ndvi""
. Cela devrait ressembler à cela :dc = datacube.Datacube(app="Calculate_ndvi")
Chargez les données
Remplacez les valeurs x et y par celles indiquées ci-dessous et exécutez la cellule.
x=(-6.1495, -6.1380) y=(13.9182, 13.9111)
Changez l’heure dans la fonction
load_ard
en("2019-01", "2019-12")
.Supprimez l’option
min_gooddata=0.7
.Si vous avez terminé les étapes 2, 3 et 4, votre cellule de pesée devrait ressembler à
sentinel_2_ds = load_ard( dc=dc, products=["s2_l2a"], x=x, y=y, time=("2019-01", "2019-12"), output_crs="EPSG:6933", measurements=['red', 'green', 'blue'], resolution=(-10, 10), group_by='solar_day')
Exécutez la cellule. La charge doit renvoyer 71 pas de temps.
Tracer les pas temporels
La cinquième cellule du carnet de notes contient une commande rgb
pour tracer les données chargées. Pour correspondre à notre exemple ci-dessous, modifiez cette cellule afin qu’elle corresponde au code ci-dessous :
timesteps = [1, 6, 8]
rgb(sentinel_2_ds, bands=['red', 'green', 'blue'], index=timesteps)
Cela tracera les images pour le 1er, le 6e et le 8e pas de temps des données chargées (rappelez-vous que Python commence à compter à 0). Votre image doit correspondre à celle ci-dessous.
Note
Vous pouvez également exécuter cette cellule plusieurs fois, en expérimentant avec différentes valeurs pour le paramètre timesteps
. La commande load devrait avoir retourné 71 pas de temps, ce qui signifie que les valeurs dans votre liste timesteps
peuvent être n’importe où entre 0
et 70
.
Rééchantillonner l’ensemble de données
Le rééchantillonnage est utilisé pour créer un nouvel ensemble d’heures à intervalles réguliers. En utilisant la méthode de rééchantillonnage, les données peuvent être organisées en jours, mois, trimestriellement (trois mois) ou annuel.
Vous trouverez ci-dessous des exemples de la manière dont les données sont regroupées.
'nD'
- nombre de jours (par exemple,'7D'
pour sept jours)'nM'
- nombre de mois (par exemple,'6M'
pour six mois)'nY'
- nombre d’années (par exemple,'2Y'
pour deux ans)
Suivez les étapes ci-dessous pour rééchantillonner les pas de temps de l’ensemble de données sur trimestriel.
Supprimez le code pour tracer toutes les images RVB:
rgb(sentinel_2_ds, bands=['red', 'green', 'blue'], col='time', size=4)
Dans la cellule effacée, écrivez le code suivant pour rééchantillonner les données et les stocker dans la variable
resample_sentinel_2_ds
:
resample_sentinel_2_ds = sentinel_2_ds.resample(time='3MS')
resample_sentinel_2_ds
décrit comment regrouper les données en segments trimestriels. Nous pouvons maintenant l’utiliser pour calculer le géomédian pour chaque segment trimestriel.
Calculer le géomédian
Pour cette session, au lieu d’appeler xr_geomedian(sentinel_2_ds)
sur le tableau entier comme nous l’avons fait dans l’exercice précédent, nous passons la fonction xr_geomedian
à map
et l’appliquons séparément à chaque groupe rééchantillonné (resample_sentinel_2_ds
).
Remplacer le code existant xr_geomedian
par :
geomedian_resample = resample_sentinel_2_ds.map(xr_geomedian)
Nous pouvons tracer les géomédias de sortie, et voir le changement dans le paysage au cours de l’année. Remplacez le code existant rgb
par :
rgb(geomedian_resample, bands=['red', 'green', 'blue'], col="time", col_wrap=4)
Comparaison des deux ensembles de données
En comparant les deux ensembles de données, pouvez-vous faire la différence avec les résultats ci-dessous?
sentinel_2_ds
résample géométrique
Jetez un coup d’oeil aux dimensions. Le jeu de données brut sentinel_2_ds
a 71 pas de temps chargés, mais après un rééchantillonnage trimestriel comme dans geomedian_resample
, la dimension temporelle est maintenant de 4. Cela est logique car l’année a été divisée en quatre trimestres.
Conclusion
Toutes nos félicitations! Vous avez modifié avec succès un bloc-notes pour créer un composite géomédian trimestriel en rééchantillonnant les données Sentinel-2.
Si vous souhaitez tester davantage, essayez d’exécuter le code avec différentes valeurs de rééchantillonnage. Avez-vous appris quelque chose d’intéressant à partager avec nous?
Dans la section suivante, nous continuerons à travailler avec ce cahier pour calculer les valeurs NDVI pour chacun de nos géomédiens trimestriels.