Données climatiques et hydrologiques - IRM
Les données journalières historiques proviennent de l’Institut Royal Météorologique de Belgique (IRM) et sont disponibles en open data pour le milieu académique. Si vous êtes dans ces conditions, vous pouvez les consulter et les télécharger à partir du site officiel de l’IRM : https://opendata.meteo.be/
Les licences d’utilisation sont disponibles sur le site de l’IRM.
D’autres données sont disponibles en accès libre, que ce soit sur le site https://opendata.meteo.be/ ou via leur serveur FTP : ftp://opendata.meteo.be/.
Il s’agit notamment des fichiers Excel (ou PDF) des données de précipitations extrêmes (QDF, coeffciients de Montana…) ou de statistiques climatiques établies pour chaque commune.
[1]:
import _add_path # for debugging purposes only - must be removed in production
from pathlib import Path
from IPython.display import HTML
from datetime import datetime as dt
from datetime import timezone as tz
from wolfhece.hydrology.hyetograms import ClimateData_IRM # Class to handle climate data from IRM
Instanciation de la classe
Sur base du répertoiree de stockage des données climatiques.
En l’absence de répertoire, on pointe sur les serveurs internes du HECE-ULiège. Il est donc impossible d’y avoir accès de cette manière en dehors de l’Institution.
[2]:
cd = ClimateData_IRM()
Dessin des points de données
et des surfaces associées
[3]:
%matplotlib inline
fig, ax = cd.plot()

Lecture des données climatiques
soit sur base d’une année et d’un mois de départ et d’une année et d’un mois de fin.
soit ‘all’ pour toutes les données disponibles –> le chargement peut être long
[4]:
cd.read_data(start_yearmonth=(2025,5), end_yearmonth=(2025,6), all = False)
Manipulation des données
Les données sont dans un Pandas DataFrame, ce qui permet de les manipuler facilement.
Le DataFrame est accessible via l’attribut data
de l’instance de la classe ClimateData_IRM
.
[5]:
cd._data.day.min(), cd._data.day.max()
[5]:
(Timestamp('2025-05-01 00:00:00+0000', tz='UTC'),
Timestamp('2025-06-30 00:00:00+0000', tz='UTC'))
Variables disponibles
[6]:
cd.variables
[6]:
['day',
'temp_max',
'temp_min',
'temp_avg',
'precip_quantity',
'humidity_relative',
'pressure',
'sun_duration',
'short_wave_from_sky',
'evapotrans_ref']
Trouver le pixelID sur base d’un coordonnée en Lambert 72
[8]:
cd.find_pixelid_from_X_Y(X = 226000, Y = 22500)
[8]:
np.int64(1)
Tracer un hyétogramme pour une coordonnée en Lambert 72
[8]:
fig, ax =cd.plot_hyetogram(position = (169930, 123560))
fig.set_size_inches(15, 7)

Tracer une carte 2D des données pour une date spécifique
La date doit être fournie au format datetime.datetime
en timezone UTC.
[7]:
cd.plot_spatial_attribute(date = dt(2025, 5, 12, tzinfo=tz.utc), variable = 'precip_quantity')
[7]:
(<Figure size 640x480 with 1 Axes>,
<Axes: title={'center': 'Spatial distribution of precip_quantity at 2025-05-12'}>)

Créer une animation d’une variable
La routine retourne un objet FuncAnimation
de Matplotlib qui peut être utilisé pour afficher l’animation dans un notebook Jupyter ou sauvegardé en tant que fichier vidéo.
[8]:
ani = cd.animation_spatial_attribute('precip_quantity')

Visualisation de l’animation
On peut exploiter la fonction HTML
de IPython pour afficher l’animation dans un notebook Jupyter après l’avoir convertie en HTML5.
ATTENTION : Cette étape peut prendre du temps en fonction de la taille de l’animation et de la puissance de votre machine. Il peut être préférable de sauvegarder l’animation dans un fichier vidéo et de l’afficher avec un lecteur vidéo externe.
[9]:
HTML(ani.to_html5_video())
[9]: