Code
Référentiel
Le référentiel GitHub cffdrs-ng (en anglais) contient le code à jour des modules MCEDIF2025 dans trois langages de programmation : R, Python et C. Les trois langages contiennent les mêmes équations et effectuent les mêmes tâches. Vous pouvez choisir celui qui vous convient le mieux en fonction de la configuration de votre système.
Indice forêt-météo 2025
L'indice canadien de risque d'incendie de forêt (IFM) est un sous-système important du MCEDIF. L'IFM2025 est la prochaine génération de la méthode IFM correspondant au MCEDIF2025. On décrit ci-après les fichiers, les intrants, les paramètres et les résultats de manière générale pour les trois langues, en soulignant les variations propres à chacune.
Scripts
Chaque langage de programmation dispose de trois scripts nécessaires à la génération des résultats IFM2025 :
-
« NG_FWI » contient les fonctions et les équations permettant de générer les résultats IFM2025
R : NG_FWI.r
Python : NG_FWI.py
C : NG_FWI.c -
« util » comprend les fonctions de base qui ne font pas partie des équations FWI2025, mais qui génèrent des informations intermédiaires pour le calcul des composants FWI2025 (par ex. heure du lever et du coucher du soleil, nombre d'heures d'ensoleillement)
R : util.r
Python : util.py
C : util.c, util.h -
« daily_summaries » comprend le processus de génération du résumé quotidien des résultats
R : daily_summaries.r
Python : daily_summaries.py
C : (en cours de développement)
Packages
Les scripts IFM2025 nécessitent différents ensembles de bibliothèques ou de packages spécifiques à chaque langage. Ceux-ci doivent être installés avant d'exécuter « NG_FWI ».
R : lubridate
, data.table
Python : datetime
, logging
, math
, numpy
, pandas
, os.path
, sys
C : stdlib.h
, stdbool.h
, string.h
Pour commencer
Le référentiel GitHub cffdrs-ng (en anglais) comprend également un script tutoriel et des données de test. Consultez la section Tutoriels#IFM horaire pour obtenir un aperçu étape par étape du flux de travail avec des données horaires. La documentation ci-dessous fournit des détails sur les fonctions spécifiques et les exigences en matière de données.
Format
Le code IFM2025 est écrit et testé à l'aide de données d'intrant sous forme de tableau/matrice, généralement importées sous forme de fichiers CSV (valeurs séparées par des virgules, .csv). Les résultats sont également présentés sous la même forme de tableau/matrice. Les utilisateurs peuvent configurer les types de fichiers d'intrant et de résultat en fonction de leurs flux de données individuels.
Documentation
Indice horaire de risque d'incendie
La fonction hFWI()
du fichier « NG_FWI » est conçue pour générer les résultats de la méthode IFM pour une station à la fois. Les versions R et Python peuvent également fournir les résultats pour plusieurs stations avec des entrées correctement formatées. La version C ne peut traiter que les entrées d'une seule année pour une station donnée.
Données d'intrants
Le système d'indice de risque d'incendie a été initialement conçu pour être calculé à 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 comme intrants. En réalité, toutes les données météorologiques collectées ou calculées (par ex. données d'ensemble, données de prévision, etc.) qui comprennent les variables standard requises comme intrants pour la méthode IFM peuvent être utilisées. Voir le Guide météorologique pour une description des normes d'entrée des données météorologiques pour la méthode IFM.
Les lignes du cadre de données doivent correspondre à des données horaires consécutives. Les colonnes et les types de données du cadre de données d'entrée sont les suivants :
Colonne | Description |
---|---|
id |
Identifiant de la station météorologique, numéro unique attribué à la station, texte ou chiffre |
lat |
Latitude de la station météorologique, en degrés décimaux (°) (double précision) |
long |
Longitude de la station météorologique, en degrés décimaux (°) (double précision) |
yr |
Année de la lecture de la station météorologique, nombre AAAA |
mon |
Mois de la lecture de la station météorologique, nombre M ou MM (doit être cohérent dans l'ensemble des données) |
day |
Jour de la lecture de la station météorologique, nombre DD ou D (doit être cohérent dans l'ensemble des données) |
hr |
Heure de la lecture de la station météorologique, nombre en heure militaire (0-23) |
temp |
Température en degrés Celsius (°C), nombre |
rh |
Humidité relative en pourcentage (%), nombre (0-100) |
ws |
Vitesse du vent en kilomètres par heure (km/h), nombre |
prec |
Précipitations (pluie) mesurées en millimètres (mm), nombre |
solrad |
Rayonnement solaire mesuré en kilowatts par mètre carré (kW/m^2) pour les codes de prairie, nombre. Entrée FACULTATIVE, IFM2025 la générera selon la méthode par défaut. (MCEDIF rayonnement solaire IFM (draft)📥) |
percent_cured |
Pourcentage de fané des graminées dans les prairies ouvertes, mesuré en pourcentage pour les codes de prairies, nombre (0-100). Entrée FACULTATIVE, l'IFM2025 la générera selon la méthode par défaut |
Les en-têtes de colonne peuvent être en minuscules ou en majuscules, le format des résultats est défini en majuscules.
En plus des variables météorologiques, la fonction permettant de générer des résultats IFM2025 horaires nécessite le fuseau horaire dans lequel se trouve la station météo et la valeur de démarrage pour les codes d'humidité (par ex. ICL de 85, IH de 6 et IS de 15). Voir la section suivante pour savoir où cela est spécifié.
Paramètres de la fonction
R :
hFWI(df_wx, timezone, ffmc_old = 85, dmc_old = 6, dc_old = 15)
Paramètres | Description |
---|---|
df_wx |
Cadre de données ou tableau formaté (peut comporter 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 à l'UTC (par ex. pour les stations situées dans le fuseau horaire Central Standard, le fuseau horaire est réglé sur -6) |
ffmc_old |
Valeur de démarrage de l'indice du combustible léger (p. ex. 85, valeur par défaut) |
dmc_old |
Valeur de démarrage de l'indice de l'humus (par ex. 6, valeur par défaut) |
dc_old |
Valeur de démarrage de l'indice de sécheresse (par ex. 15, valeur par défaut) |
Python:
hFWI(df_wx, ffmc_old = 85, dmc_old = 6, dc_old = 15, silent = False)
Paramètre | Description |
---|---|
df_wx |
Cadre de données ou tableau formaté (peut comporter 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 |
ffmc_old |
Valeur de démarrage de l'indice du combustible léger (par ex. 85, valeur par défaut) |
dmc_old |
Valeur de démarrage de l'indice de l'humus (par ex. 6, valeur par défaut) |
dc_old |
Valeur de démarrage de l'indice de sécheresse (par ex. 15, valeur par défaut) |
silent |
Imprimer les messages de progression pour 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 |
Fuseau horaire dans lequel se trouve la station météorologique |
starting FFMC |
Valeur de démarrage de l'indice du combustible léger (par ex. 85) |
starting DMC |
Valeur de démarrage de l'indice de l'humus (par ex. 6) |
starting DC |
Valeur de démarrage de l'indice de sécheresse (par ex. 15) |
input file |
Nom du fichier .csv contenant les données d'une seule station sur une année |
output file |
Nom du fichier dans lequel les résultats sont enregistrés |
Description des résultats
Les résultats sont également au même format que les données d'entrée, avec les colonnes suivantes ajoutées :
Colonne | Description |
---|---|
timestamp |
Date et heure de la variable météorologique et IFM. Horodatage AAAA-MM-JJ HH:MM:SS. (pas en C) |
date |
AAAA-MM-JJ Type de date (sans hh:mm:ss). (pas en C) |
sunrise |
Heure du lever du soleil en fonction de la latitude, de la longitude et de la date en heure militaire (heure décimale). (pas en C) |
sunset |
Heure du coucher du soleil en fonction de la latitude, de la longitude et de la date en heure militaire (heure décimale). (pas en C) |
sunlight_hours |
Nombre d'heures (hr) entre le lever et le coucher du soleil (heure décimale). (pas en C) |
solrad |
Rayonnement solaire mesuré en kilowatts par mètre carré (kW/m^2) pour les codes de prairie, généré automatiquement s'il manque dans les intrants (nombre). (doit être calculé à l'aide de make_inputs.c s'il n'est pas fourni) |
percent_cured |
Pourcentage de combustibles végétaux fanés (morts) dans les prairies, généré automatiquement s'il manque dans les intrants. 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 fourni) |
grass_fuel_load |
La charge standard de combustible herbacé est intégrée dans le code Python et R, 0,35 kg/m^2. (doit être calculé à l'aide de make_inputs.c s'il n'est pas fourni, génère une colonne avec la valeur standard) |
ffmc |
Indice du combustible léger (ICL, nombre) |
dmc |
Indice de l'humus (IH, nombre) |
dc |
Indice de sécheresse (IS, nombre) |
isi |
Indice de propagation initiale (IPI, nombre) |
bui |
Indice du combustible disponible (ICD, nombre) |
fwi |
Indice forêt-météo (IFM, nombre) |
dsr |
Indice journalier de sévérité (DSR, nombre) |
gfmc |
Indice d'humidité de l'herbe, similaire à l'ICL (IHH, nombre 0-101) |
gsi |
Indice de propagation dans l'herbe (IPH, nombre) |
gfwi |
Indice du danger d'incendie pour l'herbe (IDIH, nombre) |
Résumés quotidiens
Les résultats horaires de l'IFM peuvent être résumés de différentes manières en fonction de l'utilisation et des besoins. Ces résumés se trouvent dans le script « daily_summaries ». generate_daily_summaries()
résume les données horaires en quelques indicateurs quotidiens.
Données d'intrant
Le seul intrant de generate_daily_summaries()
est le résultat de hFWI()
.
Paramètres de la fonction
R:
generate_daily_summaries <- function(hourly_data) {}
Python:
def generate_daily_summaries(hourly_data):
C:
hourly_data = the output dataframe generated by NG_FWI
Description des résultats
Colonne | Description |
---|---|
wstnid |
Identifiant de la station météorologique ou identifiant unique de la station météorologique |
year |
Année, AAAA, nombre (par ex. 2024) |
mon |
Mois, M, nombre (par ex. 3) |
day |
Jour, J, nombre (par ex. 8) |
sunrise |
Heure du lever du soleil. Format d'horodatage HH:MM:SS en heure militaire (par ex. 06:30:55) |
sunset |
Heure du coucher du soleil. Format d'horodatage HH:MM:SS en heure militaire (par ex. 19:45:05) |
peak_time |
L'heure (hr) en format militaire (0-23), format numérique. L'heure à laquelle on peut s'attendre à un comportement maximal du feu, tel qu'exprimé par un IPI modifié (voir les définitions de wind_speed_smoothed et peak_isi_smoothed ci-dessous). Si l'IPI maximal (provenant du champ peak_isi_smoothed) est inférieur à cinq, le peak_time est fixé à 17 heures |
duration |
Nombre d'heures (hr), format numérique. Peut également être appelé durée d'une fenêtre de brûlage, nombre d'heures dans la journée où l'on peut s'attendre à un feu actif (où un IPI modifié est égal ou supérieur à cinq). Si l'IPI n'a pas atteint 5 ou plus, la durée est zéro |
wind_speed_smoothed |
Vitesse du vent en kilomètres par heure (km/h), double précision. La vitesse du vent enregistrée toutes les heures sur la base d'une moyenne de 10 minutes peut être bruyante 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 lissée et l'IPI est recalculé sur la base de la vitesse du vent lissée et de l'ICL |
peak_isi_smoothed |
Indice de propagation initiale maximale (IPI) recalculé à partir de l'ICL et de la vitesse du vent lissée à partir de « wind_speed_smoothed », nombre à double précision. Nombre, double précision |
ffmc |
Indice du combustible léger correspondant à l'ICL à l'heure du pic. Nombre, double précision |
dmc |
Indice d'humidité de l'humus correspondant à l'IH à l'heure du pic. Nombre, double précision |
dc |
Indice de sécheresse correspondant à l'IS à l'heure de pointe. Nombre, double précision |
isi |
Indice de propagation initiale correspondant à l'IPI à l'heure de pointe. Nombre, double précision |
bui |
Indice de combustible disponible correspondant à l'ICD à l'heure de pointe. Nombre, double précision |
fwi |
Indice forêt-météo correspondant à l'IFM à l'heure de pointe. Nombre, double précision |
dsr |
Indice journalier de sévérité correspondant au DSR à l'heure de pointe. Nombre, double précision |
gfmc |
Indice d'humidité de l'herbe correspondant au IHH à l'heure de pointe. Nombre, double précision |
gsi |
Indice de propagation dans l'herbe correspondant à l'IPH à l'heure de pointe. Nombre, double précision |
gfwi |
Indice du danger d'incendie pour l'herbe correspondant à l'IDIH à l'heure de pointe. Nombre, double précision |
Licence
Les scripts NG-CFFDRS sont sous licence GNU General Public License version 2 (GPL-2.0). Une copie de la licence est disponible sur le référentiel GitHub (en anglais).