Code
Dépôt de code
Le dépôt GitHub de la PG-MCEDIF (en anglais) contient le code actualisé des modules MCEDIF2025 dans trois langages de programmation : R, C et Python. Les trois langues contiennent les mêmes équations et exécutent les mêmes tâches. Le choix dépend des exigences de votre système.
Documentation
Code et documentation technique relatifs au dépôt de code de la PG-MCEDIF. L’information comprend des précisions concernant les fichiers nécessaires à l’exécution de chaque langage de programmation.
Remarque : bien que certains liens vers la MCEDIF actuelle et la MCEDIF2025 se trouvent ici et dans la section sur le transfert de technologie, de nombreuses autres sources d’information et de publications concernant l’utilisation de la MCEDIF et la documentation historique se trouvent sur le dépôt ouvert de la S et T de RNCan (DOST).
Informations sur le code IFM2025
La ressource suivante décrit les fichiers et les exigences nécessaires pour générer des sorties pour la prochaine génération du système d’IFM (ci-après dénommé IFM2025).
L’IFM2025 fait partie d’un programme plus vaste visant à mettre à jour la méthode canadienne d’évaluation des dangers d’incendie de forêt (MCEDIF). Trois langages de programmation différents sont disponibles : R, Python et C. Ces trois langages produisent les mêmes résultats, vous pouvez donc choisir celui qui répond à vos besoins.
Les fichiers, les entrées, les formats et les sorties sont décrits ci-dessous de manière générale pour les trois langues. Tout écart par rapport à un langage spécifique est indiqué.
Le code IFM2025 a été écrit et testé à l’origine en utilisant des tableaux de données et des fichiers .csv comme entrées. Ainsi, la sortie génère des tableaux de données simples qui peuvent ensuite être exportés. Les utilisateurs peuvent configurer les types de fichiers d’entrée et de sortie en fonction de leurs propres flux de données.
Un ensemble de données de test est disponible en ligne ici :
https://github.com/nrcan-cfs-fire/cffdrs-ng/blob/main/data/wx_prf.csv (en anglais)
Remarque sur les termes :
Les calculs du système d’IFM ont été conçus à l’origine pour être effectués à partir des données enregistrées par les stations météorologiques locales. Par conséquent, les descriptions ci-dessous font référence aux données des stations météorologiques. En réalité, toutes les données météorologiques qui présentent une estimation représentative du temps selon les paramètres standard requis pour l’entrée du système IFM peuvent être utilisées (p. ex. données maillées et données de prévision). Voir le guide météo afin d’obtenir une description des normes d’entrée des données météorologiques, pour le système IFM.
Exécuter l’IFM2025
Page principale où se trouve tout le code relatif au développement de la PG-MCEDIF :
https://github.com/nrcan-cfs-fire/cffdrs-ng/tree/main (en anglais)
Pour chaque langage de programmation, deux scripts sont nécessaires afin de générer des sorties d’IFM2025 :
-
IFM de PG : Contient les fonctions et les équations permettant de générer des sorties d’IFM2025.
R : NG_FWI.r
Python : NG_FWI.py
C : NG_FWI.c -
util : Inclut des fonctions de base qui ne font pas partie des équations de l’IFM2025, mais qui génèrent de l’information intermédiaire pour le calcul des composantes de l’IFM2025 (p. ex. heure du lever et du coucher du soleil et nombre d’heures d’ensoleillement). Ce script comprend également le processus de génération du résumé quotidien.
R : util.r
Python : util.py
C : util.c, util.h
Progiciels
Chaque langage est associé à des dépendances de bibliothèque ou de progiciel. Il doit être installé avant l’exécution de NG_FWI.
R : lubridate et data.table
Python : datetime, logging, math, numpy, pandas, os.path, sys
C : stdlib.h, stdbool.h, string.h
Intrants
Les intrants de l’IFM2025 comprennent des variables météorologiques horaires et une estimation du traitement. Pour en savoir plus sur les intrants du système d’IFM, cliquez ici.
En-têtes de colonnes et structure des données d’entrée :
Colonne | Description |
---|---|
id |
Identifiant de la station météorologique; numéro unique pour la station, texte ou numéro |
lat |
Latitude. Emplacement de la station météorologique, en degrés décimaux (double précision) |
long |
Longitude. Emplacement de la station météorologique, en degrés décimaux (double précision) |
yr |
Année de relevé de la station météorologique (AAAA) |
mon |
Mois du relevé de la station météorologique; M ou MM (doit être cohérent dans l’ensemble du jeu de données) |
day |
Jour du relevé de la station météorologique, DD ou D (doit être cohérent dans l’ensemble du jeu de données) |
hr |
Heure de la lecture de la station météorologique, nombre en heure militaire (0-23) |
temp |
Température en °Celsius, en chiffre |
rh |
Humidité relative en pourcentage, en chiffre (0-100) |
ws |
Vitesse du vent en km/h, en chiffre |
prec |
Précipitations (pluie) mesurées en millimètres (mm), en chiffre |
solrad |
Rayonnement solaire mesuré en kW/m2 (kilowatts par mètre carré) pour les codes des herbacés, en chiffre. Entrée OPTIONNELLE, l’IFM2025 génère la méthode par défaut. (MCEDIF rayonnement solaire IFM (draft)) |
percent_cured |
Pourcentage d’herbacés fanés dans les prairies ouvertes, mesuré en pourcentage pour les codes d’herbacés, en chiffre (0-100). Entrée OPTIONNELLE, l’IFM2025 génère la méthode par défaut |
En plus des variables météorologiques, la fonction permettant de générer des sorties d’IFM2025 horaires nécessite le fuseau horaire où la station météorologique est située et la valeur de démarrage pour les codes d’humidité (p. ex. ICL de 85, IH [indice de l’humus] de 6 et IS [indice de sécheresse] de 15). Voir la section suivante pour savoir où ils sont utilisés.
Les en-têtes de colonne peuvent être en minuscules ou en majuscules, tandis que le format de sortie est paramétré en majuscules.
Calcul des composants du système d’IFM et fichier de synthèse
La fonction du fichier NG_FWI est conçue pour générer des sorties du système d’IFM pour une station à la fois, mais peut s’adapter à une entrée correctement formatée pour plusieurs stations, dans les versions R et Python. Exception : la version C nécessite la saisie d’une seule année pour une station donnée.
La fonction permettant de générer des sorties d’IFM2025 se trouve dans le fichier NG_FWI et se présente comme suit :
R :
hFWI(df_wx, timezone, ffmc_old, dmc_old, dc_old)
Paramètres | Description |
---|---|
df_wx |
cadre de données ou tableau formaté (peut avoir plusieurs années et stations, doit être séquentiel dans le temps au cours d’une année donnée) |
timezone |
fuseau horaire dans lequel se trouve la station météorologique, exprimé en nombre d’heures de décalage par rapport à UTC (p. ex., pour les stations situées à l’heure normale du Centre, le fuseau horaire est fixé à -6) |
ffmc_old |
la valeur initiale du code d’humidité fine des combustibles (p. ex. 85, valeur par défaut) |
dmc_old |
la valeur initiale de l’indice de l’humus (IH) (p. ex. 6, valeur par défaut) |
dc_old |
la valeur initiale de l’indice de sécheresse (IS) (p. ex. 15, valeur par défaut) |
Python :
hFWI(df_wx, timezone, ffmc_old=85, dmc_old=6, dc_old=15, silent=False)
Paramètre | Description |
---|---|
df_wx |
cadre de données ou tableau formaté (peut avoir plusieurs années et stations, doit être séquentiel dans le temps au cours d’une année donnée) |
timezone |
fuseau horaire dans lequel se trouve la station météorologique, exprimé en nombre d’heures de décalage par rapport à UTC (p. ex., pour les stations situées à l’heure normale du Centre, le fuseau horaire est fixé à -6) |
ffmc_old |
la valeur initiale du code d’humidité fine des combustibles (p. ex. 85, valeur par défaut) |
dmc_old |
la valeur initiale de l’indice de l’humus (IH) (p. ex. 6, valeur par défaut) |
dc_old |
la valeur initiale de l’indice de sécheresse (IS) (p. ex. 15, valeur par défaut) |
silent |
imprimer les messages de progression afin de surveiller le script. Vrai ou Faux; Faux par défaut |
C :
La version C peut être exécutée à partir de la ligne de commande avec les arguments suivants, dans l’ordre :
Code | Description |
---|---|
local GMToffset |
|
starting FFMC |
|
starting DMC |
|
starting DC |
|
input file |
nom du fichier .csv contenant les données d’une seule station au cours d’une année |
output file |
nom du fichier dans lequel les résultats doivent être enregistrés |
Résultats
Des colonnes sont ajoutées au tableau des données d’entrée et un deuxième tableau de données récapitulatives est généré.
Colonnes de sortie qui sont ajoutées au tableau des données météorologiques horaires :
Colonne | Description |
---|---|
timestamp |
date et heure des variables météorologiques et d’IFM. Format : AAAA-MM-JJ HH:MM:SS. (pas en langage C) |
date |
AAAA-MM-JJ Type de date (sans hh:mm:ss). (pas en langage C) |
sunrise |
Heure du lever du soleil en fonction de la latitude, de la longitude et de la date (heure décimale). (pas en langage C) |
sunset |
Heure du coucher du soleil en fonction de la latitude, de la longitude et de la date (heure décimale). (pas en langage C) |
sunlight_hours |
Nombre d’heures entre le lever et le coucher du soleil (heure décimale). (pas en langage C) |
solrad |
Rayonnement solaire mesuré en kW/m2 (kilowatts par mètre carré) pour les codes d’herbacés, généré automatiquement s’il n’est pas indiqué dans l’entrée (en chiffre). (doit être calculé à l’aide de make_inputs.c s’il n’est pas donné) |
percent_cured |
pourcentage de combustibles fanés (morts) dans les prairies, généré automatiquement s’il n’est pas indiqué dans l’entrée. Utilisé exclusivement dans les calculs relatifs aux prairies. Pourcentage sous forme de nombre (0-100). (doit être calculé à l’aide de make_inputs.c s’il n’est pas donné) |
grass_fuel_load |
La quantité de combustible herbacé standard est intégrée aux codes Python et R, soit 0,35 kg/m2. (doit être calculée à l’aide de make_inputs.c si elle n’est pas donnée, elle génère une colonne associée à la valeur standard) |
ffmc |
Indice du combustible léger (ICL) |
dmc |
Indice de l'humus (IH) |
dc |
Indice de sécheresse (IS) |
isi |
Indice de propagation initiale (IPI) |
bui |
Indice du combustible disponible (ICD) |
fwi |
Indice forêt-météo (IFM) |
dsr |
|
gfmc |
Indice d'humidité de l'herbe (IHH) |
gsi |
Indice de propagation dans l'herbe (IPH) |
gfwi |
Indice du danger d'incendie pour l'herbe (IDIH) |
Les résultats horaires d’IFM2025 peuvent être résumés de différentes manières, et pour inciter les utilisateurs à réfléchir aux résumés qui seraient pertinents dans leur situation, une fonction du fichier « util » résume la journée en quelques mesures de base.
Fonction permettant de générer des résumés quotidiens :
R (trouvé dans util.r) :
generate_daily_summaries <- function(hourly_data) {}
Lorsque : hourly_data = le cadre de données de sortie généré par NG_FWI
Python (trouvé dans util.py) :
def generate_daily_summaries(hourly_data):
Lorsque : hourly_data = les données de sortie générées par NG_FWI
C (trouvé dans util.h) :
hourly_data = le cadre de données de sortie généré par NG_FWI
Résumé quotidien des sorties :
Colonne | Description |
---|---|
wstnid |
identifiant de la station météorologique, ou identifiant unique de la station météorologique |
year |
année, AAAA, en chiffre (p. ex. 2024) |
mon |
mois, M, en chiffre (p. ex. 3) |
day |
jour, J, en chiffre (p. ex. 8) |
sunrise |
Heure du lever du soleil. Format de l’horodatage HH:MM:SS, en heure militaire (p. ex. 06:30:55) |
sunset |
Heure du coucher du soleil. Format de l’horodatage HH:MM:SS, en heure militaire (p. ex. 19:45:05) |
peak_time |
Heure, H, en heure militaire (0-23), en format numérique. Heure à laquelle on peut s’attendre à un comportement maximal du feu, exprimé par un indice de propagation initiale (IPI) modifié (voir les définitions de wind_speed_smoothed et peak_isi_smoothed cidessous). Si l’IPI de pointe (du champ peak_isi_smoothed) est inférieur à cinq, l’heure de pointe est fixée à 17 heures |
duration |
nombre d’heures, en format numérique. Peut également être appelé durée d’une fenêtre de combustion. Il s’agit du nombre d’heures dans la journée où l’on peut s’attendre à un incendie actif (lorsque l’IPI modifié est égal ou supérieur à cinq). Si l’IPI n’a pas atteint 5 ou plus, la valeur de la durée de la fenêtre de coombustion est de zéro |
wind_speed_smoothed |
Vitesse du vent (km/h), double précision. La vitesse horaire du vent enregistrée en fonction d’une moyenne de 10 minutes peut être erronée d’une heure à l’autre, ce qui rend difficile l’estimation de la durée d’une fenêtre de brûlage. Pour estimer la durée d’une fenêtre de brûlage et l’heure de pointe, la vitesse du vent horaire est ajustée et l’PSI est recalculé en fonction de la vitesse du vent ajustée et de l’ICLitesse du vent (km/h), double précision. La vitesse horaire du vent enregistrée en fonction d’une moyenne de 10 minutes peut être erronée d’une heure à l’autre, ce qui rend difficile l’estimation de la durée d’une fenêtre de brûlage. Pour estimer la durée d’une fenêtre de brûlage et l’heure de pointe, la vitesse du vent horaire est ajustée et l’PSI est recalculé en fonction de la vitesse du vent ajustée et de l’ICL |
peak_isi_smoothed |
Indice de propagation initiale (IPI) maximal recalculé en fonction de l’ICL et de la vitesse du vent ajustée à partir de wind_speed_smoothed; en chiffre pour une double précision. En chiffre, double précision |
ffmc |
Indice du combustible léger correspondant l’ICL à l’heure de pointe. En chiffre, double précision |
dmc |
Indice de l'humus (IH) |
dc |
Indice de sécheresse (IS) |
isi |
Indice de propagation initiale (IPI) |
bui |
Indice du combustible disponible (ICD) |
fwi |
Indice forêt-météo (IFM) |
dsr |
|
gfmc |
Indice d'humidité de l'herbe (IHH) |
gsi |
Indice de propagation dans l'herbe (IPH) |
gfwi |
Indice du danger d'incendie pour l'herbe (IDIH) |
Licence
GPL-2.0 Licence (en anglais)