Décodage des données à partir des formats binaires de l'OMM
Objectifs d'apprentissage !
À la fin de cette session pratique, vous serez capable de :
- exécuter un conteneur Docker pour l'image "demo-decode-eccodes-jupyter"
- exécuter les notebooks Jupyter d'exemple pour décoder les données aux formats GRIB2, NetCDF et BUFR
- découvrir d'autres outils pour décoder et visualiser les formats de codes pilotés par table (TDCF) de l'OMM
Introduction
Les formats binaires de l'OMM tels que BUFR et GRIB sont largement utilisés dans la communauté météorologique pour l'échange de données d'observation et de modélisation, et nécessitent généralement des outils spécialisés pour décoder et visualiser les données.
Après avoir téléchargé des données depuis WIS2, vous devrez souvent les décoder pour pouvoir les exploiter davantage.
Diverses bibliothèques de code sont disponibles pour écrire des scripts ou des programmes permettant de décoder les formats binaires de l'OMM. Il existe également des outils offrant une interface utilisateur pour décoder et visualiser les données sans avoir besoin de programmer un logiciel.
Dans cette session pratique, nous démontrons comment décoder 3 types de données différents à l'aide d'un notebook Jupyter :
- GRIB2 contenant des données pour une prévision d'ensemble globale réalisée par le système CMA Global Regional Assimilation PrEdiction System (GRAPES)
- BUFR contenant des données de trajectoire de cyclone tropical issues du système de prévision d'ensemble de l'ECMWF
- NetCDF contenant des données sur les anomalies de température mensuelles
Décodage des données téléchargées dans un notebook Jupyter
Pour démontrer comment vous pouvez décoder les données téléchargées, nous allons démarrer un nouveau conteneur en utilisant l'image 'decode-bufr-jupyter'.
Ce conteneur démarrera un serveur de notebook Jupyter sur votre instance, qui inclut la bibliothèque ecCodes que vous pouvez utiliser pour décoder les données BUFR.
Nous utiliserons les notebooks d'exemple inclus dans ~/exercise-materials/notebook-examples
pour décoder les données téléchargées des trajectoires de cyclones.
Pour démarrer le conteneur, utilisez la commande suivante :
docker run -d --name demo-decode-eccodes-jupyter \
-v ~/wis2box-data/downloads:/root/downloads \
-p 8888:8888 \
-e JUPYTER_TOKEN=dataismagic! \
ghcr.io/wmo-im/wmo-im/demo-decode-eccodes-jupyter:latest
Voici une explication de la commande ci-dessus :
docker run -d --name demo-decode-eccodes-jupyter
démarre un nouveau conteneur en mode détaché (-d
) et le nommedemo-decode-eccodes-jupyter
-v ~/wis2box-data/downloads:/root/downloads
monte le répertoire~/wis2box-data/downloads
de votre VM dans/root/downloads
du conteneur. C'est ici que sont stockées les données téléchargées depuis WIS2-p 8888:8888
mappe le port 8888 de votre VM au port 8888 du conteneur. Cela rend le serveur de notebook Jupyter accessible depuis votre navigateur web à l'adressehttp://YOUR-HOST:8888
-e JUPYTER_TOKEN=dataismagic!
définit le jeton requis pour accéder au serveur de notebook Jupyter. Vous devrez fournir ce jeton lorsque vous accéderez au serveur depuis votre navigateurghrc.io/wmo-im/demo-decode-eccodes-jupyter:latest
spécifie l'image utilisée par le conteneur, qui inclut les notebooks Jupyter d'exemple utilisés dans les exercices suivants
À propos de l'image demo-decode-eccodes-jupyter
L'image demo-decode-eccodes-jupyter
a été développée pour cette formation. Elle utilise une image de base incluant la bibliothèque ecCodes et ajoute un serveur de notebook Jupyter, ainsi que des packages Python pour l'analyse et la visualisation des données.
Le code source de cette image, y compris les notebooks d'exemple, est disponible sur wmo-im/demo-decode-eccodes-jupyter.
Une fois le conteneur démarré, vous pouvez accéder au serveur de notebook Jupyter sur votre VM étudiante en naviguant à l'adresse http://YOUR-HOST:8888
dans votre navigateur web.
Vous verrez un écran vous demandant d'entrer un "Mot de passe ou jeton".
Fournissez le jeton dataismagic!
pour vous connecter au serveur de notebook Jupyter (sauf si vous avez utilisé un jeton différent dans la commande ci-dessus).
Après vous être connecté, vous devriez voir l'écran suivant listant les répertoires dans le conteneur :
Double-cliquez sur le répertoire example-notebooks
pour l'ouvrir. Vous devriez voir l'écran suivant listant les notebooks d'exemple :
Vous pouvez maintenant ouvrir les notebooks d'exemple pour décoder les données téléchargées.
Exemple de décodage GRIB2 : Données GEPS de CMA GRAPES
Ouvrez le fichier GRIB2_CMA_global_ensemble_prediction.ipynb
dans le répertoire example-notebooks
:
Lisez les instructions dans le notebook et exécutez les cellules pour décoder les données téléchargées pour la prévision d'ensemble globale. Exécutez chaque cellule en cliquant dessus, puis sur le bouton d'exécution dans la barre d'outils ou en appuyant sur Shift+Enter
.
À la fin du notebook, vous devriez voir une carte affichant la pression réduite au niveau moyen de la mer (MSL) :
Question
Le résultat affiche la température à 2 mètres au-dessus du sol. Comment mettriez-vous à jour le notebook pour afficher la vitesse du vent à 10 mètres au-dessus du sol ?
Cliquez pour révéler la réponse
Pour mettre à jour le notebook, faites ce qui suit.
Exemple de décodage BUFR : Trajectoires de cyclones tropicaux
Ouvrez le fichier BUFR_tropical_cyclone_track.ipynb
dans le répertoire example-notebooks
:
Lisez les instructions dans le notebook et exécutez les cellules pour décoder les données téléchargées des trajectoires de cyclones tropicaux. Exécutez chaque cellule en cliquant dessus, puis sur le bouton d'exécution dans la barre d'outils ou en appuyant sur Shift+Enter
.
À la fin, vous devriez voir un graphique de la probabilité d'impact des trajectoires de cyclones tropicaux :
Question
Le résultat affiche la probabilité prédite de trajectoire de tempête tropicale dans un rayon de 200 km. Comment mettriez-vous à jour le notebook pour afficher la probabilité prédite dans un rayon de 300 km ?
Cliquez pour révéler la réponse
Pour mettre à jour le notebook afin d'afficher la probabilité prédite de trajectoire de tempête tropicale dans une distance différente, vous pouvez mettre à jour la variable distance_threshold
dans le bloc de code qui calcule la probabilité d'impact.
Pour afficher la probabilité prédite dans un rayon de 300 km :
# définir le seuil de distance (en mètres)
distance_threshold = 300000 # 300 km en mètres
Ensuite, réexécutez les cellules du notebook pour voir le graphique mis à jour.
Décodage des données BUFR
L'exercice que vous venez de réaliser fournit un exemple spécifique de décodage des données BUFR à l'aide de la bibliothèque ecCodes. Différents types de données peuvent nécessiter des étapes de décodage différentes, et vous devrez peut-être consulter la documentation relative au type de données que vous traitez.
Pour plus d'informations, veuillez consulter la documentation ecCodes.
Exemple de décodage NetCDF : Anomalies de température mensuelles
Ouvrez le fichier NetCDF4_monthly_temperature_anomaly.ipynb
dans le répertoire example-notebooks
:
Lisez les instructions dans le notebook et exécutez les cellules pour décoder les données téléchargées des anomalies de température mensuelles. Exécutez chaque cellule en cliquant dessus, puis sur le bouton d'exécution dans la barre d'outils ou en appuyant sur Shift+Enter
.
À la fin, vous devriez voir une carte des anomalies de température :
Décodage des données NetCDF
NetCDF est un format flexible qui, dans cet exemple, rapporte les valeurs de la variable 'anomaly' selon les dimensions 'lat' et 'lon'. Différents ensembles de données NetCDF peuvent utiliser des noms de variables et des dimensions différents.
Utilisation d'autres outils pour visualiser et décoder les formats binaires de l'OMM
Les notebooks d'exemple ont démontré comment vous pouvez décoder les formats binaires couramment utilisés de l'OMM avec Python.
Vous pouvez également utiliser d'autres outils pour décoder et visualiser les formats de codes pilotés par table de l'OMM sans avoir besoin de programmer, tels que :
- Panoply - une application multiplateforme qui trace des tableaux géo-référencés et autres à partir de NetCDF, HDF, GRIB et autres ensembles de données
- ECMWF Metview - une application météorologique pour l'analyse et la visualisation des données, qui prend en charge les formats GRIB et BUFR
- Integrated Data Viewer (IDV) - un framework logiciel gratuit basé sur Java pour analyser et visualiser les données géoscientifiques, y compris les formats GRIB et NetCDF
Conclusion
Félicitations !
Au cours de cette session pratique, vous avez appris à :
- exécuter un conteneur Docker pour l'image "demo-decode-eccodes-jupyter"
- exécuter les notebooks Jupyter d'exemple pour décoder les données aux formats GRIB2, NetCDF et BUFR