# Chargement des librairies
library("floodam.data")
library("floodam.agri")
# Déclaration de chemins
path_output = file.path(tempdir(), "level-1")Actualisation des fonctions de dommages aux parcelles agricoles.
Actualisation des fonctions de dommages aux parcelles agricoles selon différentes méthodes.
Objectifs
Cette méthodologie vise à montrer comment actualiser les fonctions de dommages aux parcelles agricoles produites en 2016 à l’échelle nationale en France selon deux procédés différents :
- niveau 1 : application d’un indice INSEE aux fonctions de dommages produites en 2016 ;
- niveau 2 et 2.1 : reconstruction des fonctions de dommages avec
floodam.agriet des données actualisées.
Schéma d’explication de la méthode
Le schéma ci-dessous est une adaptation du schéma proposé par P. Brémond et al.: Flood damage modelling applied to the agricultural sector qui explique la méthode employé pour la création des fonctions de dommages nationales au secteur agricole. Les étapes 1 à 4 sont celles développées initialement lors de la première production des fonctions de dommages au secteur agricole en 2016. L’étape 5, en rouge, correspond au principe d’actualisation de “niveau 1”, avec l’application d’un indice monétaire global aux fonctions “prêtes à l’emploi” produites en 2016.
Logiciels et bibliothèques requis
Le code ci-dessous est destiné à être exécuté dans R. Il est donc nécessaire que R soit installé sur votre système.
Cette méthode utilise les bibliothèques R suivantes (les instructions d’installation sont disponibles sur leurs sites web respectifs) :
- floodam.data qui permet de réaliser des opérations adaptées aux données de l’observatoire.
floodam.agriqui permet notamment d’élaborer des fonctions de dommages aux parcelles agricoles et de faire de la visualisation des fonctions produites.
TEMPORAIRE : Le code ci dessous est éxécutable pour les membres des dépôts floodam.data et floodam.agri tant que les fonctions développées pour cette méthode ne sont pas incluses dans les librairies de manière permanente
Déroulement de la méthode
Premièrement il faut charger les bibliothèques nécessaires et définir les chemins d’accès à vos fichiers et dossiers.
Veuillez noter que nous avons définit des chemins temporaires tempdir() pour sauvegarder les données téléchargées et actualisées. Si vous souhaitez conserver les données, pensez à définir un autre chemin (variable path_output) dans le code qui suit.
Téléchargement des données INSEE et des fonctions de dommages de 2016
Une fois la configuration terminée, nous devons télécharger une série monétaire à appliquer aux fonctions de dommages et les fonctions de dommages à actualiser. Nous avons choisit la série IPAMPA (010776857) de l’INSEE. (TO DO : Voir la méthode utilisation de séries INSEE pour l’actualisation des fonctions de dommages pour plus d’information) Au moment où cette notice méthodologique a été rédigée, les fonctions de dommages publiées sur le site du gouvernement datent de 2016.
Pour cette étape nous mobilisons deux fonctions de floodam.data :
download_insee_index(): téléchargement d’une ou plusieurs séries d’indices INSEEdownload_damage(): téléchargement des fonctions de dommages officielles aux parcelles agricoles, aux logements, aux entreprises ou établissements publics
# Téléchargement de l'indice à appliquer : IPAMPA
serie = c(ipampa = "010776857")
floodam.data::download_insee_index(serie, destination = path_output)
# Téléchargement des fonctions de dommages publiées sur le site du gouvernement
damage = "agriculture"
floodam.data::download_damage(damage, path_output)Actualisation des fonctions de dommages avec un indice
Nous appliquons ensuite l’indice INSEE aux fonctions de dommages de 2016 pour les actualiser à l’année 2025 (millésime IPAMPA le plus récent au moment de la rédaction de cette méthode).
Pour cette étape nous mobilisons la fonction de floodam.data nommée read_insee_serie() qui permet de lire un ou plusieurs indices INSEE :
# Lecture de l'index et des fonctions de dommages
index = floodam.data::read_insee_serie(
file.path(path_output, paste0(serie, ".csv"))
)
damage_agri = as.data.frame(readxl::read_excel(
file.path(path_output, sprintf("%s.xls", damage)),
skip = 1
))
# Actualisation des fonctions de dommages datant de 2016 vers l'année 2024
date_origin = "2016"
date_update = "2025"
damage_agri_updated = cbind(
damage_agri[, c(1:5)],
damage_agri[, -c(1:5)]*(index[date_update,] / index[date_origin,])
)Export des résultats et de la note méthodologique
Enfin, nous exportons les résultats accompagnés d’une note méthodologique explicative de l’origine des fonctions de dommages actualisées. Un squelette des notes méthodologiques est disponible dans la librairie floodam.data. Il faut donc la charger et actualiser les lignes indiquant :
- la date de mise à jour ;
- l’origine des données ;
- le millésime de l’indice utilisé ;
- version de
floodam.datautilisée.
# Chargement et actualisation de la note méthodologique
notes = system.file(
"extdata",
"notes-df-agri.csv",
package = "floodam.data"
)
notes = read.csv2(notes, check.names = FALSE, quote = "")
to_update = c(
"Date de mise à jour" = format(Sys.Date(), "%m-%Y"),
"Origine des données pour la mise à jour" = sprintf(
"Les séries sont disponibles à l’adresse suivante %s.",
sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
serie
)
),
"Millésime utilisé pour la mise à jour" = date_update,
"Production de la note" = sprintf(
"Cette note a été produite avec la version %s de floodam.data",
utils::installed.packages()["floodam.data", "Version"]
)
)
notes[match(names(to_update), notes[[1]]), 2] = to_update
# Export des résultats
writexl::write_xlsx(
list(
"notes-méthodologiques" = notes,
"surfacique (€2016.ha)" = damage_agri_updated
),
path = file.path(
path_output,
sprintf("agriculture_updated_%s.xlsx", date_update)
)
)Analyse des données
La librairie floodam.agri possède plusieurs fonctions pour visualiser les courbes de dommages.
Comparaison de courbes
La fonction compare_agriculture_damage de la librairie floodam.agri permet de produire un graphique avec plusieurs fonctions de dommages pour les comparer. Dans l’exemple ci-dessous, nous faisons une comparaison des fonctions de dommages d’origine (2016) avec celles actualisées (2024) pour les parcelles de “Vignes” en été, avec un courant “faible” et une durée “courte” et “moyenne”.
# Regroupement des fonctions de dommages pour la comparaison
dmg_list = setNames(
list(damage_agri, damage_agri_updated),
c("Origin_2016", "Niveau-1_2025")
)
# Renommage des paramètres d'inondations pour permettre la visualisation
dmg_list = lapply(dmg_list, function(x) {
names(x)[1:5] = c("height", "height_max", "current", "duration", "week")
return(x)
})
# Déclaration des paramètres d'inondation et de la culture d'intérêt
culture = "Vignes"
duration = c("courte", "moyenne")
week = "été"
current = "faible"
# Création du graphique avec la fonction `plot_compare_agg_damage_week
floodam.agri:::compare_agriculture_damage(
culture = culture,
damage = dmg_list,
output_title = "level-1",
output_format = "png",
destination = path_output,
current = current,
week = week,
duration = duration,
hazard = floodam.agri::HAZARD,
language = "FR",
legend = "include",
include_legend = "topleft"
)Schéma d’explication de la méthode
Le schéma ci-dessous est une adaptation du schéma proposé par P. Brémond et al.: Flood damage modelling applied to the agricultural sector qui explique la méthode employée pour la création des fonctions de dommages nationales au secteur agricole. Les étapes 1 à 4 sont celles développées initialement lors de la première production des fonctions de dommages au secteur agricole en 2016.
Logiciels et bibliothèques requis
Le code ci-dessous est destiné à être exécuté dans R. Il est donc nécessaire que R soit installé sur votre système.
Cette méthode utilise les bibliothèques R suivantes (les instructions d’installation sont disponibles sur leurs sites web respectifs) :
- floodam.data qui permet de réaliser des opérations adaptées aux données de l’observatoire.
floodam.agriqui permet notamment d’élaborer des fonctions de dommages aux parcelles agricoles et de faire de la visualisation des fonctions produites.
TEMPORAIRE : Le code ci dessous est éxécutable pour les membres des dépôts floodam.data et floodam.agri tant que les fonctions développées pour cette méthode ne sont pas incluses dans les librairies de manière permanente
Déroulement de la méthode
Premièrement il faut charger les bibliothèques nécessaires et définir les chemins d’accès à vos fichiers et dossiers.
Veuillez noter que nous avons définit des chemins temporaires tempdir() pour sauvegarder les données téléchargées et actualisées. Si vous souhaitez conserver les données, pensez à définir un autre chemin (variable path_output) dans le code qui suit.
# Chargement des librairies
library("floodam.data")
library("floodam.agri")
# Déclaration des chemins de stockage des données
path_output = file.path(tempdir(), "level-2")Déclaration des variables importantes et création de chemins
Ici nous déclarons les variables qui serviront à déterminer l’échelle et le millésime pour lesquels nous produisons des fonctions de dommages. Ensuite nous créons les chemins pour stocker les données nécessaires pour la production de fonctions de dommages de telle façon que l’outil floodam.agri puisse facilement les trouver. La fonction prepare_input() permet de déclarer les chemins où se trouvent les données que floodam.agri aura besoin de mobiliser pour produire les fonctions de dommages.
Dans les fonctions utilisées par la suite, nous différentions deux types de zonages :
- scope : nom de la portée des données (national, régional ou départemental)
- extent : nom de l’échelle d’étude nationale (i.e. “FRANCE MÉTROPOLITAINE”, “FRANCE ENTIÈRE”, “DOM”), de la région (i.e. “Occitanie”, “Nouvelle-Aquitaine”, etc.) ou du département (“Hérault”, “Gironde”, etc.).
L’utilisation de la variable extent est sensible à l’écriture. Les valeurs possibles pour cette variables sont décrites ici :
- national : “FRANCE MÉTROPOLITAINE”, “FRANCE ENTIÈRE”, “DOM” (nomenclature de la SAA);
- région : voir données de la librairie
floodam.data::region; - département : voir données de la librairie
floodam.data::department
Le millésime de mise à jour est 2024 car au moment de l’écriture de cette méthode, les données de la statistique agricole annuelle ne sont pas disponible pour 2025 contrairement aux indices INSEE
# Déclaration des échelles et millésime
extent = "FRANCE MÉTROPOLITAINE"
scope = "national"
year_update = "2024"
# Création des chemins "input"
floodam_paths = file.path(path_output, scope, extent, year_update, c("typology", "stat"))
lapply(floodam_paths, function(x) {dir.create(x, recursive = TRUE)})
# Déclaration des chemins indispensables à l'utilisation de `floodam.agri`
input = floodam.agri::prepare_input(
extent,
year = year_update,
destination = path_output,
include_national_2016 = TRUE
)Téléchargement et adaptation des séries INSEE
A la différence avec l’actualisation niveau 1, nous actualisons les coûts de productions et d’endommagement avec l’indice global IPAMPA (010776857) et les prix de vente avec l’indice global IPPAP pour lequel il existe deux séries qui doivent être mise en cohérence :
- 010538819 en base 2015
- 010538819 en base 2020
Pour cette étape nous mobilisons trois fonctions de floodam.data :
download_insee_index(): téléchargement d’une ou plusieurs séries d’indices INSEEread_insee_serie(): lecture d’une ou plusieurs séries d’indices INSEEmerge_insee_index(): mise en cohérence de deux séries d’indices INSEE
# Déclaration des variables importantes
series = setNames(
c("010538819", "010776418", "010776857"),
c("ippap_2015", "ippap_2020", "ipampa")
)
# Téléchargement des indices
lapply(series, floodam.data::download_insee_index, path_output)
# Lecture et adaptation des index
indexes = setNames(lapply(
file.path(path_output, paste0(series, ".csv")),
floodam.data::read_insee_serie
), names(series))
# Mise en cohérence des deux séries IPPAP
indexes[["ippap"]] = floodam.data::merge_insee_index(
indexes[["ippap_2015"]],
indexes[["ippap_2020"]],
base_new = "2020"
)
indexes[c("ippap_2015", "ippap_2020")] = NULLTéléchargement et adaptation des données de la Statistiques Agricole Annuelle d’Agreste
Ensuite, nous téléchargeons la base de données publiée par Agreste : Statistique Agricole Annuelle (SAA) (série longue). Cette base de données contient notamment les données de rendements et de surfaces qui nous intéressent dans cette méthode. Le fichier téléchargé est au format zip et contient des données pour les échelles nationales, régionales et départementales.
Pour cette étape nous mobilisons deux fonctions de floodam.data :
download_saa(): téléchargement de la série longue SAA (2010-2024)adapt_saa(): adaptation de la série longue SAA pour une harmonisation des noms des variables et extraction des données selon le scope (départemental, régional ou national).adapt_saa_floodam(): adaptation de l’extraction faite typiquement paradapt_saa()pour sélectionner les rendements et surfaces d’une année spécifique et les stocker dans un fichierstat.SAA.csvau format defloodam.agri.
Nous utilisons la fonction adapt_saa() pour extraire l’échelle nationale pour toutes les cultures disponibles.
# Téléchargement/lecture des données
floodam.data::download_saa(destination = path_output, verbose = TRUE)
# Adaptation des données SAA
floodam.data::adapt_saa(
origin = path_output,
destination = path_output,
scope = scope,
verbose = TRUE
)
# Export des valeurs SAA de l'extent étudié
floodam.data::adapt_saa_floodam(
origin = path_output,
destination = file.path(input[[extent]], "stat"),
archive = "SAA_2010-2024_national.csv",
scope = scope,
extent = extent,
year = year_update,
verbose = TRUE
)Téléchargement, adaptation des prix et coûts de production et report de la typologie des cultures SAA
Dans cette étape, les prix et coûts de productions par défaut sont récupérés (données mises à disposition dans floodam.agri) et mis à jour avec la fonction update_action_value() de floodam.agri. Par ailleurs, les tables de correspondances entres la nomenclature des cultures de la Statistique Agricole Annuelle et les nomenclatures floodam et RPG sont copiées.
# Lecture et actualisation des données de prix et de coûts de production
action_value = read.csv2(system.file(
"extdata/default/stat/action.value.table.csv",
package = "floodam.agri"
))
floodam.agri::update_action_value(
action_value = action_value,
year_new = year_update,
year_origin = "2016",
index_price = indexes[["ippap"]],
index_prod = indexes[["ipampa"]],
destination = floodam_paths,
global_price = TRUE,
global_price_name = "ippap",
verbose = TRUE
)
# Copie de la typologie depuis `floodam.agri`
output_typology = grep("typology", floodam_paths, value = TRUE)
files = list.files(
system.file("extdata", "typology-saa", package = "floodam.agri"),
full.names = TRUE
)
sapply(output_typology, file.copy, from = files, overwrite = TRUE)Création des chemins manquants
La fonction init_path() de la librairie floodam.agri permet de créer l’ensemble des chemins où la librairie va lire et stocker les résultats.
Cette étape ne peut pas avoir lieu tant que les fichiers de typologie (étape précédente) ont été copiés car ils participent à déterminer les chemins à créer.
# Création des chemins "output"
output = file.path(input[[1]], "output")
classification = system.file(
"extdata",
"classification",
package = "floodam.agri"
)
path = floodam.agri::init_path(
input = input,
output = output,
classification = classification,
default = TRUE
)Actualisation des valeurs d’endommagement avec un index
Dans cette étape, nous actualisons les valeurs d’endommagement des cultures avec un index (IPAMPA) et mobilisons deux fonctions de floodam.agri :
prepare_culture(): prépare les fichiers d’endommagement des cultures pour lesquelles on souhaite construire les fonctions de dommageupdate_raw_damage(): actualisation des valeurs d’endommagement brutes d’une ou plusieurs cultures.
# Préparation des données d'endommagement par défaut
floodam.agri::prepare_culture(path)
# Mise à jour des données d'endommagement avec IPAMPA
floodam.agri::update_raw_damage(
path = path,
culture = NULL,
year_new = year_update,
year_origin = "2016",
index_prod = indexes[["ipampa"]],
verbose = TRUE
)Finalisation de la préparation des données
Cette étape mobilise 3 fonctions pour finaliser la préparation des données :
prepare_calendar(): extrait les calendriers disponibles pour les reporter dans le dossier “output”prepare_typology(): crée les fichiers dits “weights” qui permettent de déterminer les poids de chaque culture à partir de leurs surfaces dans les correspondances entre : SAA et floodam ; SAA et RPGprepare_action_value(): reformate les valeurs des actions et des rendements pour les rendre mobilisable parfloodam.agri
# Extracting and copying calendars to output
floodam.agri::prepare_calendar(path)
# Making weight files
floodam.agri::prepare_typology(path, "RPG")
# Prepare necessary action values and yields
floodam.agri::prepare_action_value(path)Construction des fonctions de dommages
C’est le moment de construire les fonctions de dommages. Pour cela nous utilisons 3 fonctions :
calculate_damaging()crée une courbe de dommage pour une ou plusieurs cultures.combine_damaging()combine les courbes de dommages en un seul fichier.aggregate_damage()aggrège les courbes de dommages avec de nouveaux paramètres d’inondation pour simplifier les fonctions de dommages.
# 2. Updating damaging curve
level = floodam.agri::LEVEL
# level[["duration"]] = as.character(seq(0, 30))
damaging = floodam.agri::calculate_damaging(
path,
culture = NULL,
level = level,
retrieve = TRUE,
update.hazard = TRUE
)
## Getting all "combine" outputs
### Combining only crops with the same extent data
floodam.agri::combine_damaging(
path = path,
damage.culture = damaging,
weight = "RPG",
verbose = TRUE
)
## Getting aggregated functions
agg_damaging_2 = floodam.agri::aggregate_damage(
path,
damage_origin = "RPG_total",
hazard_agg = floodam.agri::HAZARD_AGGREGATE_OFFICIAL,
output_format = "gt-amc"
)Export des résultats et de la note méthodologique
Enfin, nous exportons les résultats accompagnés d’une note méthodologique explicative de l’origine des fonctions de dommages actualisées. Un squelette des notes méthodologiques est disponible dans la librairie floodam.data. Il faut donc la charger et actualiser les lignes indiquant :
- la date de mise à jour ;
- l’origine des données (IPAMPA, IPPAP, SAA) ;
- les millésimes utilisés (IPAMPA, IPPAP, SAA) ;
- versions de
floodam.dataetfloodam.agriutilisées.
## Load and update notes
notes = system.file(
"extdata",
"notes-df-agri-level-2.csv",
package = "floodam.data"
)
notes = read.csv2(notes, check.names = FALSE, quote = "")
to_update = c(
"Date de mise à jour" = format(Sys.Date(), "%m-%Y"),
"Échelle" = extent,
"Origine des données pour la mise à jour" =
"Les séries d'indices sont disponibles aux adresses suivante :",
"Origine IPAMPA" = sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
series[["ipampa"]]
),
"Origine IPPAP" = paste0(
sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
series[["ippap_2015"]]
),
" et ",
sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
series[["ippap_2020"]]
)
),
"Origine SAA" = "https://agreste.agriculture.gouv.fr/agreste-web/download/publication/publie/SAA-SeriesLongues/SAA_2010-2024-d%C3%A9finitives_donnees-DepartementalesetRegionales.zip",
"Millésime IPAMPA" = year_update,
"Millésime IPPAP" = year_update,
"Millésime SAA" = year_update,
"Production de la note" = paste0(
sprintf(
"Cette note a été produite avec la version %s de floodam.data",
utils::installed.packages()["floodam.data", "Version"]
),
" et ",
sprintf(
"la version %s de floodam.agri",
utils::installed.packages()["floodam.agri", "Version"]
)
)
)
notes[match(names(to_update), notes[[1]]), 2] = to_update
writexl::write_xlsx(
setNames(list(
notes,
agg_damaging_2
), c("notes-méthodologiques", sprintf("surfacique (€%s.ha)", year_update))),
path = file.path(path_output, sprintf("agriculture_level-2_%s_%s.xlsx", extent, year_update))
)Comparaison de courbes
La fonction compare_agriculture_damage de la librairie floodam.agri permet de produire un graphique avec plusieurs fonctions de dommages pour les comparer.
Ici nous comparons les courbes de dommages publiées en 2016, celles produites en appliquant l’indice INSEE IPAMPA (voir niveau 1), celles produites au niveau 2 et celles produites dans la méthode décrite précédemment (niveau 2.1).
# Regroupement des fonctions de dommages pour la comparaison
dmg_list = setNames(
list(damage_agri, damage_agri_updated, agg_damaging_2),
c("Origin_2016", "Niveau-1_2025", "Niveau-2_2024")
)
# Renommage des paramètres d'inondations pour permettre la visualisation
dmg_list = lapply(dmg_list, function(x) {
names(x)[1:5] = c("height", "height_max", "current", "duration", "week")
return(x)
})
# Déclaration des paramètres d'inondation et de la culture d'intérêt
culture = "Vignes"
duration = c("courte", "moyenne")
week = "été"
current = "faible"
# Création du graphique avec la fonction `plot_compare_agg_damage_week
floodam.agri:::compare_agriculture_damage(
culture = culture,
damage = dmg_list,
output_title = "level-2",
output_format = "png",
destination = path_output,
current = current,
week = week,
duration = duration,
hazard = floodam.agri::HAZARD,
language = "FR",
legend = "include",
include_legend = "topleft"
)Schéma d’explication de la méthode
Le schéma ci-dessous est une adaptation du schéma proposé par P. Brémond et al.: Flood damage modelling applied to the agricultural sector qui explique la procédure pour la méthode employé pour la création des fonctions de dommages nationales au secteur agricole. Les étapes 1 à 4 sont celles développées initialement lors de la première production des fonctions de dommages au secteur agricole en 2016.
Logiciels et bibliothèques requis
Le code ci-dessous est destiné à être exécuté dans R. Il est donc nécessaire que R soit installé sur votre système.
Cette méthode utilise les bibliothèques R suivantes (les instructions d’installation sont disponibles sur leurs sites web respectifs) :
- floodam.data qui permet de réaliser des opérations adaptées aux données de l’observatoire.
floodam.agriqui permet notamment d’élaborer des fonctions de dommages aux parcelles agricoles et de faire de la visualisation des fonctions produites.
TEMPORAIRE : Le code ci dessous est éxécutable pour les membres des dépôts floodam.data et floodam.agri tant que les fonctions développées pour cette méthode ne sont pas incluses dans les librairies de manière permanente
Déroulement de la méthode
Premièrement il faut charger les bibliothèques nécessaires et définir les chemins d’accès à vos fichiers et dossiers.
Veuillez noter que nous avons définit des chemins temporaires tempdir() pour sauvegarder les données téléchargées et actualisées. Si vous souhaitez conserver les données, pensez à définir un autre chemin (variable path_output) dans le code qui suit.
# Chargement des librairies
package = file.path("~", "gitlab", "floodam.data")
library("floodam.data")
library("floodam.agri")
# Déclaration des chemins de stockage des données
path_output = file.path(tempdir(), "level-2.1")Déclaration des variables importantes et création de chemins
Ici nous déclarons les variables qui serviront à déterminer l’échelle et le millésime pour lesquels nous produisons des fonctions de dommages. Ensuite nous créons les chemins pour stocker les données nécessaires pour la production de fonctions de dommages de telle façon que l’outil floodam.agri puisse facilement les trouver. La fonction prepare_input() permet de déclarer les chemins où se trouvent les données que floodam.agri aura besoin de mobiliser pour produire les fonctions de dommages.
Dans les fonctions utilisées par la suite, nous différentions deux types de zonages :
- scope : nom de la portée des données (national, régional ou départemental)
- extent : nom de l’échelle d’étude nationale (i.e. “FRANCE MÉTROPOLITAINE”, “FRANCE ENTIÈRE”, “DOM”), de la région (i.e. “Occitanie”, “Nouvelle-Aquitaine”, etc.) ou du département (“Hérault”, “Gironde”, etc.).
L’utilisation de la variable extent est sensible à l’écriture. Les valeurs possibles pour cette variables sont les suivantes :
- national : “FRANCE MÉTROPOLITAINE”, “FRANCE ENTIÈRE”, “DOM” (nomenclature de la SAA);
- région : voir données de la librairie
floodam.data::region; - département : voir données de la librairie
floodam.data::department
Le millésime de mise à jour est 2024 car au moment de l’écriture de cette méthode, les données de la statistique agricole annuelle ne sont pas disponible pour 2025 contrairement aux indices INSEE.
# Déclaration des échelles et millésime
extent = "FRANCE MÉTROPOLITAINE"
scope = "national"
year_update = "2024"
# Création des chemins "input"
floodam_paths = file.path(
path_output,
scope,
extent,
year_update,
c("typology", "stat")
)
lapply(floodam_paths, function(x) {dir.create(x, recursive = TRUE)})
# Déclaration des chemins indispensables à l'utilisation de `floodam.agri`
input = floodam.agri::prepare_input(
extent,
year = year_update,
destination = path_output,
include_national_2016 = TRUE
)Téléchargement et adaptation des séries INSEE
A la différence avec l’actualisation niveau 1 et 2 , nous actualisons les coûts de productions et d’endommagement avec l’indice global IPAMPA (010776857) et les prix de vente avec des indices IPPAP attribués à chaque culture (voir la note méthodologique sur l’utilisation des séries INSEE pour l’actualisation des fonctions de dommages).
Pour sélectionner les bons indices, nous procédons en deux étapes :
- téléchargement des “dataflows” (tables de données issues du sservice web SDMX de l’INSEE) des séries IPPAP (2015 et 2020) et IPAMPA (2020) contenant toutes les séries disponibles pour ces indices.
- extraction des codes des séries d’intérêts et téléchargement.
Pour la première étape, nous mobilisons deux fonctions de floodam.data pour télécharger les dataflows :
retrieve_insee_serie(): télécharge les informations principales sur les séries disponibles sur le service web SDMX de l’INSEE.adapt_insee_serie(): adaptation de l’archive téléchargée avecretrieve_insee_serie()pour essentiellement renommer les colonnes et extraire des noms d’indices abbrégés.
# Download names of available insee series
floodam.data::retrieve_insee_serie(
destination = path_output,
category = "IPAGRI-BASE",
output_prefix = "insee_indexes",
by = "id"
)
agricultural_insee_series = floodam.data::adapt_insee_serie(
origin = path_output,
archive = "insee_indexes_IPAGRI-BASE.rds",
destination = path_output,
frequency = "A",
output_format = "csv",
retrieve = TRUE
)
# On ne garde que IPPAP_2015, 2020 (pour faire la cohérence) et IPAMPA 2020
selection = c("ippap_2015", "ippap_2020", "ipampa_2020")
agricultural_insee_series = agricultural_insee_series[selection]Dans cette seconde étape, nous extrayons un numéro de série pour chaque culture de floodam en se basant sur une table de correspondance disponible dans la librairie floodam.data. Puis nous téléchargeons et faisons la mise en cohérence entre les séries IPPAP 2015 et 2020.
Nous mobilisons quatre fonctions de la librairie floodam.data :
select_insee_series(): extraction d’identifiants de séries INSEE globaux et spécifiques à partir d’une table de correspondancedownload_insee_index(): téléchargement d’une ou plusieurs séries d’indices INSEEread_insee_serie(): lecture d’une ou plusieurs séries d’indices INSEEmerge_insee_index(): mise en cohérence de deux séries d’indices INSEE
Les séries sélectionnées (hors indice global) de l’IPPAP 2020 couvrent les années de l’IPPAP 2015. Aucune mise en cohérence n’est faite pour ces séries et nous utilisons uniquement l’IPPAP 2020 pour mettre à jour les prix de vente des cultures associées à ces séries.
# Selection des séries d'intérêt
correspondance_insee = read.csv2(system.file(
"extdata/correspondance_floodam_price_insee.csv",
package = "floodam.data"
))
series = floodam.data:::select_insee_series(
correspondance_insee,
agricultural_insee_series,
selection
)
# Téléchargement des index
invisible(lapply(
names(series),
function(x, series, destination) {
message(sprintf("Processing %s.....", x))
invisible(lapply(
series[[x]],
floodam.data::download_insee_index,
destination,
verbose = TRUE,
overwrite = FALSE
))
}, serie = series, destination = file.path(path_output, "insee_series")
))
# Lecture des séries
series_path = sapply(series, function(x, destination) {
setNames(
file.path(path_output, "insee_series", sprintf("%s.csv", x)),
names(x)
)
}, destination
)
indexes = setNames(lapply(
series_path,
floodam.data::read_insee_serie
), names(series))
# Mise en cohérence des séries
indexes[["sale.price"]] = setNames(lapply(
names(indexes[["ippap_2015"]]),
function(x, indexes, verbose = TRUE) {
if(isTRUE(verbose)) message(sprintf("Processing %s....", x))
floodam.data::merge_insee_index(
old_index = indexes[["ippap_2015"]][[x]],
new_index = indexes[["ippap_2020"]][[x]],
base_new = "2020"
)[["value"]]
}, indexes
), names(indexes[["ippap_2015"]]))Téléchargement et adaptation des données de la Statistiques Agricole Annuelle d’Agreste
Ensuite, nous téléchargeons la base de données publiée par Agreste : Statistique Agricole Annuelle (SAA) (série longue). Cette base de données contient notamment les données de rendements et de surfaces qui nous intéressent dans cette méthode. Le fichier téléchargé est au format zip et contient des données pour les échelles nationales, régionales et départementales.
Pour cette étape nous mobilisons deux fonctions de floodam.data :
download_saa(): téléchargement de la série longue SAA (2010-2024)adapt_saa(): adaptation de la série longue SAA pour une harmonisation des noms des variables et extraction des données selon le scope (départemental, régional ou national).adapt_saa_floodam(): adaptation de l’extraction faite typiquement paradapt_saa()pour sélectionner les rendements et surfaces d’une année spécifique et les stocker dans un fichierstat.SAA.csvau format defloodam.agri.
Nous utilisons la fonction adapt_saa() pour extraire l’échelle nationale pour toutes les cultures disponibles.
# Téléchargement/lecture des données
floodam.data::download_saa(destination = path_output, verbose = TRUE)
# Adaptation des données SAA
floodam.data::adapt_saa(
origin = path_output,
destination = path_output,
scope = scope,
verbose = TRUE
)
# Export des valeurs SAA de l'extent étudié
floodam.data::adapt_saa_floodam(
origin = path_output,
destination = file.path(input[[extent]], "stat"),
archive = "SAA_2010-2024_national.csv",
scope = scope,
extent = extent,
year = year_update,
verbose = TRUE
)Téléchargement, adaptation des prix et coûts de production et report de la typologie des cultures SAA
Dans cette étape, les prix et coûts de productions par défaut sont récupérés (données mises à disposition dans floodam.agri) et mis à jour avec la fonction update_action_value() de floodam.agri. Par ailleurs, les tables de correspondances entres la nomenclature des cultures de la Statistique Agricole Annuelle et les nomenclatures floodam et RPG sont copiées.
# Lecture et actualisation des données de prix et de coûts de production
action_value = read.csv2(system.file(
"extdata/default/stat/action.value.table.csv",
package = "floodam.agri"
))
floodam.agri::update_action_value(
action_value = action_value,
year_new = year_update,
year_origin = "2016",
index_price = indexes[["sale.price"]],
index_prod = indexes[["ipampa_2020"]],
destination = floodam_paths,
global_price = FALSE,
verbose = TRUE
)
# Copie de la typologie depuis `floodam.agri`
output_typology = grep("typology", floodam_paths, value = TRUE)
files = list.files(
system.file("extdata", "typology-saa", package = "floodam.agri"),
full.names = TRUE
)
sapply(output_typology, file.copy, from = files, overwrite = TRUE)Création des chemins manquants
La fonction init_path() de la librairie floodam.agri permet de créer l’ensemble des chemins où la librairie va lire et stocker les résultats.
Cette étape ne peut pas avoir lieu tant que les fichiers de typologie (étape précédente) ont été copiés car ils participent à déterminer les chemins à créer.
# Création des chemins "output"
output = file.path(input[[1]], "output")
classification = system.file(
"extdata",
"classification",
package = "floodam.agri"
)
path = floodam.agri::init_path(
input = input,
output = output,
classification = classification,
default = TRUE
)Actualisation des valeurs d’endommagement avec un index
Dans cette étape, nous actualisons les valeurs d’endommagement des cultures avec un index (IPAMPA) et mobilisons deux fonctions de floodam.agri :
prepare_culture(): prépare les fichiers d’endommagement des cultures pour lesquelles on souhaite construire les fonctions de dommageupdate_raw_damage(): actualisation des valeurs d’endommagement brutes d’une ou plusieurs cultures.
# Préparation des données d'endommagement par défaut
floodam.agri::prepare_culture(path)
# Mise à jour des données d'endommagement avec IPAMPA
floodam.agri::update_raw_damage(
path = path,
culture = NULL,
year_new = year_update,
year_origin = "2016",
index_prod = indexes[["ipampa_2020"]],
verbose = TRUE
)Finalisation de la préparation des données
Cette étape mobilise 3 fonctions pour finaliser la préparation des données :
prepare_calendar(): extrait les calendriers disponibles pour les reporter dans le dossier “output”prepare_typology(): crée les fichiers dits “weights” qui permettent de déterminer les poids de chaque culture à partir de leurs surfaces dans les correspondances entre : SAA et floodam ; SAA et RPGprepare_action_value(): reformate les valeurs des actions et des rendements pour les rendre mobilisable parfloodam.agri
# Extracting and copying calendars to output
floodam.agri::prepare_calendar(path)
# Making weight files
floodam.agri::prepare_typology(path, "RPG")
# Prepare necessary action values and yields
floodam.agri::prepare_action_value(path)Construction des fonctions de dommages
C’est le moment de construire les fonctions de dommages. Pour cela nous utilisons 3 fonctions :
calculate_damaging()crée une courbe de dommage pour une ou plusieurs cultures.combine_damaging()combine les courbes de dommages en un seul fichier.aggregate_damage()aggrège les courbes de dommages avec de nouveaux paramètres d’inondation pour simplifier les fonctions de dommages.
# 2. Updating damaging curve
level = floodam.agri::LEVEL
# level[["duration"]] = as.character(seq(0, 30))
damaging = floodam.agri::calculate_damaging(
path,
culture = NULL,
level = level,
retrieve = TRUE,
update.hazard = TRUE
)
## Getting all "combine" outputs
### Combining only crops with the same extent data
floodam.agri::combine_damaging(
path = path,
damage.culture = damaging,
weight = "RPG",
verbose = TRUE
)
## Getting aggregated functions
agg_damaging_2_1 = floodam.agri::aggregate_damage(
path,
damage_origin = "RPG_total",
hazard_agg = floodam.agri::HAZARD_AGGREGATE_OFFICIAL,
output_format = "gt-amc"
)Export des résultats et de la note méthodologique
Enfin, nous exportons les résultats accompagnés d’une note méthodologique explicative de l’origine des fonctions de dommages actualisées. Un squelette des notes méthodologiques est disponible dans la librairie floodam.data. Il faut donc la charger et actualiser les lignes indiquant :
- la date de mise à jour ;
- l’origine des données (IPAMPA, IPPAP, SAA) ;
- les millésimes utilisés (IPAMPA, IPPAP, SAA) ;
- versions de
floodam.dataetfloodam.agriutilisées.
## Load and update notes
notes = system.file(
"extdata",
"notes-df-agri-level-2.csv",
package = "floodam.data"
)
notes = read.csv2(notes, check.names = FALSE, quote = "")
to_update = c(
"Date de mise à jour" = format(Sys.Date(), "%m-%Y"),
"Échelle" = extent,
"Origine des données pour la mise à jour" =
"Les séries d'indices sont disponibles aux adresses suivante :",
"Origine IPAMPA" = sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
series[["ipampa"]][["global"]]
),
"Origine IPPAP" = paste(unique(sprintf(
"https://www.insee.fr/fr/statistiques/serie/%s#Telechargement",
series[["ippap_2020"]][-which(names(series[["ippap_2020"]]) == "global")]
)), collapse = ", "),
"Origine SAA" = "https://agreste.agriculture.gouv.fr/agreste-web/download/publication/publie/SAA-SeriesLongues/SAA_2010-2024-d%C3%A9finitives_donnees-DepartementalesetRegionales.zip",
"Millésime IPAMPA" = year_update,
"Millésime IPPAP" = year_update,
"Millésime SAA" = year_update,
"Production de la note" = paste0(
sprintf(
"Cette note a été produite avec la version %s de floodam.data",
utils::installed.packages()["floodam.data", "Version"]
),
" et ",
sprintf(
"la version %s de floodam.agri",
utils::installed.packages()["floodam.agri", "Version"]
)
)
)
notes[match(names(to_update), notes[[1]]), 2] = to_update
writexl::write_xlsx(
setNames(list(
notes,
agg_damaging_2_1
), c(
"notes-méthodologiques",
sprintf("surfacique (€%s.ha)", year_update)
)),
path = file.path(
path_output,
sprintf("agriculture_level-2.1_%s_%s.xlsx", extent, year_update)
)
)Comparaison de courbes
La fonction compare_agriculture_damage de la librairie floodam.agri permet de produire un graphique avec plusieurs fonctions de dommages pour les comparer.
Ici nous comparons les courbes de dommages publiées en 2016, celles produites en appliquant l’indice INSEE IPAMPA (voir niveau 1) et celles produites dans la méthode décrite précédemment (niveau 2).
# Regroupement des fonctions de dommages pour la comparaison
dmg_list = setNames(
list(damage_agri, damage_agri_updated, agg_damaging_2, agg_damaging_2_1),
c("Origin_2016", "Niveau-1_2025", "Niveau-2_2024", "Niveau-2.1_2024")
)
# Renommage des paramètres d'inondations pour permettre la visualisation
dmg_list = lapply(dmg_list, function(x) {
names(x)[1:5] = c("height", "height_max", "current", "duration", "week")
return(x)
})
# Déclaration des paramètres d'inondation et de la culture d'intérêt
culture = "Vignes"
duration = c("courte", "moyenne")
week = "été"
current = "faible"
# Création du graphique avec la fonction `plot_compare_agg_damage_week
floodam.agri:::compare_agriculture_damage(
culture = culture,
damage = dmg_list,
output_title = "level-2.1",
output_format = "png",
destination = path_output,
current = current,
week = week,
duration = duration,
hazard = floodam.agri::HAZARD,
language = "FR",
legend = "include",
include_legend = "topleft"
)




