Installer une software stack météo – Partie 2 – Outils du NWS
Le NWS (National Weather Service), département de la NOAA (National Oceanographic and Atmospheric Administration), administration américaine, fournit deux outils pour lire les fichiers de données issus de modèles météo. Indispensables à notre toolbox, nous allons les installer et en décrire une utilisation basique.

wgrib
Le format GRIB est l’un des formats historiques les plus utilisés pour embarquer des données météo organisées en grille. L’outil wgrib est un couteau suisse permettant d’extraire des données d’un fichier. Bien que le format GRIB en version 1 soit en perte de vitesse au profit du GRIB2, il est toujours appréciable d’avoir sous la main un outil capable de le décoder.
Installation via conda
Nous avons installé anaconda pour gérer l’environnement python. Ceci nous simplifie la tâche : wgrib peut être installé très facilement via conda. L’intérêt est évident : pas besoin de compiler ! Mais vous êtes dépendant du mainteneur du package pour les versions récentes. C’est en tout cas la méthode de choix si vous ne souhaitez pas vous prendre la tête. Il suffit juste de taper la commande :
conda install -c conda-forge wgrib
Compilation manuelle
Pour les plus courageux, ou ceux qui veulent la toute dernière version immédiatement, voici la procédure pour le compiler vous-même.
Home page du projet wgrib : https://www.cpc.ncep.noaa.gov/products/wesley/wgrib.html
Le code source est constitué d’un seul fichier C, la compilation est donc simple et rapide :
# Création d'un dossier cd $METEO/software mkdir -p noaa/wgrib cd noaa/wgrib # Téléchargement wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib/wgrib.c # Compilation gcc wgrib.c -o wgrib
Si aucune erreur ne s’est produite, vous avez un fichier “wgrib” exécutable créé dans le dossier :
$ ls -l total 1460 -rwxr-xr-x 1 nicolas nicolas 868816 avril 24 14:34 wgrib -rw-rw-r-- 1 nicolas nicolas 622144 sept. 12 2019 wgrib.c
Nous allons simplement l’installer dans un dossier de notre environnement.
mkdir -p $METEO/noaa/bin cp wgrib $METEO/noaa/bin
Il ne nous reste plus qu’à ajouter le dossier bin à notre PATH pour que la commande soit toujours accessible. Tapez la commande suivante, et pour rendre la modification persistante, ajoutez-là à la fin du fichier ~/.bashrc (chemin à adapter à votre dossier) :
export PATH=/path/to/Meteo/noaa/bin:$PATH
N’oubliez pas de relancer votre shell pour prendre le nouveau PATH en compte. Maintenant, voyons un peu comment nous en servir !
Exemple d’utilisation
La commande wgrib permet de prime abord de faire l’inventaire du contenu d’un fichier. Supposons que nous ayons récupéré un fichier, il suffit de taper :
wgrib fichier.grb
Exemple de sortie :

Moyennant un peu d’interprétation, on voit que le fichier contient les champs UGRD et VGRD prévus de 6h à 54h à partir du 18/09/2005. Ce sont les champs du vent à 10 mètres comme on peut le voir. D’autres informations sont affichées mais nous ne rentrerons pas dans les détails. Notez le numéro de champ au début de chaque ligne. Le deuxième nombre correspond à la position en octets du champ depuis le début du fichier.
Il est possible d’extraire des données, en utilisant plusieurs méthodes :
# Par numéro de champ wgrib fichier.grb -d numéro -o sortie.bin # Par position dans le fichier wgrib fichier.grb -p position -o sortie.bin # En utilisant la ou les ligne d'inventaire en entrée souhaitées wgrib fichier.grb | grep ":UGRD:" | wgrib -i fichier.grb -o sortie.bin
L’option -i permet de prendre en entrée une ou plusieurs lignes d’inventaire que l’on souhaite extraire : c’est donc une méthode de choix pour scripter facilement des traitements ciblant des champs précis.
Les données sont alors décompactées dans un fichier binaire brut, sortie.bin, compatible avec le langage FORTRAN. Il est possible d’extraire vers d’autres formats selon l’utilisation que l’on souhaite faire du résultat. Voici les deux options qui me semblent les plus utiles au quotidien :
- -text : extraction au format texte, la première ligne donne les dimensions de la grille, et ensuite les nombres sont enchainés un par un sur chaque ligne. Cela permet d’exploiter les données de façon très simple avec à peu près nimporte quoi (un tableur, un langage de script…)
- -grib : extraction au format GRIB. Peut être très utile afin de constituer un fichier plus petit ne contenant que les champs qui vous sont utiles.
wgrib2
Le format GRIB a un successeur, fort logiquement appelé le GRIB2. Plus efficient, il est de nos jours utilisé à la place du GRIB en première version. Mais ce format n’est pas backward-compatible, et, par conséquent, de nouveaux outils sont nécessaires pour l’exploiter : wgrib2 est donc le couteau suisse qui lui est associé.
Installation via conda
Là encore, nous avons le choix d’installer wgrib2 via conda, pour ceux qui veulent se simplifier la vie :
conda install -c conda-forge wgrib2
Compilation manuelle
Mais il est aussi possible de le compiler soi-même.
Site du projet : https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/
La procédure de compilation est la suivante :
# Obtention du logiciel cd $METEO/software/noaa wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz tar xvfz wgrib2.tgz cd wgrib2 # Compilation make
Dans le dossier wgrib2, vous devriez avoir un fichier exécutable wgrib2 de créé si tout va bien. De la même manière nous allons le copier dans le dossier noaa/bin existant :
$ cp wgrib2/wgrib2 $METEO/noaa/bin
Comme nous l’installons au même endroit, si vous avez compilé wgrib auparavant, alors il devrait être dans votre PATH. Sans plus attendre, regardons comment l’utiliser.
Exemple d’utilisation
En réalité bien peu de surprise, il fonctionne de la même manière pour faire l’inventaire :
wgrib2 fichier.grb2
Voici un exemple en affichant le contenu d’un fichier du modèle ICON :

Ici, nous n’avons qu’un seul champ par fichier, et l’on voit que c’est la pression au niveau de la mer. Pour extraire les données, nous procédons de la mème manière également, si ce n’est que nous n’indiquons plus d’option -o. Exemple au format texte :
# Par numéro de champ wgrib2 fichier.grb2 -d numéro -text sortie.bin # Par position dans le fichier wgrib2 fichier.grb2 -p position -text sortie.bin # En utilisant la ou les ligne d'inventaire en entrée souhaitées wgrib2 fichier.grb | grep ":PRMSL:" | wgrib2 -i fichier.grb2 -text sortie.bin
Mais wgrib2 propose bien plus d’options. Il permet par exemple de limiter l’extraction à un point précis de latitude – longitude donnée. Exemple pour extraire la pression au niveau de la mer pour Blois d’un fichier du GFS :
# wgrib2 gfs.t06z.pgrb2.0p50.f003 | grep PRMSL | wgrib2 -i gfs.t06z.pgrb2.0p50.f003 -lon 47.5833 1.33 586:98916253:lon=47.500000,lat=1.500000,val=100883
Il existe un très grand nombre de fonctionnalités pour cette commande, ce qui dépasse largement le cadre de cette initiation. Je ne saurais que vous recommander d’aller consulter la documentation pour en savoir d’avantage.
Conclusion
Nous venons de compléter notre collection de logiciels météo avec deux outils permettant d’extraire des données en grille. Avec ces outils, nous disposons déjà de briques fort utiles pour constituer des traitements de données.
Laisser un commentaire