Accueil Informatique Installer une software stack météo – Partie 2 – Outils du NWS


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.

Exemple de contenu d’un fichier GRIB, une fois tracé

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.