diff --git a/.Rbuildignore b/.Rbuildignore
index 7c953a07e3ff42ba3dbdfa1cb7788efb2ecc0ff7..19bf34ae010590a7500e4e55da2a63cfbb096ff1 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -13,3 +13,4 @@ captage_eso_sans_code_bss.csv
 ^pkgdown$
 ^\.gitlab-ci\.yml$
 ^data\$
+^config\.yml$
diff --git a/config.yml b/config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2b5f7194f60ae139b582f999f86efb9564c9a829
--- /dev/null
+++ b/config.yml
@@ -0,0 +1,5 @@
+# Millésime de travail pour la table unique des stations de mesure
+year: 2025
+
+# Spécifier le chemin vers le dernier livrable de l'ARS au format Excel
+file_path_data_ars: "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/CAP_SISE_28_03_2025.xlsx"
diff --git a/dev/config_fusen.yaml b/dev/config_fusen.yaml
index 979a58c602e33850298b75e933b7590a0893fa81..4bc60cf5281c91903c844c48b4074b0f398dbe35 100644
--- a/dev/config_fusen.yaml
+++ b/dev/config_fusen.yaml
@@ -39,15 +39,17 @@ flat_update_captage_ep.Rmd:
     check: true
     document: true
     overwrite: ask
+    clean: ask
+    codecov: false
 flat_update_hubeau_qualite_nappe_station.Rmd:
   path: dev/flat_update_hubeau_qualite_nappe_station.Rmd
   state: active
   R: []
   tests: []
-  vignettes: vignettes/mise-a-jour-des-stations-hub-eau-nappes-d-eau-souterraine.Rmd
+  vignettes: vignettes/mise-a-jour-des-stations-hubeau-nappes-d-eau-souterraine.Rmd
   inflate:
     flat_file: dev/flat_update_hubeau_qualite_nappe_station.Rmd
-    vignette_name: Mise à jour des stations Hub'eau nappes d'eau souterraine
+    vignette_name: Mise à jour des stations Hubeau nappes d'eau souterraine
     open_vignette: true
     check: true
     document: true
@@ -67,6 +69,8 @@ flat_update_hubeau_qualite_rivieres_station_pc.Rmd:
     check: true
     document: true
     overwrite: ask
+    clean: ask
+    codecov: false
 flat_update_r_station_mesure_p_r52.Rmd:
   path: dev/flat_update_r_station_mesure_p_r52.Rmd
   state: active
diff --git a/dev/flat_update_captage.Rmd b/dev/flat_update_captage.Rmd
index 4da19aa7f8d51130afd74e066f6ab29f04bb8977..229d89c42aa2f55da64c929a560c054a9ebeb31b 100644
--- a/dev/flat_update_captage.Rmd
+++ b/dev/flat_update_captage.Rmd
@@ -15,15 +15,22 @@ library(sf)
 library(datalibaba)
 library(glue)
 library(usethis)
-
 ```
 
 ```{r development-load}
 # Load already included functions if relevant
 pkgload::load_all(export_all = FALSE)
+```
+
+```{r config, eval=FALSE}
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
 
+# Accéder à la valeur pour file_path_data_ars
+file_path_data_ars <- config$file_path_data_ars
 ```
 
+
 # Objectif
 
 Actualiser **la table des captages de la région** (`captages.n_captage_p_r52`) 
@@ -34,19 +41,19 @@ Actualiser **la table des captages de la région** (`captages.n_captage_p_r52`)
 ## Captages ARS (SISE-EAUX)
 
 ### Chargement des captages du dernier livrable en date
+
+Il faut au préalable **modifier si besoin le chemin vers le dernier livrable de l'ARS au format Excel qui est stocké dans le fichier config.yml** situé à la racine du package.
+
 L'export transmis par l'ARS est importé ainsi que la date du fichier (qui sera utilisée ultérieurement comme métadonnée) :
 ```{r load_data, eval=FALSE}
 # Make the dataset file available to the current Rmd during development
 pkgload::load_all(path = here::here(), export_all = FALSE)
 
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/CAP_SISE_13_02_2024.xlsx"
-
 # Stocker la date de dernier enregistrement du fichier
-last_modified_date <- format(file.info(file_path)$ctime,"%d/%m/%Y")
+last_modified_date <- format(file.info(file_path_data_ars)$ctime,"%d/%m/%Y")
 
 # Lire le fichier Excel dans un dataframe
-data <- readxl::read_excel(file_path)
+data <- readxl::read_excel(file_path_data_ars)
 
 # Vérifier le type de données dans la colonne "INS - Début d'usage - Date"
 str(data)
@@ -58,7 +65,6 @@ data <- data |>
 # Convertir les valeurs numériques en dates
 data <- data |>
   dplyr::mutate(`INS - Début d'usage - Date` = as.Date(`INS - Début d'usage - Date`, origin = "1899-12-30"))
-
 ```
 
 ### Renommage des variables
@@ -68,109 +74,25 @@ table en base :
 ```{r consolidate_data, eval=FALSE}
 captage <- data |>
   dplyr::rename(departement_captage = "INS - Dépt gest - Code",
-         code_unite_gestion = "UGE - Code national",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "INS - Code national",
-         nom_captage = "INS - Nom",
-         type_installation = "INS - Type - Code",
-         nature_eau_captage = "INS - Nature de l'eau - Code",
-         usage_captage = "INS - Usage direct - Code",
-         etat_installation = "INS - Etat - Code",
-         date_etat_installation = "INS - Début d'usage - Date",
-         code_responsable_suivi = "INS - Resp. suivi - Code",
-         motif_abandon = "INS - Motif d'abandon - Libellé",
-         code_commune_captage = "COM - Code INSEE (5 car)",
-         nom_commune_captage = "COM - Nom",
-         code_bss = "CAP - BSS - Code",
-         designation_bss = "CAP - BSS - Désignation",
-         coordonnee_x = "PSV - Coordonnée X",
-         coordonnee_y = "PSV - Coordonnée Y",
-         coordonnee_z = "PSV - Coordonnée Z",
-         debit_moyen_m3j = "INS - Débit moyen/jour - m3/j")
-
-```
-
-## Captages ARS (SISE-EAUX) gérés par un autre département
-:warning: On récupère de façon temporaire ces captages (principalement gérés 
-par le 35) dans un livrable plus ancien car ils ne sont pas disponibles dans
-la livraison la plus récente. il faut donc vérifier le contenu du livrable 
-avant d'exécuter le chunk suivant, après chaque livraison. 
-
-### Chargement des captages manquants
-```{r load_missing_data, eval=FALSE}
-# Make the dataset file available to the current Rmd during development
-pkgload::load_all(path = here::here(), export_all = FALSE)
-
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/@archives/CAP_SISE_11_11_2020.xlsx"
-
-# Lire le fichier Excel dans un dataframe et filtrer pour ne conserver que les enregistrements du 35
-missing_data <- readxl::read_excel(file_path, skip = 5) |> 
-  dplyr::filter(`Dpt Gest.` == "035")
-
-```
-
-### Renommage et sélection des variables
-```{r load_missing_data, eval=FALSE}
-# Adapter le format du dataframe pour le fusionner avec les données plus récentes
-captage_035 <- missing_data |>
-  dplyr::rename(departement_captage = "Dpt Gest.",
-         code_unite_gestion = "UGE - Code",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "Code CAP",
-         nom_captage = "Nom Captage",
-         type_installation = "Type ins",
-         nature_eau_captage = "NatEau",
-         usage_captage = "Usage",
-         etat_installation = "Etat",
-         date_etat_installation = "DébUsage",
-         motif_abandon = "Motif abandon",
-         code_commune_captage = "Com Code",
-         nom_commune_captage = "Com Nom",
-         code_bss = "BSS code",
-         designation_bss = "Dés. BSS",
-         coordonnee_x = "X - Lbt2e",
-         coordonnee_y = "Y - Lbt2e",
-         coordonnee_z = "Z",
-         debit_moyen_m3j = "moy m3/j") |>
-  dplyr::mutate(date_etat_installation = as.Date(date_etat_installation),
-                code_responsable_suivi = NA,
-                code_commune_captage = as.character(code_commune_captage)
-                ) |>
-  dplyr::select(
-    departement_captage,
-    code_unite_gestion,
-    nom_unite_gestion,
-    code_captage,
-    nom_captage,
-    type_installation,
-    nature_eau_captage,
-    usage_captage,
-    etat_installation,
-    date_etat_installation,
-    code_responsable_suivi,
-    motif_abandon,
-    code_commune_captage,
-    nom_commune_captage,
-    code_bss,
-    designation_bss,
-    coordonnee_x,
-    coordonnee_y,
-    coordonnee_z,
-    debit_moyen_m3j
-  )
-
-
-```
-
-## Fusion des deux dataframes
-
-On rassemble les données des dataframes `captage` `captage_035` pour disposer
-du référentiel le plus complet possible :
-```{r merge_captages, eval=FALSE}
-# Fusionner les deux dataframes
-captage_full <- dplyr::bind_rows(captage, captage_035) |>
-  dplyr::arrange(code_captage)
+                code_unite_gestion = "UGE - Code national",
+                nom_unite_gestion = "UGE - Nom",
+                code_captage = "INS - Code national",
+                nom_captage = "INS - Nom",
+                type_installation = "INS - Type - Code",
+                nature_eau_captage = "INS - Nature de l'eau - Code",
+                usage_captage = "INS - Usage direct - Code",
+                etat_installation = "INS - Etat - Code",
+                date_etat_installation = "INS - Début d'usage - Date",
+                code_responsable_suivi = "INS - Resp. suivi - Code",
+                motif_abandon = "INS - Motif d'abandon - Libellé",
+                code_commune_captage = "COM - Code INSEE (5 car)",
+                nom_commune_captage = "COM - Nom",
+                code_bss = "CAP - BSS - Code",
+                designation_bss = "CAP - BSS - Désignation",
+                coordonnee_x = "PSV - Coordonnée X",
+                coordonnee_y = "PSV - Coordonnée Y",
+                coordonnee_z = "PSV - Coordonnée Z",
+                debit_moyen_m3j = "INS - Débit moyen/jour - m3/j")
 
 ```
 
@@ -187,7 +109,6 @@ table_de_passage_bss_000 <- datalibaba::importer_data(
   db = "si_eau",
   user = "admin"
 )
-
 ```
 
 Les anciens codes BSS de l'export transmis par l'ARS sont remplacés par les 
@@ -195,7 +116,7 @@ nouveaux codes issus de la table de passage fournie par le BRGM lorsque la
 jointure est possible :
 ```{r update_code_bss, eval=FALSE}
 # Mettre à jour la variable `code_bss` du dataframe `captage`
-captage_bss <- captage_full |>
+captage_bss <- captage |>
   dplyr::left_join(table_de_passage_bss_000, by = c("code_bss" = "indice")) |>
   dplyr::mutate(code_bss = ifelse(!is.na(nouvel_identifiant), nouvel_identifiant, code_bss)) |>
   dplyr::select(departement_captage:debit_moyen_m3j)
@@ -205,7 +126,7 @@ captage_bss <- captage_full |>
 Vérification des résultats de la jointure :
 ```{r dev-count_empty_bss, eval=FALSE}
 # Compter le nombre de valeurs vides dans captage_full
-nb_code_bss_vide_captage <- captage_full |>
+nb_code_bss_vide_captage <- captage |>
   dplyr::summarise(nb_code_bss_vide = sum(is.na(code_bss)))
 
 # Compter le nombre de valeurs vides dans captage_bss
@@ -239,11 +160,11 @@ cat("Le fichier captage_eso_sans_code_bss.csv a été enregistré avec succès.\
 ```{r check_attributes_n_captage_p_r52, eval=FALSE}
 # Comparer la structure du dataframe avec celle de la table en base 
 collectr::check_structure_table(dataframe = captage, 
+                                host = Sys.getenv("server"),
                                 database = "si_eau",
                                 table = "n_captage_p_r52", 
                                 schema = "captages",
                                 role = "admin")
-
 ```
 
 ## Création d'un dataframe avec les enregistrements sans coordonnées ou des coordonées erronées
@@ -255,7 +176,6 @@ captage_sans_geom <- captage_bss |>
   dplyr::mutate(coordonnee_x = ifelse(coordonnee_x %in% c(1, 3), NA, coordonnee_x),
                 coordonnee_y = ifelse(coordonnee_y %in% c(1, 3), NA, coordonnee_y)) |>
   dplyr::filter(is.na(coordonnee_x) | is.na(coordonnee_y))
-
 ```
 
 ```{r save_captage_sans_geom, eval=FALSE}
@@ -266,7 +186,6 @@ utils::write.csv(captage_sans_geom,
 
 # Afficher un message de confirmation
 cat("Le fichier captage_sans_geom.csv a été enregistré avec succès.\n")
-
 ```
 
 ## Encodage de la géométrie
@@ -285,7 +204,6 @@ captage_geom <- sf::st_as_sf(captage_with_xy,
                         crs = 2154,
                         remove = FALSE) |>
   dplyr::rename(the_geom = geometry)
-
 ```
 
 ## Fusion des deux dataframes avec et sans géométrie
@@ -293,7 +211,6 @@ captage_geom <- sf::st_as_sf(captage_with_xy,
 Reconstitution du lot de données complet (avec et sans géométrie valide) :
 ```{r merge_dataframes, eval=FALSE}
 n_captage_p_r52 <- dplyr::bind_rows(captage_geom, captage_sans_geom)
-
 ```
 
 # Publication de la table en base
@@ -302,31 +219,12 @@ n_captage_p_r52 <- dplyr::bind_rows(captage_geom, captage_sans_geom)
 
 La version précédente de l'export est stockée dans un schéma d'archive :
 ```{r archive_old_table, eval=FALSE}
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "n_captage_p_r52", 
                         schema = "captages",
                         new_schema = "zz_archives",
                         role = "admin")
-
-```
-
-## Ajout de la contrainté géomatique concernant le type de géométries
-
-```{r dev-update_geometry_n_captage_p_r52}
-# Connexion à la base de données PostgreSQL
-connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
-
-# Requête SQL pour ajouter la contrainte à la colonne the_geom
-constraint_query <-
-"ALTER TABLE captages.n_captage_p_r52
-ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
-
-# Exécution de la requête ALTER TABLE
-DBI::dbExecute(connexion, constraint_query)
-
-# Fermeture de la connexion
-DBI::dbDisconnect(connexion)
-
 ```
 
 ## Récupération des commentaires de la version précédente de la table 
@@ -339,7 +237,6 @@ n_captage_p_r52_comments <- datalibaba::get_table_comments(table = "n_captage_p_
   dplyr::filter(!is.na(nom_col)) |> 
   dplyr::select(nom_col, commentaire) |>
   dplyr::arrange(nom_col)
-
 ```
 
 ## Publication de la table actualisée
@@ -353,7 +250,24 @@ datalibaba::poster_data(data = n_captage_p_r52,
                         pk = "code_captage",
                         overwrite = TRUE,
                         user = "admin")
+```
+
+## Ajout de la contrainte géomatique concernant le type de géométries
+
+```{r dev-update_geometry_n_captage_p_r52}
+# Connexion à la base de données PostgreSQL
+connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
+
+# Requête SQL pour ajouter la contrainte à la colonne the_geom
+constraint_query <-
+"ALTER TABLE captages.n_captage_p_r52
+ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
+
+# Exécution de la requête ALTER TABLE
+DBI::dbExecute(connexion, constraint_query)
 
+# Fermeture de la connexion
+DBI::dbDisconnect(connexion)
 ```
 
 ## Publication de la description de la table actualisée
@@ -365,7 +279,6 @@ datalibaba::commenter_table(
   schema = "captages",
   db = "si_eau",
   user = "admin")
-
 ```
 
 ## Publication des commentaires des champs de la table actualisée
@@ -376,26 +289,6 @@ datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
                            schema = "captages",
                            db = "si_eau",
                            user = "admin")
-
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des captages ARS",
-  template_dir = "update_captage",
-  template_description = "Mise à jour des captages ARS",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_captage.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_captage/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
 ```
 
 ```{r development-inflate, eval=FALSE}
diff --git a/dev/flat_update_captage_ep.Rmd b/dev/flat_update_captage_ep.Rmd
index 6fa4c6ed731816fbea234d377403ed301bd8d1a2..9ac2e9c475a47dffb653847e3e889c07df64d12a 100644
--- a/dev/flat_update_captage_ep.Rmd
+++ b/dev/flat_update_captage_ep.Rmd
@@ -53,17 +53,19 @@ n_captage_eau_potable_p_r52 <- n_captage_p_r52 |>
 ## Vérification de la correspondance des variables avec les champs stockés en base
 
 ```{r check-attributes, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::check_structure_table(connexion, 
-                                df = n_captage_eau_potable_p_r52, 
-                                table_name = "n_captage_eau_potable_p_r52", 
-                                schema = "alimentation_eau_potable")
+collectr::check_structure_table(dataframe = n_captage_eau_potable_p_r52,
+                                host = Sys.getenv("server"),
+                                database = "si_eau",
+                                table = "n_captage_eau_potable_p_r52", 
+                                schema = "alimentation_eau_potable",
+                                role = "admin")
 ```
 
 ## Archivage de la version précédente de la table
 
 ```{r archive-old-table, eval=FALSE}
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "n_captage_eau_potable_p_r52", 
                         schema = "alimentation_eau_potable",
                         new_schema = "zz_archives",
@@ -73,10 +75,11 @@ collectr::archive_table(database = "si_eau",
 ## Récupération des commentaires de la version précédente de la table 
 
 ```{r get-comments-old-table, eval=FALSE}
-n_captage_eau_potable_p_r52_comments <- datalibaba::get_table_comments(
-  table = "n_captage_eau_potable_p_r52",
-  schema = "alimentation_eau_potable",
-  db = "si_eau") |> 
+n_captage_eau_potable_p_r52_comments <- 
+  datalibaba::get_table_comments(
+    table = "n_captage_eau_potable_p_r52",
+    schema = "alimentation_eau_potable",
+    db = "si_eau") |> 
   dplyr::filter(!is.na(nom_col)) |> 
   dplyr::select(nom_col, commentaire) |>
   dplyr::arrange(nom_col)
@@ -94,6 +97,24 @@ datalibaba::poster_data(data = n_captage_eau_potable_p_r52,
                         user = "admin")
 ```
 
+## Ajout de la contrainte géomatique concernant le type de géométries
+
+```{r dev-update_geometry_n_captage_eau_potable_p_r52}
+# Connexion à la base de données PostgreSQL
+connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
+
+# Requête SQL pour ajouter la contrainte à la colonne the_geom
+constraint_query <-
+"ALTER TABLE alimentation_eau_potable.n_captage_eau_potable_p_r52
+ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
+
+# Exécution de la requête ALTER TABLE
+DBI::dbExecute(connexion, constraint_query)
+
+# Fermeture de la connexion
+DBI::dbDisconnect(connexion)
+```
+
 ## Publication de la description de la table actualisée
 
 ```{r publish-new-table-comment, eval=FALSE}
@@ -102,8 +123,7 @@ datalibaba::commenter_table(
   table = "n_captage_eau_potable_p_r52",
   schema = "alimentation_eau_potable",
   db = "si_eau",
-  user= "admin"
-)
+  user= "admin")
 ```
 
 ## Publication des commentaires des champs de la table actualisée
@@ -113,27 +133,7 @@ datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
                            table = "n_captage_eau_potable_p_r52",
                            schema = "alimentation_eau_potable",
                            db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des captages en eau potable",
-  template_dir = "update_captage_ep",
-  template_description = "Mise à jour des captages en eau potable",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_captage_ep.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_captage_ep/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
+                           user = "admin")
 ```
 
 ```{r development-inflate, eval=FALSE}
diff --git a/dev/flat_update_hubeau_qualite_nappe_station.Rmd b/dev/flat_update_hubeau_qualite_nappe_station.Rmd
index 46d30a67afbc7ca3229050a6a36ef82c30110d00..6f996eb30ee1222c1c396e1aa6846a45bfef5416 100644
--- a/dev/flat_update_hubeau_qualite_nappe_station.Rmd
+++ b/dev/flat_update_hubeau_qualite_nappe_station.Rmd
@@ -1,5 +1,5 @@
 ---
-title: "Mise à jour des stations Hub'eau nappes d'eau souterraine"
+title: "Mise \u00e0 jour des stations Hubeau nappes d'eau souterraine"
 output: html_document
 editor_options: 
   chunk_output_type: console
@@ -10,18 +10,16 @@ library(hubeau)
 library(sf)
 library(dplyr)
 library(usethis)
-
 ```
 
 ```{r development-load}
 # Load already included functions if relevant
 pkgload::load_all(export_all = FALSE)
-
 ```
 
 # Objectif
 
-Actualiser les **stations de mesure des qualités des nappes d'eau souterraine (ESO)** à partir de l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans une base de données PostgreSQL.
+Actualiser les **stations de mesure des qualités des nappes d'eau souterraine (ESO)** \u00e0 partir de l'[API Hub'eau \"Qualit\u00e9 des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans une base de données PostgreSQL.
 
 # Création du dataframe
 
@@ -31,21 +29,18 @@ Téléchargement des données du bassin Loire-Bretagne :
 ```{r get_hubeau_qualite_nappes_stations_lb, eval=FALSE}
 hubeau_qualite_nappes_stations_lb <- hubeau::get_qualite_nappes_stations(
   circonscription_administrative_bassin="Loire-Bretagne")
-
 ```
 
 Téléchargement des données du bassin Seine-Normandie en Mayenne :
 ```{r get_hubeau_qualite_nappes_stations_53, eval=FALSE}
 hubeau_qualite_nappes_stations_53 <- hubeau::get_qualite_nappes_stations(
   circonscription_administrative_bassin="Seine-Normandie",num_departement="53")
-
 ```
 
 Fusion des deux dataframes :
 ```{r merge_hubeau_qualite_nappes_stations, eval=FALSE}
 hubeau_qualite_nappes_stations <- dplyr::bind_rows(
   hubeau_qualite_nappes_stations_lb, hubeau_qualite_nappes_stations_53)
-
 ```
 
 ## Création d'un champs de géométrie
@@ -53,7 +48,6 @@ hubeau_qualite_nappes_stations <- dplyr::bind_rows(
 ```{r create_the_geom, eval=FALSE}
 # Création de la géométrie
 hubeau_sf <- create_hubeau_geom(hubeau_qualite_nappes_stations)
-
 ```
 
 # Publication de la table en base
@@ -63,12 +57,12 @@ hubeau_sf <- create_hubeau_geom(hubeau_qualite_nappes_stations)
 La version précédente de la table est stockée dans un schéma d'archive :
 ```{r archive_old_table, eval=FALSE}
 # connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "hubeau_qualite_nappes_stations", 
                         schema = "qualite_nappes_eau_souterraine",
                         new_schema = "zz_archives",
                         role = "admin")
-
 ```
 
 ## Publication de la table actualisée
@@ -82,7 +76,24 @@ datalibaba::poster_data(data = hubeau_sf,
                         pk = "bss_id",
                         overwrite = TRUE,
                         user = "admin")
+```
+
+## Ajout de la contrainte géomatique concernant le type de géométries
+
+```{r dev-update_geometry_hubeau_qualite_nappes_stations, eval=FALSE}
+# Connexion à la base de données PostgreSQL
+connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
 
+# Requête SQL pour ajouter la contrainte à la colonne the_geom
+constraint_query <-
+"ALTER TABLE qualite_nappes_eau_souterraine.hubeau_qualite_nappes_stations
+ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
+
+# Exécution de la requête ALTER TABLE
+DBI::dbExecute(connexion, constraint_query)
+
+# Fermeture de la connexion
+DBI::dbDisconnect(connexion)
 ```
 
 ## Publication de la description de la table actualisée
@@ -90,13 +101,12 @@ datalibaba::poster_data(data = hubeau_sf,
 ```{r publish_new_table_comment, eval=FALSE}
 date_today  <- format(Sys.time(), format = "%d/%m/%Y")
 datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesure des qualités des nappes d'eau souterraine (ESO) - Bassin Loire-Bretagne (source : Hub'eau)"),
+  comment = glue::glue("Stations de mesure des qualit\u00e9s des nappes d\'eau souterraine (ESO) - Bassin Loire-Bretagne (source : Hub\'eau)"),
   table = "hubeau_qualite_nappes_stations",
   schema = "qualite_nappes_eau_souterraine",
   db = "si_eau",
   user = "admin"
 )
-
 ```
 
 ## Ajout des commentaires
@@ -104,108 +114,108 @@ datalibaba::commenter_table(
 ```{r add_comments, eval=FALSE}
 # Création d'une liste avec les noms des variables et leurs descriptions
 variables <- c(
-  "bss_id", "Nouveau code national de la station, cf plus d'info ici http://infoterre.brgm.fr/nouveau-code-bss",
+  "bss_id", "Nouveau code national de la station, cf plus d\'info ici http://infoterre.brgm.fr/nouveau-code-bss",
   "code_bss", "Ancien code de la station (code BSS)",
   "urn_bss", "URN de la station",
-  "date_debut_mesure", "Date de début des mesures qualité sur cette station",
-  "date_fin_mesure", "Dernière date de mesure qualité connue pour sur cette station",
-  "precision_coordonnees", "Précision des coordonnées sur cette station",
+  "date_debut_mesure", "Date de d\u00e9but des mesures qualit\u00e9 sur cette station",
+  "date_fin_mesure", "Derni\u00e8re date de mesure qualit\u00e9 connue pour sur cette station",
+  "precision_coordonnees", "Pr\u00e9cision des coordonn\u00e9es sur cette station",
   "longitude", "Longitude la station (WGS84)",
   "latitude", "Latitude la station (WGS84)",
   "altitude", "Altitude NGF de la station",
-  "code_insee", "Code insee de la commune où se trouve la station",
-  "nom_commune", "Nom de la commune où se trouve la station",
-  "num_departement", "Code du département où se trouve la station",
-  "nom_departement", "Nom du département où se trouve la station",
-  "nom_region", "Nom nouvelle région où se trouve la station",
-  "circonscriptions_administrative_bassin", "Circonscription administrative de bassin concernée",
+  "code_insee", "Code insee de la commune o\u00f9 se trouve la station",
+  "nom_commune", "Nom de la commune o\u00f9 se trouve la station",
+  "num_departement", "Code du d\u00e9partement o\u00f9 se trouve la station",
+  "nom_departement", "Nom du d\u00e9partement o\u00f9 se trouve la station",
+  "nom_region", "Nom nouvelle r\u00e9gion o\u00f9 se trouve la station",
+  "circonscriptions_administrative_bassin", "Circonscription administrative de bassin concern\u00e9e",
   "bassin_dce", "Bassin DCE",
   "urn_bassin_dce", "URN du bassin DCE",
-  "code_nature_pe", "Code de la nature du point d'eau (forage, puits, source)",
-  "nom_nature_pe", "Nom de la nature du point d'eau (forage, puits, source)",
-  "uri_nature_pe", "URI de la nature du point d'eau (forage, puits, source)",
-  "libelle_pe", "Libellé du point d'eau",
-  "code_caracteristique_aquifere", "Code des caractéristiques de l'aquifère au droit du point d'eau",
-  "nom_caracteristique_aquifere", "Nom des caractéristiques de l'aquifère au droit du point d'eau",
-  "uri_caracteristique_aquifere", "URI des caractéristiques de l'aquifère au droit du point d'eau",
-  "code_etat_pe", "Code de l'état du point d'eau",
-  "nom_etat_pe", "Nom de l'état du point d'eau",
-  "uri_etat_pe", "URI de l'état du point d'eau",
-  "code_mode_gisement", "Code du mode de gisement du point d'eau",
-  "nom_mode_gisement", "Nom du mode de gisement du point d'eau",
-  "uri_mode_gisement", "URI du mode de gisement du point d'eau",
-  "profondeur_investigation", "Profondeur d'investigation (m)",
-  "commentaire_pe", "Commentaire sur le point d'eau",
-  "codes_entite_hg_bdlisa1", "Entité hydrogéologique dans le référentiel bdlisa",
-  "codes_entite_hg_bdlisa2", "Entité hydrogéologique dans le référentiel bdlisa",
-  "codes_entite_hg_bdlisa3", "Entité hydrogéologique dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa1", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa2", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa3", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "urns_bdlisa1", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "urns_bdlisa2", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "urns_bdlisa3", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "codes_masse_eau_rap1", "Codes Masses d'eau de type Rapportage",
-  "codes_masse_eau_rap2", "Codes Masses d'eau de type Rapportage",
-  "noms_masse_eau_rap1", "Noms des masses d'eau de type 'rapportage' liées au point d'eau",
-  "noms_masse_eau_rap2", "Noms des masses d'eau de type 'rapportage' liées au point d'eau",
-  "urns_masse_eau_rap1", "URN des masse d'eau RAP actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "urns_masse_eau_rap2", "URN des masse d'eau RAP actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "codes_masse_eau_edl1", "Codes Masses d'eau de type Etat des lieux",
-  "codes_masse_eau_edl2", "Codes Masses d'eau de type Etat des lieux",
-  "noms_masse_eau_edl1", "Noms des masses d'eau de type 'état des lieux' liées au point d'eau",
-  "noms_masse_eau_edl2", "Noms des masses d'eau de type 'état des lieux' liées au point d'eau",
-  "urns_masse_eau_edl1", "URN des masse d'eau EDL actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "urns_masse_eau_edl2", "URN des masse d'eau EDL actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "codes_reseau1", "Réseaux de mesure concernés",
-  "codes_reseau2", "Réseaux de mesure concernés",
-  "codes_reseau3", "Réseaux de mesure concernés",
-  "codes_reseau4", "Réseaux de mesure concernés",
-  "codes_reseau5", "Réseaux de mesure concernés",
-  "codes_reseau6", "Réseaux de mesure concernés",
-  "codes_reseau7", "Réseaux de mesure concernés",
-  "codes_reseau8", "Réseaux de mesure concernés",
-  "codes_reseau9", "Réseaux de mesure concernés",
-  "codes_reseau10", "Réseaux de mesure concernés",
-  "codes_reseau11", "Réseaux de mesure concernés",
-  "codes_reseau12", "Réseaux de mesure concernés",
-  "codes_reseau13", "Réseaux de mesure concernés",
-  "codes_reseau14", "Réseaux de mesure concernés",
-  "codes_reseau15", "Réseaux de mesure concernés",
-  "noms_reseau1", "Noms des réseaux de mesure concernés",
-  "noms_reseau2", "Noms des réseaux de mesure concernés",
-  "noms_reseau3", "Noms des réseaux de mesure concernés",
-  "noms_reseau4", "Noms des réseaux de mesure concernés",
-  "noms_reseau5", "Noms des réseaux de mesure concernés",
-  "noms_reseau6", "Noms des réseaux de mesure concernés",
-  "noms_reseau7", "Noms des réseaux de mesure concernés",
-  "noms_reseau8", "Noms des réseaux de mesure concernés",
-  "noms_reseau9", "Noms des réseaux de mesure concernés",
-  "noms_reseau10", "Noms des réseaux de mesure concernés",
-  "noms_reseau11", "Noms des réseaux de mesure concernés",
-  "noms_reseau12", "Noms des réseaux de mesure concernés",
-  "noms_reseau13", "Noms des réseaux de mesure concernés",
-  "noms_reseau14", "Noms des réseaux de mesure concernés",
-  "noms_reseau15", "Noms des réseaux de mesure concernés",
-  "uris_reseau1", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau2", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau3", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau4", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau5", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau6", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau7", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau8", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau9", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau10", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau11", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau12", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau13", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau14", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau15", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "geometry_type", "Type de géométrie",
-  "geometry_crs_type", "Type de valeur du système de référence spatial",
-  "geometry_crs_properties_name", "Système de référence spatial",
-  "the_geom", "Géométrie de la station de mesure"
+  "code_nature_pe", "Code de la nature du point d\'eau (forage, puits, source)",
+  "nom_nature_pe", "Nom de la nature du point d\'eau (forage, puits, source)",
+  "uri_nature_pe", "URI de la nature du point d\'eau (forage, puits, source)",
+  "libelle_pe", "Libell\u00e9 du point d\'eau",
+  "code_caracteristique_aquifere", "Code des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "nom_caracteristique_aquifere", "Nom des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "uri_caracteristique_aquifere", "URI des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "code_etat_pe", "Code de l\'\u00e9tat du point d\'eau",
+  "nom_etat_pe", "Nom de l\'\u00e9tat du point d\'eau",
+  "uri_etat_pe", "URI de l\'\u00e9tat du point d\'eau",
+  "code_mode_gisement", "Code du mode de gisement du point d\'eau",
+  "nom_mode_gisement", "Nom du mode de gisement du point d\'eau",
+  "uri_mode_gisement", "URI du mode de gisement du point d\'eau",
+  "profondeur_investigation", "Profondeur d\'investigation (m)",
+  "commentaire_pe", "Commentaire sur le point d\'eau",
+  "codes_entite_hg_bdlisa1", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "codes_entite_hg_bdlisa2", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "codes_entite_hg_bdlisa3", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa1", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa2", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa3", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "urns_bdlisa1", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "urns_bdlisa2", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "urns_bdlisa3", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "codes_masse_eau_rap1", "Codes Masses d\'eau de type Rapportage",
+  "codes_masse_eau_rap2", "Codes Masses d\'eau de type Rapportage",
+  "noms_masse_eau_rap1", "Noms des masses d\'eau de type \'rapportage\' li\u00e9es au point d\'eau",
+  "noms_masse_eau_rap2", "Noms des masses d\'eau de type \'rapportage\' li\u00e9es au point d\'eau",
+  "urns_masse_eau_rap1", "URN des masse d\'eau RAP actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "urns_masse_eau_rap2", "URN des masse d\'eau RAP actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "codes_masse_eau_edl1", "Codes Masses d\'eau de type Etat des lieux",
+  "codes_masse_eau_edl2", "Codes Masses d\'eau de type Etat des lieux",
+  "noms_masse_eau_edl1", "Noms des masses d\'eau de type \'\u00e9tat des lieux\' li\u00e9es au point d\'eau",
+  "noms_masse_eau_edl2", "Noms des masses d\'eau de type \'\u00e9tat des lieux\' li\u00e9es au point d\'eau",
+  "urns_masse_eau_edl1", "URN des masse d\'eau EDL actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "urns_masse_eau_edl2", "URN des masse d\'eau EDL actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "codes_reseau1", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau2", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau3", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau4", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau5", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau6", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau7", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau8", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau9", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau10", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau11", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau12", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau13", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau14", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau15", "R\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau1", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau2", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau3", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau4", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau5", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau6", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau7", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau8", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau9", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau10", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau11", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau12", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau13", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau14", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau15", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "uris_reseau1", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau2", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau3", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau4", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau5", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau6", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau7", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau8", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau9", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau10", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau11", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau12", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau13", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau14", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau15", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "geometry_type", "Type de g\u00e9om\u00e9trie",
+  "geometry_crs_type", "Type de valeur du syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "geometry_crs_properties_name", "Syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "the_geom", "G\u00e9om\u00e9trie de la station de mesure"
 )
 
 # Créer le dataframe avec les variables
@@ -223,33 +233,12 @@ datalibaba::post_dico_attr(
   db = "si_eau",
   user = "admin"
 )
-
-```
-
-```{r development_create_template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations Hub'eau nappes d'eau souterraine",
-  template_dir = "update_hubeau_qualite_nappe_station",
-  template_description = "Mise à jour des stations Hub'eau nappes d'eau souterraine",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_hubeau_qualite_nappe_station.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-
 ```
 
 ```{r development-inflate, eval=FALSE}
 # Run but keep eval=FALSE to avoid infinite loop
 # Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_nappe_station.Rmd", vignette_name = "Mise à jour des stations Hub'eau nappes d'eau souterraine")
+fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_nappe_station.Rmd", vignette_name = "Mise \u00e0 jour des stations Hubeau nappes d\'eau souterraine")
 
 ```
 
diff --git a/dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd b/dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd
index 1cf08bebb94dcba8e9a0d89cc2ed3129884020a3..977412aaf08ddc37b46286e2bf763376b39acb74 100644
--- a/dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd
+++ b/dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd
@@ -1,5 +1,5 @@
 ---
-title: "Mise à jour des stations Hub'eau cours d'eau et plan d'eau"
+title: "Mise \u00e0 jour des stations Hubeau cours d'eau et plan d'eau"
 output: html_document
 editor_options: 
   chunk_output_type: console
@@ -19,7 +19,7 @@ pkgload::load_all(export_all = FALSE)
 
 # Objectif
 
-Actualiser les **stations de mesures physicochimique sur des cours d'eau et plan d'eau** à partir de l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans une base de données PostgreSQL.
+Actualiser les **stations de mesures physicochimique sur des cours d'eau et plan d'eau** à partir de l'[API Hub'eau "Qualit\u00e9 des cours d\'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans une base de données PostgreSQL.
 
 # Création du dataframe
 
@@ -41,17 +41,17 @@ hubeau_sf <- create_hubeau_geom(hubeau_qualite_rivieres_station_pc)
 Dans la variable `libelle_station` :
 ```{r replace-encoding-problems, eval=FALSE}
 # Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<e0>", "À", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<e0>", "\u00c0", hubeau_sf$libelle_station)
 # Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c0>", "À", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c0>", "\u00c0", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c8>", "È", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c8>", "\u00c8", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c9>", "É", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c9>", "\u00c9", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c2>", "Â", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c2>", "\u00c2", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<d4>", "Ô", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<d4>", "\u00d4", hubeau_sf$libelle_station)
 ```
 
 # Publication de la table en base
@@ -61,7 +61,8 @@ hubeau_sf$libelle_station <- gsub("<d4>", "Ô", hubeau_sf$libelle_station)
 La version précédente de la table est stockée dans un schéma d'archive :
 ```{r archive-old-table, eval=FALSE}
 connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "hubeau_qualite_rivieres_station_pc", 
                         schema = "qualite_cours_d_eau",
                         new_schema = "zz_archives",
@@ -86,7 +87,7 @@ datalibaba::poster_data(data = hubeau_sf,
 ```{r publish-new-table-comment, eval=FALSE}
 date_today  <- format(Sys.time(), format = "%d/%m/%Y")
 datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesures physicochimique sur des cours d'eau et plan d'eau (eau de surface : ESU) (source : Hub'eau)"),
+  comment = glue::glue("Stations de mesures physicochimique sur des cours d\'eau et plan d\'eau (eau de surface : ESU) (source : Hub\'eau)"),
   table = "hubeau_qualite_rivieres_station_pc",
   schema = "qualite_cours_d_eau",
   db = "si_eau",
@@ -94,58 +95,76 @@ datalibaba::commenter_table(
 )
 ```
 
+## Ajout de la contrainte géomatique concernant le type de géométries
+
+```{r dev-update_geometry_hubeau_qualite_rivieres_station_pc, eval=FALSE}
+# Connexion à la base de données PostgreSQL
+connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
+
+# Requête SQL pour ajouter la contrainte à la colonne the_geom
+constraint_query <-
+"ALTER TABLE qualite_cours_d_eau.hubeau_qualite_rivieres_station_pc
+ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
+
+# Exécution de la requête ALTER TABLE
+DBI::dbExecute(connexion, constraint_query)
+
+# Fermeture de la connexion
+DBI::dbDisconnect(connexion)
+```
+
 ## Ajout des commentaires
 
 ```{r add-comments, eval=FALSE}
 # Création d'une liste avec les noms des variables et leurs descriptions
 variables <- c(
-  "code_station", "Code Sandre de la station de mesure. dans le référentiel national Sandre Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/stq.json",
-  "libelle_station", "Libellé Sandre de la station de mesure",
+  "code_station", "Code Sandre de la station de mesure. dans le r\u00e9f\u00e9rentiel national Sandre Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/stq.json",
+  "libelle_station", "Libell\u00e9 Sandre de la station de mesure",
   "uri_station", "URI station Sandre",
-  "durete", "Dureté moyenne de l'eau",
-  "coordonnee_x", "Coordonnée X du point caractéristique de la station de mesure",
-  "coordonnee_y", "Coordonnée Y du point caractéristique de la station de mesure",
-  "code_projection", "Code Sandre du système de projection des coordonnées de la station de mesure",
-  "libelle_projection", "Libellé Sandre du système de projection des coordonnées de la station de mesure",
-  "longitude", "Longitude la station de mesure dans le système de coordonnées WGS84",
-  "latitude", "Latitude de la station de mesure dans le système de coordonnées WGS84",
+  "durete", "Duret\u00e9 moyenne de l\'eau",
+  "coordonnee_x", "Coordonn\u00e9e X du point caract\u00e9ristique de la station de mesure",
+  "coordonnee_y", "Coordonn\u00e9e Y du point caract\u00e9ristique de la station de mesure",
+  "code_projection", "Code Sandre du syst\u00e8me de projection des coordonn\u00e9es de la station de mesure",
+  "libelle_projection", "Libell\u00e9 Sandre du syst\u00e8me de projection des coordonn\u00e9es de la station de mesure",
+  "longitude", "Longitude la station de mesure dans le syst\u00e8me de coordonn\u00e9es WGS84",
+  "latitude", "Latitude de la station de mesure dans le syst\u00e8me de coordonn\u00e9es WGS84",
   "code_commune", "Code INSEE de la commune de rattachement de la station de mesure",
-  "libelle_commune", "Libellé de la commune de rattachement de la station de mesure",
-  "code_departement", "Code INSEE du département de rattachement de la station de mesure",
-  "libelle_departement", "Libellé du département de rattachement de la station de mesure",
-  "code_region", "Code INSEE de la région de rattachement de la station de mesure",
-  "libelle_region", "Libellé INSEE de la région de rattachement de la station de mesure",
-  "code_cours_eau", "Code Sandre de l'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/cea.json (cours d'eau) et https://api.sandre.eaufrance.fr/referentiels/v1/pla.json (plan d'eau)",
-  "nom_cours_eau", "Libellé long Sandre de l'entité hydrographique associée à la station de mesure",
-  "uri_cours_eau", "URI du cours d'eau",
-  "nom_masse_deau", "Libellé de la masse d'eau de rattachement de la station de mesure",
-  "code_masse_deau", "Code national de la masse d'eau associé à la station de mesure",
-  "code_eu_masse_deau", "Code européen de la masse d'eau associé à la station de mesure",
-  "uri_masse_deau", "URI national de la masse d'eau de la station de mesure",
-  "code_eu_sous_bassin", "Code européen du sous-bassin DCE administratif",
-  "nom_sous_bassin", "Libellé du sous bassin DCE administratif",
+  "libelle_commune", "Libell\u00e9 de la commune de rattachement de la station de mesure",
+  "code_departement", "Code INSEE du d\u00e9partement de rattachement de la station de mesure",
+  "libelle_departement", "Libell\u00e9 du d\u00e9partement de rattachement de la station de mesure",
+  "code_region", "Code INSEE de la r\u00e9gion de rattachement de la station de mesure",
+  "libelle_region", "Libell\u00e9 INSEE de la r\u00e9gion de rattachement de la station de mesure",
+  "code_cours_eau", "Code Sandre de l\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/cea.json (cours d\'eau) et https://api.sandre.eaufrance.fr/referentiels/v1/pla.json (plan d\'eau)",
+  "nom_cours_eau", "Libell\u00e9 long Sandre de l\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure",
+  "uri_cours_eau", "URI du cours d\'eau",
+  "nom_masse_deau", "Libell\u00e9 de la masse d\'eau de rattachement de la station de mesure",
+  "code_masse_deau", "Code national de la masse d\'eau associ\u00e9 \u00e0 la station de mesure",
+  "code_eu_masse_deau", "Code europ\u00e9en de la masse d\'eau associ\u00e9 \u00e0 la station de mesure",
+  "uri_masse_deau", "URI national de la masse d\'eau de la station de mesure",
+  "code_eu_sous_bassin", "Code europ\u00e9en du sous-bassin DCE administratif",
+  "nom_sous_bassin", "Libell\u00e9 du sous bassin DCE administratif",
   "uri_sous_bassin", "URI du sous-bassin DCE",
   "code_bassin", "Code national du bassin DCE",
-  "code_eu_bassin", "Code européen du bassin DCE",
-  "nom_bassin", "Libellé du bassin DCE",
+  "code_eu_bassin", "Code europ\u00e9en du bassin DCE",
+  "nom_bassin", "Libell\u00e9 du bassin DCE",
   "uri_bassin", "URI du bassin DCE",
-  "type_entite_hydro", "Code Sandre de la nature d'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/796.json",
+  "type_entite_hydro", "Code Sandre de la nature d\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/796.json",
   "commentaire", "Commentaire sur la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "date_arret", "Date d'arrêt d'activité de la station de mesure",
-  "date_maj_information", "Date de mise à jour des informations sur la station de mesure",
-  "finalite", "Code Sandre de la finalité de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/645.json",
-  "localisation_precise", "Localisation précise de la station de mesure",
+  "date_creation", "Date de cr\u00e9ation de la station de mesure",
+  "date_arret", "Date d\'arr\u00eat d\'activit\u00e9 de la station de mesure",
+  "date_maj_information", "Date de mise \u00e0 jour des informations sur la station de mesure",
+  "finalite", "Code Sandre de la finalit\u00e9 de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/645.json",
+  "localisation_precise", "Localisation pr\u00e9cise de la station de mesure",
   "nature", "Code Sandre de la nature de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/62.json",
-  "altitude_point_caracteristique", "Altitude du point caractéristique de la station de mesure",
-  "point_kilometrique", "Pk du point caractéristique sur le tronçon de l'entité hydrographique principale associée à la station de mesure",
-  "premier_mois_annee_etiage", "Premier mois de l'année d'étiage de la station de mesure",
-  "superficie_bassin_versant_reel", "Superficie réelle du bassin versant réel",
+  "altitude_point_caracteristique", "Altitude du point caract\u00e9ristique de la station de mesure",
+  "point_kilometrique", "Pk du point caract\u00e9ristique sur le tron\u00e7on de l\'entit\u00e9 hydrographique principale associ\u00e9e \u00e0 la station de mesure",
+  "premier_mois_annee_etiage", "Premier mois de l\'ann\u00e9e d\'\u00e9tiage de la station de mesure",
+  "superficie_bassin_versant_reel", "Superficie r\u00e9elle du bassin versant r\u00e9el",
   "superficie_bassin_versant_topo", "Superficie topographique du bassin versant topographique",
-  "geometry_type", "Type de géométrie",
-  "geometry_crs_type", "Type de valeur du système de référence spatial",
-  "geometry_crs_properties_name", "Système de référence spatial",
-  "the_geom", "Géométrie de la station de mesure"
+  "geometry_type", "Type de g\u00e9om\u00e9trie",
+  "geometry_crs_type", "Type de valeur du syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "geometry_crs_properties_name", "Syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "the_geom", "G\u00e9om\u00e9trie de la station de mesure"
 )
 
 # Créer le dataframe avec les variables
@@ -165,28 +184,9 @@ datalibaba::post_dico_attr(
 )
 ```
 
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau",
-  template_dir = "update_hubeau_qualite_rivieres_station",
-  template_description = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
 ```{r development-inflate, eval=FALSE}
 # Run but keep eval=FALSE to avoid infinite loop
 # Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd", vignette_name = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau")
+fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd", vignette_name = "Mise \u00e0 jour des stations Hub\'eau cours d\'eau et plan d\'eau")
 ```
 
diff --git a/dev/flat_update_r_station_mesure_p_r52.Rmd b/dev/flat_update_r_station_mesure_p_r52.Rmd
index 158875ef8f010615d31b5fa9d8cf74571ec107bf..0c697ff767c787a8c9693735bb831ca0a788b800 100644
--- a/dev/flat_update_r_station_mesure_p_r52.Rmd
+++ b/dev/flat_update_r_station_mesure_p_r52.Rmd
@@ -1,5 +1,5 @@
 ---
-title: "Mise à jour des stations de mesure"
+title: "Mise \u00e0 jour des stations de mesure"
 output: html_document
 editor_options: 
   chunk_output_type: console
@@ -20,6 +20,14 @@ library(usethis)
 pkgload::load_all(export_all = FALSE)
 ```
 
+```{r config, eval=FALSE}
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
+
+# Accéder à la valeur pour year
+year <- config$year
+```
+
 # Objectif
 
 Actualiser les **stations de mesure eau souterraine (ESO) et eau de surface (ESU)** 
@@ -68,53 +76,38 @@ data_esu_sandre <- datalibaba::importer_data(
 
 ## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
 
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
+Renommage et ajout de variables :
 ```{r consolidate_stations_hubeau_eso, eval=FALSE}
 stations_eso_hubeau <- data_eso_hubeau |> 
   dplyr::rename(libelle_station = nom_commune,
                 date_creation = date_debut_mesure,
                 code_commune = code_insee) |>
   dplyr::mutate(code_sise_eaux = NA,
+                code_naiades = NA,
                 source = "HUBEAU",
                 nature_eau = "ESO",
-                code_masse_eau = NA) |>
-  dplyr::select(code_bss = bss_id,
-                code_sise_eaux,
-                libelle_station,
-                nature_eau,
-                date_creation,
-                source,
-                code_masse_eau = codes_masse_eau_edl,
-                code_commune,
-                the_geom)
+                code_masse_eau = NA)
 
 # Convertir les dates de la variable date_creation
 stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
 ```
 
-Remplacer les valeurs vides dans `code_sise_eaux` par NA dans `stations_eso_hubeau` :
-```{r na_code_sise_eaux, eval=FALSE}
-stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-```
-
-Réaliser la jointure sur la variable `code_bss` :
+Réaliser la jointure sur la variable `bss_id` :
 ```{r update_code_sise_eaux, eval=FALSE}
 # Supprimer l'objet géométrie du dataframe data_ars
 data_ars_no_geom <- data_ars |> sf::st_drop_geometry()
 
 # Réaliser une jointure attributaire
 stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::left_join(data_ars_no_geom, by = c("code_bss" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
+  dplyr::left_join(data_ars_no_geom, by = c("bss_id" = "code_bss")) |>
+  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux))
 ```
 
 Identification des doublons générés par la jointure de récupération des `code_sise_eaux` :
 ```{r get_duplicates_code_sise_eaux, eval=FALSE}
 # Compter les occurrences de chaque code_station
 doublons_stations_code_sise_eaux <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss) |>
+  dplyr::group_by(bss_id) |>
   dplyr::tally(name = "n") |>
   dplyr::filter(n > 1)
 
@@ -125,8 +118,8 @@ doublons_stations_code_sise_eaux <- stations_eso_hubeau |>
 
 # Joindre les informations additionnelles
 doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(stations_eso_hubeau_no_geom, by = "code_bss") |>
-  dplyr::select(code_bss, n, code_sise_eaux, libelle_station)
+  dplyr::left_join(stations_eso_hubeau_no_geom, by = "bss_id") |>
+  dplyr::select(bss_id, n, code_sise_eaux, libelle_station)
 
 # Visualiser les doublons
 print(doublons_stations_code_sise_eaux)
@@ -135,19 +128,36 @@ print(doublons_stations_code_sise_eaux)
 Suppression des doublons :
 ```{r delete_duplicates_code_sise_eaux, eval=FALSE}
 stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
+  dplyr::group_by(bss_id, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
+```
+
+Sélection finale des variables :
+```{r consolidate_stations_esu_sandre, eval=FALSE}
+stations_eso_hubeau <- stations_eso_hubeau |> 
+  dplyr::select(code_bss = bss_id,
+                code_sise_eaux,
+                code_naiades,
+                libelle_station,
+                date_creation,
+                nature_eau,
+                source,
+                code_masse_eau = codes_masse_eau_edl,
+                code_commune,
+                the_geom)
 ```
 
 ## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
 
-Sélection des variables et ajout de la source :
+Sélection et ajout de variables :
 ```{r consolidate_stations_esu_sandre, eval=FALSE}
 stations_esu_sandre <- data_esu_sandre |> 
   dplyr::mutate(code_bss = NA,
+                code_sise_eaux = NA,
                 source = "SANDRE",
                 nature_eau = "ESU") |>
   dplyr::select(code_bss,
-                code_sise_eaux = code_station,
+                code_sise_eaux,
+                code_naiades = code_station,
                 libelle_station,
                 date_creation,
                 nature_eau,
@@ -176,7 +186,7 @@ stations_ars_not_hubeau_sandre <- data_ars_with_geom |>
   sf::st_drop_geometry() |> 
   # Exclure les stations présentes dans stations_eso_hubeau et stations_esu_sandre
   dplyr::anti_join(stations_eso_hubeau, by = c("code_bss" = "code_bss")) |> 
-  dplyr::anti_join(stations_esu_sandre, by = c("code_captage" = "code_sise_eaux")) |> 
+  dplyr::anti_join(stations_esu_sandre, by = c("code_captage" = "code_naiades")) |> 
   # Récupérer les géométries par jointure avec data_ars
   dplyr::left_join(data_ars, by = "code_captage") |> 
   # Désélectionner toutes les variables finissant par .y
@@ -188,19 +198,34 @@ names(stations_ars_not_hubeau_sandre) <- gsub("\\.x$", "", names(stations_ars_no
 
 ## Consolidation des stations ARS
 
-Ajout de la source et sélection des variables :
+Ajout de la source :
 ```{r consolidate_stations_ars, eval=FALSE}
-# Ajouter la variable `source` et sélectionner les variables nécessaires
+# Ajouter la variable `source`
 stations_ars <- stations_ars_not_hubeau_sandre |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_bss = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                nature_eau = nature_eau_captage,
-                date_creation = date_etat_installation,
-                source,
-                code_commune = code_commune_captage,
-                the_geom)
+  dplyr::mutate(source = "ARS") 
+```
+
+## Ajout de la variable `code_naiades` pour les stations ARS
+
+Cet ajout ne concerne que les stations ESU :
+```{r add_code_naiades, eval=FALSE}
+# Créer et alimenter la variable `code_naiades` à partir de `code_sise_eaux`
+stations_ars <- stations_ars |> 
+  dplyr::mutate(
+    code_naiades = dplyr::case_when(
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^044") ~ stringr::str_replace(code_captage, "^044", "BS"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^049") ~ stringr::str_replace(code_captage, "^049", "BX"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^053") ~ stringr::str_replace(code_captage, "^053", "CB"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^072") ~ stringr::str_replace(code_captage, "^072", "CU"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^085") ~ stringr::str_replace(code_captage, "^085", "DH"),
+      TRUE ~ NA_character_  # Met NA si aucun pattern ne correspond
+    )
+  )
 ```
 
 ## Ajout du `code_masse_eau` pour les stations ARS
@@ -227,6 +252,22 @@ stations_ars <- stations_ars |>
               join = sf::st_within, left = TRUE)
 ```
 
+Sélection finale des variables :
+```{r select_variables_stations_ars, eval=FALSE}
+# Sélectionner les variables nécessaires
+stations_ars <- stations_ars |>
+  dplyr::select(code_bss,
+                code_sise_eaux = code_captage,
+                code_naiades,
+                libelle_station = nom_captage,
+                nature_eau = nature_eau_captage,
+                date_creation = date_etat_installation,
+                source,
+                code_masse_eau,
+                code_commune = code_commune_captage,
+                the_geom)
+```
+
 ## Fusion des trois dataframes
 
 ```{r merge_stations, eval=FALSE}
@@ -287,9 +328,9 @@ n_sage_r52_valid <- sf::st_make_valid(n_sage_r52_union)
 n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
 ```
 
-Sélection des stations ESU présentes dans les SAGE et la région :
+Sélection des stations présentes dans les SAGE et la région :
 ```{r st_intersects_stations_sage, eval=FALSE}
-# Filtrer les stations ESU présentes dans les SAGE de la région
+# Filtrer les stations présentes dans les SAGE de la région
 station_sage_r52 <- sf::st_filter(station_full, n_sage_r52_limit)
 ```
 
@@ -306,25 +347,6 @@ station_sage_r52 <- station_sage_r52 |>
   dplyr::mutate(id_station = dplyr::row_number()) 
 ```
 
-
-## Ajout de la variable `code_naiades`
-Cet ajout ne concerne que les stations ESU :
-```{r add_code_naiades, eval=FALSE}
-# Créer et alimenter la variable `code_naiades` à partir de `code_sise_eaux`
-station_sage_r52 <- station_sage_r52 |> 
-  dplyr::mutate(
-    code_naiades = dplyr::case_when(
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^044") ~ stringr::str_replace(code_sise_eaux, "^044", "BS"),
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^049") ~ stringr::str_replace(code_sise_eaux, "^049", "BX"),
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^053") ~ stringr::str_replace(code_sise_eaux, "^053", "CB"),
-      TRUE ~ NA_character_  # Met NA si aucun pattern ne correspond
-    )
-  )
-```
-
 ## Ajout de la variable `code_bassin_versant`
 
 Jointure spatiale entre `n_bassin_versant_specifique_000` et `station_sage_r52` :
@@ -332,8 +354,14 @@ Jointure spatiale entre `n_bassin_versant_specifique_000` et `station_sage_r52`
 # Réaliser une jointure spatiale pour récupérer la variable `code_bassin_versant`
 station_sage_r52 <- station_sage_r52 |>
   sf::st_join(n_bassin_versant_specifique_000 |> 
-                dplyr::select(code_bassin_versant = code_bassin_versant_specifique), 
-              join = sf::st_within, left = TRUE)
+                dplyr::select(code_bassin_versant = code_bassin_versant_specifique, 
+                              code_eu_masse_eau), 
+              join = sf::st_within, left = TRUE) |>
+  dplyr::mutate(code_bassin_versant = dplyr::if_else(
+    stringr::str_starts(code_bassin_versant, "H0000000"), 
+    code_eu_masse_eau, 
+    code_bassin_versant
+  ))
 ```
 
 Identification des doublons générés par la superposition de périmètres dans la table des bassins versants :
@@ -466,16 +494,13 @@ r_station_mesure_p_r52 <- station_sage_r52 |>
 ## Création dynamique du nom de la table avec l'année en cours
 
 ```{r create_table_name, eval=FALSE}
-# Définir l'année en cours
-current_year <- format(Sys.Date(), "%Y")
-
 # Construire dynamiquement le nom de la table
-table_name <- paste0("r_station_mesure_p_", current_year, "_r52")
+table_name <- paste0("r_station_mesure_p_", year, "_r52")
 ```
 
 ## Archivage de la version précédente de la table
 
-La version précédente de l'export est stockée dans un schéma d'archive :
+La version précédente de l'export est stock\u00e9e dans un sch\u00e9ma d'archive :
 ```{r archive_old_table, eval=FALSE}
 collectr::archive_table(host = Sys.getenv("server"),
                         database = "si_eau",
@@ -499,7 +524,7 @@ datalibaba::poster_data(data = r_station_mesure_p_r52,
                         user = "admin")
 ```
 
-## Mise à jour de la géométrie de la table `r_station_mesure_p_current_year_r52`
+## Mise à jour de la géométrie de la table `r_station_mesure_p_year_r52`
 
 ```{r update_geometry_r_station_mesure_p_current_year_r52, eval=FALSE}
 # Connexion à la base de données PostgreSQL
@@ -530,9 +555,9 @@ DBI::dbDisconnect(connexion)
 ```{r publish_new_table_comment, eval=FALSE}
 date_today  <- format(Sys.time(), format = "%d/%m/%Y")
 datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesure millésime ", 
-                       current_year, 
-                       " (source : ARS + Hub'eau + SANDRE, ", 
+  comment = glue::glue("Stations de mesure mill\u00e9sime ", 
+                       year, 
+                       " (source : ARS + Hub\'eau + SANDRE, ", 
                        date_today, ")"),
   table = table_name,
   schema = "stations",
@@ -546,20 +571,20 @@ datalibaba::commenter_table(
 ```{r publish_new_fields_comments, eval=FALSE}
 # Création d'une liste avec les noms des variables et leurs descriptions
 variables <- c(
-  "id_station", "Identifiant unique de la station de mesur",
+  "id_station", "Identifiant unique de la station de mesure",
   "code_bss", "Code BSS de la station de mesure",
   "code_sise_eaux", "Code SISE-EAUX de la station de mesure",  
-  "code_naiades", "Code Naïades de la station de mesure",
+  "code_naiades", "Code Na\u00efades de la station de mesure",
   "libelle_station", "Nom de la station de mesure",
-  "nature_eau", "Nature de l'eau de la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "source", "Source de la donnée",
-  "code_masse_eau", "Code de la masse d'eau de la station de mesure",
+  "nature_eau", "Nature de l\'eau de la station de mesure",
+  "date_creation", "Date de cr\u00e9ation de la station de mesure",
+  "source", "Source de la donn\u00e9e",
+  "code_masse_eau", "Code de la masse d\'eau de la station de mesure",
   "code_bassin_versant", "Code du bassin versant de la station de mesure",
   "code_commune", "Code INSEE  de la commune de la station de mesure",
   "code_sage", "Code du SAGE de la station de mesure",
   "captage_prioritaire", "Captaire prioritaire (T/F)",
-  "the_geom", "Géométrie ponctuelle de la station de mesure"
+  "the_geom", "G\u00e9om\u00e9trie ponctuelle de la station de mesure"
 )
 
 # Création du dataframe avec les variables
@@ -577,30 +602,10 @@ datalibaba::post_dico_attr(dico = comments,
                            user = "admin")
 ```
 
-## Mise à jour du skeleton
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations de mesure ESO et ESU",
-  template_dir = "update_r_station_mesure_p_r52",
-  template_description = "Mise à jour des stations de mesure ESO et ES",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_r_station_mesure_p_r52.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_r_station_mesure_p_r52/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
 ```{r development-inflate, eval=FALSE}
 # Run but keep eval=FALSE to avoid infinite loop
 # Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_r_station_mesure_p_r52.Rmd", vignette_name = "Mise à jour des stations de mesure")
+fusen::inflate(flat_file = "dev/flat_update_r_station_mesure_p_r52.Rmd", 
+               vignette_name = "Mise \u00e0 jour des stations de mesure")
 ```
 
diff --git a/dev/flat_update_station_eso.Rmd b/dev/flat_update_station_eso.Rmd
deleted file mode 100644
index 3d03e59588b7cee2df35ec11e137b6cd625dee9f..0000000000000000000000000000000000000000
--- a/dev/flat_update_station_eso.Rmd
+++ /dev/null
@@ -1,366 +0,0 @@
----
-title: "Mise à jour des stations ESO"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(collectr)
-library(datalibaba)
-library(dplyr)
-library(sf)
-library(usethis)
-
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser les **stations de mesure eau de souterraine (ESO)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `qualite_nappes_eau_souterraine.hubeau_qualite_nappes_stations` (source : Hub'eau)
-- `captages.n_captage_p_r52` (source : ARS)
-
-# Chargement des lot de données source
-
-## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
-```{r load_hubeau_qualite_nappes_stations, eval=FALSE}
-data_hubeau_eso <- datalibaba::importer_data(
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau")
-```
-
-## Captages ARS ESO
-Chargement de la table des captages en filtrant sur la nature de l'eau du captage et le début du `code_bss` : 
-```{r load_captages_ars_eso, eval=FALSE}
-data_ars_eso <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESO' & startsWith(code_bss, "BSS"))
-```
-
-Suppression des géométries vides :
-```{r delete-empty-geom, eval=FALSE}
-data_ars_with_geom = data_ars_eso[!sf::st_is_empty(data_ars_eso),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de Hub'eau
-
-```{r select_captages_ars_not_hubeau, eval=FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_hubeau <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_hubeau_eso, by = c("code_bss" = "bss_id"))
-
-# Récupérer les géométries par jointure avec stations_eso_ars
-data_ars_not_hubeau <- data_ars_not_hubeau |> 
-  dplyr::left_join(data_ars_eso, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_hubeau <- dplyr::select(data_ars_not_hubeau, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_hubeau) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_hubeau))
-```
-
-## Consolidation des stations Hub'eau
-
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
-```{r consolidate_stations_hubeau, eval=FALSE}
-stations_eso_hubeau <- data_hubeau_eso |> 
-  dplyr::rename(code_station = bss_id,
-                libelle_station = nom_commune,
-                date_creation = date_debut_mesure,
-                code_commune = code_insee) |>
-  dplyr::mutate(code_sise_eaux = "",
-                source = "HUBEAU") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-```{r consolidate_stations_ars, eval=FALSE}
-stations_eso_ars <- data_ars_not_hubeau |>
-  dplyr::rename(code_station = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge_stations, eval=FALSE}
-station_eso <- dplyr::bind_rows(stations_eso_hubeau, stations_eso_ars)
-```
-
-# Ajout des champs manquants au dataframe station_eso
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load_sage, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_eso` :
-```{r update_code_sage, eval=FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-```{r get_duplicates_code_sage, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_eso, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel, à exécuter si le tibble comporte des lignes) :
-```{r delete_station_duplicates_code_sage, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-```{r replace_code_sage_na, eval=FALSE}
-station_eso <- station_eso |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-```{r load_bassin-versant, eval=FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_eso` :
-```{r update_codes_bassin_versant_masse_eau, eval=FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-## Ajout du `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-```{r load_captage_prioritaire, eval=FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-```{r update_captage_prioriaire, eval=FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_eso <- station_eso |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_bss)
-```
-
-## Mise à jour du code_sise_eaux à partir des données ARS
-
-Remplacer les valeurs vides dans `code_station` par NA dans `station_eso` :
-```{r na_code_sise_eaux, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-```
-
-```{r update_codes_sise_eaux, eval=FALSE}
-# Supprimer l'objet géométrie du dataframe data_ars
-data_ars_eso <- data_ars_eso |>
-  sf::st_drop_geometry()
-
-# Réaliser une jointure attributaire
-station_eso <- station_eso |>
-  dplyr::left_join(data_ars_eso, by = c("code_station" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
-```
-
-Identification des doublons générés par la jointure de récupération des `code_sise_eaux` :
-```{r get_duplicates_code_sise_eaux, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sise_eaux <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-  doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  sf::st_drop_geometry()
-  station_eso_sans_geom <- station_eso |> sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(station_eso_sans_geom, by = "code_station") |>
-  dplyr::select(code_station, n, code_sise_eaux, libelle_station)
-
-# Visualiser les doublons
-print(doublons_stations_code_sise_eaux)
-```
-
-Suppression des doublons :
-```{r delete_duplicates_code_sise_eaux, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-```{r select_station_eso_variables, eval=FALSE}
-station_eso <- station_eso |> 
-  dplyr::select(code_station,
-                code_sise_eaux,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive_old_table, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_eso", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get_comments_old_table, eval=FALSE}
-station_eso_comments <- datalibaba::get_table_comments(table = "station_eso",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish_new_table, eval=FALSE}
-datalibaba::poster_data(data = station_eso,
-                        table = "station_eso",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish_new_table_comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de souterraines (source : ARS + Hub'eau, ", date_today, ")"),
-  table = "station_eso",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish_new_fields_comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = station_eso_comments,
-                           table = "station_eso",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-## Mise à jour du skeleton
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations ESO",
-  template_dir = "update_station_eso",
-  template_description = "Mise à jour des stations ESO",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_station_eso.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_station_eso/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_station_eso.Rmd", vignette_name = "Mise à jour des stations ESO")
-```
-
diff --git a/dev/flat_update_station_esu.Rmd b/dev/flat_update_station_esu.Rmd
deleted file mode 100644
index 6a70e0b3ffc3b0ce8c306bf0b58f1c2493849e1a..0000000000000000000000000000000000000000
--- a/dev/flat_update_station_esu.Rmd
+++ /dev/null
@@ -1,403 +0,0 @@
----
-title: "Mise à jour des stations ESU"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(collectr)
-library(datalibaba)
-library(dplyr)
-library(nngeo)
-library(sf)
-library(usethis)
-
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser les **stations de mesure eau de surface (ESU)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `sandre.n_station_mesure_eaux_surface_loire_bretagne` (source : SANDRE)
-- `captages.n_captage_p_r52` (source : ARS)
-
-# Chargement des lot de données source
-
-## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
-```{r load-hubeau_qualite_rivieres_station_pc, eval=FALSE}
-data_sandre <- datalibaba::importer_data(
-  table = "n_station_mesure_eaux_surface_loire_bretagne",
-  schema = "sandre",
-  db = "si_eau")
-```
-
-## Captages ARS ESU
-```{r load_captages_ars_esu, eval=FALSE}
-data_ars_esu <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESU')
-```
-
-Suppression des géométries vides :
-```{r delete-empty-geom, eval=FALSE}
-data_ars_with_geom = data_ars_esu[!sf::st_is_empty(data_ars_esu),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de SANDRE
-
-```{r select-captages-ars-not-hubeau, eval=FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_sandre <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_sandre, by = c("code_captage" = "code_station"))
-
-# Récupérer les géométries par jointure avec stations_esu_ars
-data_ars_not_sandre <- data_ars_not_sandre |> 
-  dplyr::left_join(data_ars, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_sandre <- dplyr::select(data_ars_not_sandre, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_sandre) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_sandre))
-```
-
-## Consolidation des stations SANDRE
-
-Sélection des variables et ajout de la source :
-```{r consolidate-stations_hubeau, eval=FALSE}
-stations_esu_sandre <- data_sandre |> 
-  dplyr::mutate(source = "SANDRE") |>
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_commune,
-                the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_esu_sandre$date_creation <- as.Date(stations_esu_sandre$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-```{r consolidate-stations_ars, eval=FALSE}
-stations_esu_ars <- data_ars_not_sandre |>
-  dplyr::rename(code_station = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge-stations, eval=FALSE}
-station_esu <- dplyr::bind_rows(stations_esu_sandre, stations_esu_ars)
-```
-
-# Ajout des champs manquants au dataframe station_esu
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load-sage, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_esu` :
-```{r update-code-sage, eval=FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-```{r get-station-duplicates-code_sage, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel) :
-```{r delete-station-duplicates-code-sage, eval=FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-```{r replace-code-sage-na, eval=FALSE}
-station_esu <- station_esu |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-```{r load-bassin-versant, eval=FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_esu` :
-```{r update-codes-bassin-versant-masse-eau, eval=FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-Fusion des variables pour conserver un maximum de valeurs :
-```{r merge-variables, eval=FALSE}
-# Fusionner les variables code_masse_eau.x et code_masse_eau.y, code_eu_masse_eau.x et code_eu_masse_eau.y
-station_esu <- station_esu |>
-  dplyr::mutate(code_masse_eau = dplyr::coalesce(code_masse_eau.x, code_masse_eau.y)) |>
-  dplyr::select(-code_masse_eau.x, -code_masse_eau.y)  # Supprimer les colonnes inutiles
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des bassins versants :
-```{r get_duplicates_code_bassin_versant, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_code_bassin_versant <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_bassin_versant_specifique_000, by = c("code_bassin_versant" = "code_bassin_versant_specifique")) |>
-  dplyr::select(code_station, n, libelle_station, code_bassin_versant, nom_bassin_versant_specifique, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_code_bassin_versant)
-```
-
-Suppression des doublons (optionnel) :
-```{r delete_duplicates_code_bassin_versant, eval=FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-## Ajout du champs `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-```{r load-captage-prioritaire, eval=FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-```{r update-captage-prioriaire, eval=FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_esu <- station_esu |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_sise_eaux)
-```
-
-# Intersection des stations ESU avec les SAGE de la région et les limites régionales
-
-Chargement de la table des limites de la région :
-```{r load-region, eval=FALSE}
-n_region_exp_r52 <- datalibaba::importer_data(
-  table = "n_region_exp_r52",
-  schema = "adminexpress",
-  db = "referentiels"
-)
-```
-
-Vérification des objets sf :
-```{r st_as_sf, eval=FALSE}
-# Vérifier que les deux dataframes sont en format 'sf'
-station_esu <- sf::st_as_sf(station_esu)
-n_sage_r52 <- sf::st_as_sf(n_sage_r52)
-n_region_exp_r52 <- sf::st_as_sf(n_region_exp_r52)
-
-```
-
-Création d'un polygone fusionnant SAGE et région :
-```{r limit_sage, eval=FALSE}
-# Identification des noms de colonnes communs aux deux objets
-colonnes_communes <- intersect(names(n_region_exp_r52), names(n_sage_r52))
-
-# Sélection des colonnes communes dans chaque objet
-n_region_exp_r52 <- n_region_exp_r52[, colonnes_communes]
-n_sage_r52 <- n_sage_r52[, colonnes_communes]
-
-# Combinaison des deux objets dans un seul objet sf
-# (création d'une seule collection de géométries pour pouvoir les fusionner)
-objets_combines <- rbind(n_region_exp_r52, n_sage_r52)
-
-# Agrégation de tous les polygones en un seul avec st_union()
-# (si les polygones se chevauchent ou sont adjacents, ils seront fusionnés)
-n_sage_r52_union <- sf::st_union(objets_combines)
-
-# Correction de la géométrie, pour s'assurer qu'elle est valide
-n_sage_r52_valid <- sf::st_make_valid(n_sage_r52_union)
-
-# Suppresion des trous internes en récupérant uniquement la limite extérieure
-n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
-
-```
-
-Sélection des stations ESU présentes dans les SAGE et la région :
-```{r st_intersects_stations_sage, eval=FALSE}
-# Filtrer les stations ESU présentes dans les SAGE de la région
-station_esu <- sf::st_filter(station_esu, n_sage_r52_limit)
-
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-```{r select-station-esu-variables, eval=FALSE}
-station_esu <- station_esu |> 
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive-old-table, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_esu", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get-comments-old-table, eval=FALSE}
-station_esu_comments <- datalibaba::get_table_comments(table = "station_esu",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish-new-table, eval=FALSE}
-datalibaba::poster_data(data = station_esu,
-                        table = "station_esu",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish-new-table-comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de surface (ESU) (source : ARS + SANDRE, ", date_today, ")"),
-  table = "station_esu",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish-new-fields-comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = station_esu_comments,
-                           table = "station_esu",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer l'arborescence et les fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations ESU",
-  template_dir = "update_station_esu",
-  template_description = "Mise à jour des stations ESU",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_station_esu.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_station_esu/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-options(rmarkdown.html_vignette.check_title = FALSE)
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_station_esu.Rmd", vignette_name = "Mise à jour des stations ESU")
-```
-
diff --git a/inst/rmarkdown/templates/update_captage/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_captage/skeleton/skeleton.Rmd
deleted file mode 100644
index 4da19aa7f8d51130afd74e066f6ab29f04bb8977..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_captage/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,405 +0,0 @@
----
-title: "Mise à jour des captages ARS"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(readxl)
-library(lubridate)
-library(dplyr)
-library(utils)
-library(collectr)
-library(sf)
-library(datalibaba)
-library(glue)
-library(usethis)
-
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-
-```
-
-# Objectif
-
-Actualiser **la table des captages de la région** (`captages.n_captage_p_r52`) 
-à partir d'un tableur au format Excel transmis annuellement par l'ARS.
-
-# Chargement des lots de données
-
-## Captages ARS (SISE-EAUX)
-
-### Chargement des captages du dernier livrable en date
-L'export transmis par l'ARS est importé ainsi que la date du fichier (qui sera utilisée ultérieurement comme métadonnée) :
-```{r load_data, eval=FALSE}
-# Make the dataset file available to the current Rmd during development
-pkgload::load_all(path = here::here(), export_all = FALSE)
-
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/CAP_SISE_13_02_2024.xlsx"
-
-# Stocker la date de dernier enregistrement du fichier
-last_modified_date <- format(file.info(file_path)$ctime,"%d/%m/%Y")
-
-# Lire le fichier Excel dans un dataframe
-data <- readxl::read_excel(file_path)
-
-# Vérifier le type de données dans la colonne "INS - Début d'usage - Date"
-str(data)
-
-# Convertir la colonne "INS - Début d'usage - Date" en numérique
-data <- data |>
-  dplyr::mutate(`INS - Début d'usage - Date` = as.numeric(`INS - Début d'usage - Date`))
-
-# Convertir les valeurs numériques en dates
-data <- data |>
-  dplyr::mutate(`INS - Début d'usage - Date` = as.Date(`INS - Début d'usage - Date`, origin = "1899-12-30"))
-
-```
-
-### Renommage des variables
-
-Les variables de l'export sont renommées pour correspondre aux champs de la 
-table en base :
-```{r consolidate_data, eval=FALSE}
-captage <- data |>
-  dplyr::rename(departement_captage = "INS - Dépt gest - Code",
-         code_unite_gestion = "UGE - Code national",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "INS - Code national",
-         nom_captage = "INS - Nom",
-         type_installation = "INS - Type - Code",
-         nature_eau_captage = "INS - Nature de l'eau - Code",
-         usage_captage = "INS - Usage direct - Code",
-         etat_installation = "INS - Etat - Code",
-         date_etat_installation = "INS - Début d'usage - Date",
-         code_responsable_suivi = "INS - Resp. suivi - Code",
-         motif_abandon = "INS - Motif d'abandon - Libellé",
-         code_commune_captage = "COM - Code INSEE (5 car)",
-         nom_commune_captage = "COM - Nom",
-         code_bss = "CAP - BSS - Code",
-         designation_bss = "CAP - BSS - Désignation",
-         coordonnee_x = "PSV - Coordonnée X",
-         coordonnee_y = "PSV - Coordonnée Y",
-         coordonnee_z = "PSV - Coordonnée Z",
-         debit_moyen_m3j = "INS - Débit moyen/jour - m3/j")
-
-```
-
-## Captages ARS (SISE-EAUX) gérés par un autre département
-:warning: On récupère de façon temporaire ces captages (principalement gérés 
-par le 35) dans un livrable plus ancien car ils ne sont pas disponibles dans
-la livraison la plus récente. il faut donc vérifier le contenu du livrable 
-avant d'exécuter le chunk suivant, après chaque livraison. 
-
-### Chargement des captages manquants
-```{r load_missing_data, eval=FALSE}
-# Make the dataset file available to the current Rmd during development
-pkgload::load_all(path = here::here(), export_all = FALSE)
-
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/@archives/CAP_SISE_11_11_2020.xlsx"
-
-# Lire le fichier Excel dans un dataframe et filtrer pour ne conserver que les enregistrements du 35
-missing_data <- readxl::read_excel(file_path, skip = 5) |> 
-  dplyr::filter(`Dpt Gest.` == "035")
-
-```
-
-### Renommage et sélection des variables
-```{r load_missing_data, eval=FALSE}
-# Adapter le format du dataframe pour le fusionner avec les données plus récentes
-captage_035 <- missing_data |>
-  dplyr::rename(departement_captage = "Dpt Gest.",
-         code_unite_gestion = "UGE - Code",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "Code CAP",
-         nom_captage = "Nom Captage",
-         type_installation = "Type ins",
-         nature_eau_captage = "NatEau",
-         usage_captage = "Usage",
-         etat_installation = "Etat",
-         date_etat_installation = "DébUsage",
-         motif_abandon = "Motif abandon",
-         code_commune_captage = "Com Code",
-         nom_commune_captage = "Com Nom",
-         code_bss = "BSS code",
-         designation_bss = "Dés. BSS",
-         coordonnee_x = "X - Lbt2e",
-         coordonnee_y = "Y - Lbt2e",
-         coordonnee_z = "Z",
-         debit_moyen_m3j = "moy m3/j") |>
-  dplyr::mutate(date_etat_installation = as.Date(date_etat_installation),
-                code_responsable_suivi = NA,
-                code_commune_captage = as.character(code_commune_captage)
-                ) |>
-  dplyr::select(
-    departement_captage,
-    code_unite_gestion,
-    nom_unite_gestion,
-    code_captage,
-    nom_captage,
-    type_installation,
-    nature_eau_captage,
-    usage_captage,
-    etat_installation,
-    date_etat_installation,
-    code_responsable_suivi,
-    motif_abandon,
-    code_commune_captage,
-    nom_commune_captage,
-    code_bss,
-    designation_bss,
-    coordonnee_x,
-    coordonnee_y,
-    coordonnee_z,
-    debit_moyen_m3j
-  )
-
-
-```
-
-## Fusion des deux dataframes
-
-On rassemble les données des dataframes `captage` `captage_035` pour disposer
-du référentiel le plus complet possible :
-```{r merge_captages, eval=FALSE}
-# Fusionner les deux dataframes
-captage_full <- dplyr::bind_rows(captage, captage_035) |>
-  dplyr::arrange(code_captage)
-
-```
-
-# Consolidation du dataframe
-
-## Mise à jour du code BSS
-
-Chargement de la table de passage des codes BSS anciens à nouveaux :
-```{r load_table_passage_bss, eval=FALSE}
-# Charger la table `captages.table_de_passage_bss_000`
-table_de_passage_bss_000 <- datalibaba::importer_data(
-  table = "table_de_passage_bss_000",
-  schema = "captages",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-Les anciens codes BSS de l'export transmis par l'ARS sont remplacés par les 
-nouveaux codes issus de la table de passage fournie par le BRGM lorsque la 
-jointure est possible :
-```{r update_code_bss, eval=FALSE}
-# Mettre à jour la variable `code_bss` du dataframe `captage`
-captage_bss <- captage_full |>
-  dplyr::left_join(table_de_passage_bss_000, by = c("code_bss" = "indice")) |>
-  dplyr::mutate(code_bss = ifelse(!is.na(nouvel_identifiant), nouvel_identifiant, code_bss)) |>
-  dplyr::select(departement_captage:debit_moyen_m3j)
-
-```
-
-Vérification des résultats de la jointure :
-```{r dev-count_empty_bss, eval=FALSE}
-# Compter le nombre de valeurs vides dans captage_full
-nb_code_bss_vide_captage <- captage_full |>
-  dplyr::summarise(nb_code_bss_vide = sum(is.na(code_bss)))
-
-# Compter le nombre de valeurs vides dans captage_bss
-nb_code_bss_vide_captage_bss <- captage_bss |>
-  dplyr::summarise(nb_code_bss_vide = sum(is.na(code_bss)))
-
-# Afficher les résultats
-print(nb_code_bss_vide_captage)
-print(nb_code_bss_vide_captage_bss)
-```
-
-Sélection des captages ESO sans codes BSS malgré la jointure :
-```{r select_captage_eso_sans_code_bss, eval=FALSE}
-captage_eso_sans_code_bss <- captage_bss |>
-  dplyr::filter(!grepl("^BSS", code_bss) & nature_eau_captage == "ESO")
-```
-
-```{r save_captage_eso_sans_code_bss, eval=FALSE}
-# Enregistrer le dataframe captage_sans_geom dans un fichier CSV
-utils::write.csv(captage_eso_sans_code_bss, 
-                 file = "data/captage_eso_sans_code_bss.csv", 
-                 row.names = FALSE)
-
-# Afficher un message de confirmation
-cat("Le fichier captage_eso_sans_code_bss.csv a été enregistré avec succès.\n")
-```
-
-## Vérification de la correspondance des variables avec les champs stockés en base
-
-À ce stade, la vérification doit faire ressortir l'absence de géométrie (champs `the_geom`) :
-```{r check_attributes_n_captage_p_r52, eval=FALSE}
-# Comparer la structure du dataframe avec celle de la table en base 
-collectr::check_structure_table(dataframe = captage, 
-                                database = "si_eau",
-                                table = "n_captage_p_r52", 
-                                schema = "captages",
-                                role = "admin")
-
-```
-
-## Création d'un dataframe avec les enregistrements sans coordonnées ou des coordonées erronées
-
-Filtrage des enregistrements sans coordonnées valides (avec une valeur NA, 1 ou 3) :
-```{r filter_captage_sans_geom, eval=FALSE}
-# Créer un nouveau dataframe avec les captages sans coordonnées valides
-captage_sans_geom <- captage_bss |>
-  dplyr::mutate(coordonnee_x = ifelse(coordonnee_x %in% c(1, 3), NA, coordonnee_x),
-                coordonnee_y = ifelse(coordonnee_y %in% c(1, 3), NA, coordonnee_y)) |>
-  dplyr::filter(is.na(coordonnee_x) | is.na(coordonnee_y))
-
-```
-
-```{r save_captage_sans_geom, eval=FALSE}
-# Enregistrer le dataframe captage_sans_geom dans un fichier CSV
-utils::write.csv(captage_sans_geom, 
-                 file = "data/captage_sans_geom.csv", 
-                 row.names = FALSE)
-
-# Afficher un message de confirmation
-cat("Le fichier captage_sans_geom.csv a été enregistré avec succès.\n")
-
-```
-
-## Encodage de la géométrie
-
-Suppression des enregistrements sans coordonnées valides avant encodage :
-```{r create_geom, eval=FALSE}
-# Supprimer les lignes sans coordonnées du dataframe d'origine
-captage_with_xy <- captage_bss |>
-  dplyr::mutate(coordonnee_x = ifelse(coordonnee_x %in% c(1, 3), NA, coordonnee_x),
-                coordonnee_y = ifelse(coordonnee_y %in% c(1, 3), NA, coordonnee_y)) |>
-  dplyr::filter(!is.na(coordonnee_x) & !is.na(coordonnee_y))
-
-# Créer une géométrie ponctuelle à partir de coordonnee_x et coordonnee_y
-captage_geom <- sf::st_as_sf(captage_with_xy, 
-                        coords = c("coordonnee_x", "coordonnee_y"), 
-                        crs = 2154,
-                        remove = FALSE) |>
-  dplyr::rename(the_geom = geometry)
-
-```
-
-## Fusion des deux dataframes avec et sans géométrie
-
-Reconstitution du lot de données complet (avec et sans géométrie valide) :
-```{r merge_dataframes, eval=FALSE}
-n_captage_p_r52 <- dplyr::bind_rows(captage_geom, captage_sans_geom)
-
-```
-
-# Publication de la table en base
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive_old_table, eval=FALSE}
-collectr::archive_table(database = "si_eau",
-                        table = "n_captage_p_r52", 
-                        schema = "captages",
-                        new_schema = "zz_archives",
-                        role = "admin")
-
-```
-
-## Ajout de la contrainté géomatique concernant le type de géométries
-
-```{r dev-update_geometry_n_captage_p_r52}
-# Connexion à la base de données PostgreSQL
-connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
-
-# Requête SQL pour ajouter la contrainte à la colonne the_geom
-constraint_query <-
-"ALTER TABLE captages.n_captage_p_r52
-ADD CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text OR geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);"
-
-# Exécution de la requête ALTER TABLE
-DBI::dbExecute(connexion, constraint_query)
-
-# Fermeture de la connexion
-DBI::dbDisconnect(connexion)
-
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get_comments_old_table, eval=FALSE}
-n_captage_p_r52_comments <- datalibaba::get_table_comments(table = "n_captage_p_r52",
-                                                           schema = "captages",
-                                                           db = "si_eau",
-                                                           user = "admin") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish_new_table, eval=FALSE}
-datalibaba::poster_data(data = n_captage_p_r52,
-                        table = "n_captage_p_r52",
-                        schema = "captages",
-                        db = "si_eau",
-                        pk = "code_captage",
-                        overwrite = TRUE,
-                        user = "admin")
-
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish_new_table_comment, eval=FALSE}
-datalibaba::commenter_table(
-  comment = glue::glue("Captages de la région Pays de la Loire (source : ARS, ", last_modified_date, ")"),
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau",
-  user = "admin")
-
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish_new_fields_comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
-                           table = "n_captage_p_r52",
-                           schema = "captages",
-                           db = "si_eau",
-                           user = "admin")
-
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des captages ARS",
-  template_dir = "update_captage",
-  template_description = "Mise à jour des captages ARS",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_captage.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_captage/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Keep eval=FALSE to avoid infinite loop in case you hit the knit button
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_captage.Rmd", vignette_name = "Mise à jour des captages ARS")
-```
diff --git a/inst/rmarkdown/templates/update_captage/template.yaml b/inst/rmarkdown/templates/update_captage/template.yaml
deleted file mode 100644
index cc0a8d00a56a9511dd63d171439662f15b248dc2..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_captage/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des captages ARS
-description: >
-   Mise à jour des captages ARS
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_captage_ep/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_captage_ep/skeleton/skeleton.Rmd
deleted file mode 100644
index 6fa4c6ed731816fbea234d377403ed301bd8d1a2..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_captage_ep/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: "Mise à jour des captages en eau potable"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(datalibaba)
-library(dplyr)
-library(collectr)
-library(glue)
-library(usethis)
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser **la table des captages en eau potable de la région** (`captages.n_captage_eau_potable_p_r52`) à partir de la table des captages de l'ARS (`captages.n_captage_p_r52`).
-
-# Création du dataframe des captages en eau potable
-
-## Chargement de la table des captages
-
-```{r load-captage, eval=FALSE}
-n_captage_p_r52 <- datalibaba::importer_data(db = "si_eau",
-                                             schema = "captages",
-                                             table = "n_captage_p_r52")
-```
-
-## Filtre sur les captages en eau potable
-
-Les enregistrements correspondant aux valeurs suivantes pour les usages sont sélectionnés :
-
-- `AEP` : ADDUCTION COLLECTIVE PUBLIQUE
-- `ALI` : ACTIVITE AGRO ALIMENTAIRE
-- `CND` : EAU CONDITIONNEE
-- `PRV` : ADDUCTION COLLECTIVE PRIVEE
-
-Source : table `captages.n_captage_usage_direct`
-
-```{r filter-captage-ep, eval=FALSE}
-n_captage_eau_potable_p_r52 <- n_captage_p_r52 |>
-  dplyr::filter(usage_captage  %in% c('AEP', 'PRV', 'ALI', 'CND'))
-```
-
-# Publication de la table en base
-
-## Vérification de la correspondance des variables avec les champs stockés en base
-
-```{r check-attributes, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::check_structure_table(connexion, 
-                                df = n_captage_eau_potable_p_r52, 
-                                table_name = "n_captage_eau_potable_p_r52", 
-                                schema = "alimentation_eau_potable")
-```
-
-## Archivage de la version précédente de la table
-
-```{r archive-old-table, eval=FALSE}
-collectr::archive_table(database = "si_eau",
-                        table = "n_captage_eau_potable_p_r52", 
-                        schema = "alimentation_eau_potable",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get-comments-old-table, eval=FALSE}
-n_captage_eau_potable_p_r52_comments <- datalibaba::get_table_comments(
-  table = "n_captage_eau_potable_p_r52",
-  schema = "alimentation_eau_potable",
-  db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-```{r publish-new-table, eval=FALSE}
-datalibaba::poster_data(data = n_captage_eau_potable_p_r52,
-                        table = "n_captage_eau_potable_p_r52",
-                        schema = "alimentation_eau_potable",
-                        db = "si_eau",
-                        pk = "code_captage",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish-new-table-comment, eval=FALSE}
-datalibaba::commenter_table(
-  comment = glue::glue("Points de prélèvement en eau potable de la région Pays de la Loire (source : ARS, ", last_modified_date, ")"),
-  table = "n_captage_eau_potable_p_r52",
-  schema = "alimentation_eau_potable",
-  db = "si_eau",
-  user= "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish-new-fields-comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
-                           table = "n_captage_eau_potable_p_r52",
-                           schema = "alimentation_eau_potable",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des captages en eau potable",
-  template_dir = "update_captage_ep",
-  template_description = "Mise à jour des captages en eau potable",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_captage_ep.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_captage_ep/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_captage_ep.Rmd", vignette_name = "Mise à jour des captages en eau potable")
-```
-
diff --git a/inst/rmarkdown/templates/update_captage_ep/template.yaml b/inst/rmarkdown/templates/update_captage_ep/template.yaml
deleted file mode 100644
index 66bf0728f58799cfdecb73df8c2ac7ce288c10fa..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_captage_ep/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des captages en eau potable
-description: >
-   Mise à jour des captages en eau potable
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/skeleton/skeleton.Rmd
deleted file mode 100644
index 46d30a67afbc7ca3229050a6a36ef82c30110d00..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,255 +0,0 @@
----
-title: "Mise à jour des stations Hub'eau nappes d'eau souterraine"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(hubeau)
-library(sf)
-library(dplyr)
-library(usethis)
-
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-
-```
-
-# Objectif
-
-Actualiser les **stations de mesure des qualités des nappes d'eau souterraine (ESO)** à partir de l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans une base de données PostgreSQL.
-
-# Création du dataframe
-
-## Collecte des données
-
-Téléchargement des données du bassin Loire-Bretagne :
-```{r get_hubeau_qualite_nappes_stations_lb, eval=FALSE}
-hubeau_qualite_nappes_stations_lb <- hubeau::get_qualite_nappes_stations(
-  circonscription_administrative_bassin="Loire-Bretagne")
-
-```
-
-Téléchargement des données du bassin Seine-Normandie en Mayenne :
-```{r get_hubeau_qualite_nappes_stations_53, eval=FALSE}
-hubeau_qualite_nappes_stations_53 <- hubeau::get_qualite_nappes_stations(
-  circonscription_administrative_bassin="Seine-Normandie",num_departement="53")
-
-```
-
-Fusion des deux dataframes :
-```{r merge_hubeau_qualite_nappes_stations, eval=FALSE}
-hubeau_qualite_nappes_stations <- dplyr::bind_rows(
-  hubeau_qualite_nappes_stations_lb, hubeau_qualite_nappes_stations_53)
-
-```
-
-## Création d'un champs de géométrie
-
-```{r create_the_geom, eval=FALSE}
-# Création de la géométrie
-hubeau_sf <- create_hubeau_geom(hubeau_qualite_nappes_stations)
-
-```
-
-# Publication de la table en base
-
-## Archivage de la version précédente de la table
-
-La version précédente de la table est stockée dans un schéma d'archive :
-```{r archive_old_table, eval=FALSE}
-# connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "hubeau_qualite_nappes_stations", 
-                        schema = "qualite_nappes_eau_souterraine",
-                        new_schema = "zz_archives",
-                        role = "admin")
-
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish_new_table, eval=FALSE}
-datalibaba::poster_data(data = hubeau_sf,
-                        table = "hubeau_qualite_nappes_stations",
-                        schema = "qualite_nappes_eau_souterraine",
-                        db = "si_eau",
-                        pk = "bss_id",
-                        overwrite = TRUE,
-                        user = "admin")
-
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish_new_table_comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesure des qualités des nappes d'eau souterraine (ESO) - Bassin Loire-Bretagne (source : Hub'eau)"),
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-## Ajout des commentaires
-
-```{r add_comments, eval=FALSE}
-# Création d'une liste avec les noms des variables et leurs descriptions
-variables <- c(
-  "bss_id", "Nouveau code national de la station, cf plus d'info ici http://infoterre.brgm.fr/nouveau-code-bss",
-  "code_bss", "Ancien code de la station (code BSS)",
-  "urn_bss", "URN de la station",
-  "date_debut_mesure", "Date de début des mesures qualité sur cette station",
-  "date_fin_mesure", "Dernière date de mesure qualité connue pour sur cette station",
-  "precision_coordonnees", "Précision des coordonnées sur cette station",
-  "longitude", "Longitude la station (WGS84)",
-  "latitude", "Latitude la station (WGS84)",
-  "altitude", "Altitude NGF de la station",
-  "code_insee", "Code insee de la commune où se trouve la station",
-  "nom_commune", "Nom de la commune où se trouve la station",
-  "num_departement", "Code du département où se trouve la station",
-  "nom_departement", "Nom du département où se trouve la station",
-  "nom_region", "Nom nouvelle région où se trouve la station",
-  "circonscriptions_administrative_bassin", "Circonscription administrative de bassin concernée",
-  "bassin_dce", "Bassin DCE",
-  "urn_bassin_dce", "URN du bassin DCE",
-  "code_nature_pe", "Code de la nature du point d'eau (forage, puits, source)",
-  "nom_nature_pe", "Nom de la nature du point d'eau (forage, puits, source)",
-  "uri_nature_pe", "URI de la nature du point d'eau (forage, puits, source)",
-  "libelle_pe", "Libellé du point d'eau",
-  "code_caracteristique_aquifere", "Code des caractéristiques de l'aquifère au droit du point d'eau",
-  "nom_caracteristique_aquifere", "Nom des caractéristiques de l'aquifère au droit du point d'eau",
-  "uri_caracteristique_aquifere", "URI des caractéristiques de l'aquifère au droit du point d'eau",
-  "code_etat_pe", "Code de l'état du point d'eau",
-  "nom_etat_pe", "Nom de l'état du point d'eau",
-  "uri_etat_pe", "URI de l'état du point d'eau",
-  "code_mode_gisement", "Code du mode de gisement du point d'eau",
-  "nom_mode_gisement", "Nom du mode de gisement du point d'eau",
-  "uri_mode_gisement", "URI du mode de gisement du point d'eau",
-  "profondeur_investigation", "Profondeur d'investigation (m)",
-  "commentaire_pe", "Commentaire sur le point d'eau",
-  "codes_entite_hg_bdlisa1", "Entité hydrogéologique dans le référentiel bdlisa",
-  "codes_entite_hg_bdlisa2", "Entité hydrogéologique dans le référentiel bdlisa",
-  "codes_entite_hg_bdlisa3", "Entité hydrogéologique dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa1", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa2", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "noms_entite_hg_bdlisa3", "Noms des entités hydrogéologiques liées au point d'eau dans le référentiel bdlisa",
-  "urns_bdlisa1", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "urns_bdlisa2", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "urns_bdlisa3", "URN des entités hydrogéologiques (BDLISA) actuellement associés à la station construit à partir des codes BDLISA, url  vers les fiches PDF BDLISA",
-  "codes_masse_eau_rap1", "Codes Masses d'eau de type Rapportage",
-  "codes_masse_eau_rap2", "Codes Masses d'eau de type Rapportage",
-  "noms_masse_eau_rap1", "Noms des masses d'eau de type 'rapportage' liées au point d'eau",
-  "noms_masse_eau_rap2", "Noms des masses d'eau de type 'rapportage' liées au point d'eau",
-  "urns_masse_eau_rap1", "URN des masse d'eau RAP actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "urns_masse_eau_rap2", "URN des masse d'eau RAP actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "codes_masse_eau_edl1", "Codes Masses d'eau de type Etat des lieux",
-  "codes_masse_eau_edl2", "Codes Masses d'eau de type Etat des lieux",
-  "noms_masse_eau_edl1", "Noms des masses d'eau de type 'état des lieux' liées au point d'eau",
-  "noms_masse_eau_edl2", "Noms des masses d'eau de type 'état des lieux' liées au point d'eau",
-  "urns_masse_eau_edl1", "URN des masse d'eau EDL actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "urns_masse_eau_edl2", "URN des masse d'eau EDL actuellement associés à la station construit à partir des codes masse d'eau, url vers le SANDRE",
-  "codes_reseau1", "Réseaux de mesure concernés",
-  "codes_reseau2", "Réseaux de mesure concernés",
-  "codes_reseau3", "Réseaux de mesure concernés",
-  "codes_reseau4", "Réseaux de mesure concernés",
-  "codes_reseau5", "Réseaux de mesure concernés",
-  "codes_reseau6", "Réseaux de mesure concernés",
-  "codes_reseau7", "Réseaux de mesure concernés",
-  "codes_reseau8", "Réseaux de mesure concernés",
-  "codes_reseau9", "Réseaux de mesure concernés",
-  "codes_reseau10", "Réseaux de mesure concernés",
-  "codes_reseau11", "Réseaux de mesure concernés",
-  "codes_reseau12", "Réseaux de mesure concernés",
-  "codes_reseau13", "Réseaux de mesure concernés",
-  "codes_reseau14", "Réseaux de mesure concernés",
-  "codes_reseau15", "Réseaux de mesure concernés",
-  "noms_reseau1", "Noms des réseaux de mesure concernés",
-  "noms_reseau2", "Noms des réseaux de mesure concernés",
-  "noms_reseau3", "Noms des réseaux de mesure concernés",
-  "noms_reseau4", "Noms des réseaux de mesure concernés",
-  "noms_reseau5", "Noms des réseaux de mesure concernés",
-  "noms_reseau6", "Noms des réseaux de mesure concernés",
-  "noms_reseau7", "Noms des réseaux de mesure concernés",
-  "noms_reseau8", "Noms des réseaux de mesure concernés",
-  "noms_reseau9", "Noms des réseaux de mesure concernés",
-  "noms_reseau10", "Noms des réseaux de mesure concernés",
-  "noms_reseau11", "Noms des réseaux de mesure concernés",
-  "noms_reseau12", "Noms des réseaux de mesure concernés",
-  "noms_reseau13", "Noms des réseaux de mesure concernés",
-  "noms_reseau14", "Noms des réseaux de mesure concernés",
-  "noms_reseau15", "Noms des réseaux de mesure concernés",
-  "uris_reseau1", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau2", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau3", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau4", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau5", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau6", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau7", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau8", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau9", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau10", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau11", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau12", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau13", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau14", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "uris_reseau15", "URI des réseaux associés à la station construit à partir des codes réseau, url vers le SANDRE",
-  "geometry_type", "Type de géométrie",
-  "geometry_crs_type", "Type de valeur du système de référence spatial",
-  "geometry_crs_properties_name", "Système de référence spatial",
-  "the_geom", "Géométrie de la station de mesure"
-)
-
-# Créer le dataframe avec les variables
-comments <- data.frame(
-  nom_variable = variables[seq(1, length(variables), by = 2)],
-  libelle_variable = variables[seq(2, length(variables), by = 2)],
-  stringsAsFactors = FALSE
-)
-
-# Publier le dictionnaire de données
-datalibaba::post_dico_attr(
-  dico = comments,
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-```{r development_create_template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations Hub'eau nappes d'eau souterraine",
-  template_dir = "update_hubeau_qualite_nappe_station",
-  template_description = "Mise à jour des stations Hub'eau nappes d'eau souterraine",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_hubeau_qualite_nappe_station.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_nappe_station.Rmd", vignette_name = "Mise à jour des stations Hub'eau nappes d'eau souterraine")
-
-```
-
diff --git a/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/template.yaml b/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/template.yaml
deleted file mode 100644
index 0d5515589809fd5d52100e29c87424ff47de15e0..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_hubeau_qualite_nappe_station/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des stations Hub'eau nappes d'eau souterraine
-description: >
-   Mise à jour des stations Hub'eau nappes d'eau souterraine
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/skeleton/skeleton.Rmd
deleted file mode 100644
index 1cf08bebb94dcba8e9a0d89cc2ed3129884020a3..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,192 +0,0 @@
----
-title: "Mise à jour des stations Hub'eau cours d'eau et plan d'eau"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(hubeau)
-library(sf)
-library(dplyr)
-library(usethis)
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser les **stations de mesures physicochimique sur des cours d'eau et plan d'eau** à partir de l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans une base de données PostgreSQL.
-
-# Création du dataframe
-
-## Récupération des données
-
-Téléchargement du lot de données avec l'identifiant de la région :
-```{r get-qualite-nappes-stations, eval=FALSE}
-hubeau_qualite_rivieres_station_pc <- hubeau::get_qualite_rivieres_station_pc(code_region="52")
-```
-
-## Création d'un champs de géométrie
-
-```{r create-the-geom, eval=FALSE}
-# Création de la géométrie
-hubeau_sf <- create_hubeau_geom(hubeau_qualite_rivieres_station_pc)
-```
-
-## Remplacement des caractères accentués impactés par un problème d'encodage
-Dans la variable `libelle_station` :
-```{r replace-encoding-problems, eval=FALSE}
-# Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<e0>", "À", hubeau_sf$libelle_station)
-# Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c0>", "À", hubeau_sf$libelle_station)
-# Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c8>", "È", hubeau_sf$libelle_station)
-# Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c9>", "É", hubeau_sf$libelle_station)
-# Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c2>", "Â", hubeau_sf$libelle_station)
-# Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<d4>", "Ô", hubeau_sf$libelle_station)
-```
-
-# Publication de la table en base
-
-## Archivage de la version précédente de la table
-
-La version précédente de la table est stockée dans un schéma d'archive :
-```{r archive-old-table, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "hubeau_qualite_rivieres_station_pc", 
-                        schema = "qualite_cours_d_eau",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish-new-table, eval=FALSE}
-datalibaba::poster_data(data = hubeau_sf,
-                        table = "hubeau_qualite_rivieres_station_pc",
-                        schema = "qualite_cours_d_eau",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish-new-table-comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesures physicochimique sur des cours d'eau et plan d'eau (eau de surface : ESU) (source : Hub'eau)"),
-  table = "hubeau_qualite_rivieres_station_pc",
-  schema = "qualite_cours_d_eau",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Ajout des commentaires
-
-```{r add-comments, eval=FALSE}
-# Création d'une liste avec les noms des variables et leurs descriptions
-variables <- c(
-  "code_station", "Code Sandre de la station de mesure. dans le référentiel national Sandre Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/stq.json",
-  "libelle_station", "Libellé Sandre de la station de mesure",
-  "uri_station", "URI station Sandre",
-  "durete", "Dureté moyenne de l'eau",
-  "coordonnee_x", "Coordonnée X du point caractéristique de la station de mesure",
-  "coordonnee_y", "Coordonnée Y du point caractéristique de la station de mesure",
-  "code_projection", "Code Sandre du système de projection des coordonnées de la station de mesure",
-  "libelle_projection", "Libellé Sandre du système de projection des coordonnées de la station de mesure",
-  "longitude", "Longitude la station de mesure dans le système de coordonnées WGS84",
-  "latitude", "Latitude de la station de mesure dans le système de coordonnées WGS84",
-  "code_commune", "Code INSEE de la commune de rattachement de la station de mesure",
-  "libelle_commune", "Libellé de la commune de rattachement de la station de mesure",
-  "code_departement", "Code INSEE du département de rattachement de la station de mesure",
-  "libelle_departement", "Libellé du département de rattachement de la station de mesure",
-  "code_region", "Code INSEE de la région de rattachement de la station de mesure",
-  "libelle_region", "Libellé INSEE de la région de rattachement de la station de mesure",
-  "code_cours_eau", "Code Sandre de l'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/cea.json (cours d'eau) et https://api.sandre.eaufrance.fr/referentiels/v1/pla.json (plan d'eau)",
-  "nom_cours_eau", "Libellé long Sandre de l'entité hydrographique associée à la station de mesure",
-  "uri_cours_eau", "URI du cours d'eau",
-  "nom_masse_deau", "Libellé de la masse d'eau de rattachement de la station de mesure",
-  "code_masse_deau", "Code national de la masse d'eau associé à la station de mesure",
-  "code_eu_masse_deau", "Code européen de la masse d'eau associé à la station de mesure",
-  "uri_masse_deau", "URI national de la masse d'eau de la station de mesure",
-  "code_eu_sous_bassin", "Code européen du sous-bassin DCE administratif",
-  "nom_sous_bassin", "Libellé du sous bassin DCE administratif",
-  "uri_sous_bassin", "URI du sous-bassin DCE",
-  "code_bassin", "Code national du bassin DCE",
-  "code_eu_bassin", "Code européen du bassin DCE",
-  "nom_bassin", "Libellé du bassin DCE",
-  "uri_bassin", "URI du bassin DCE",
-  "type_entite_hydro", "Code Sandre de la nature d'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/796.json",
-  "commentaire", "Commentaire sur la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "date_arret", "Date d'arrêt d'activité de la station de mesure",
-  "date_maj_information", "Date de mise à jour des informations sur la station de mesure",
-  "finalite", "Code Sandre de la finalité de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/645.json",
-  "localisation_precise", "Localisation précise de la station de mesure",
-  "nature", "Code Sandre de la nature de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/62.json",
-  "altitude_point_caracteristique", "Altitude du point caractéristique de la station de mesure",
-  "point_kilometrique", "Pk du point caractéristique sur le tronçon de l'entité hydrographique principale associée à la station de mesure",
-  "premier_mois_annee_etiage", "Premier mois de l'année d'étiage de la station de mesure",
-  "superficie_bassin_versant_reel", "Superficie réelle du bassin versant réel",
-  "superficie_bassin_versant_topo", "Superficie topographique du bassin versant topographique",
-  "geometry_type", "Type de géométrie",
-  "geometry_crs_type", "Type de valeur du système de référence spatial",
-  "geometry_crs_properties_name", "Système de référence spatial",
-  "the_geom", "Géométrie de la station de mesure"
-)
-
-# Créer le dataframe avec les variables
-comments <- data.frame(
-  nom_variable = variables[seq(1, length(variables), by = 2)],
-  libelle_variable = variables[seq(2, length(variables), by = 2)],
-  stringsAsFactors = FALSE
-)
-
-# Publier le dictionnaire de données
-datalibaba::post_dico_attr(
-  dico = comments,
-  table = "hubeau_qualite_rivieres_station_pc",
-  schema = "qualite_cours_d_eau",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau",
-  template_dir = "update_hubeau_qualite_rivieres_station",
-  template_description = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd", vignette_name = "Mise à jour des stations Hub'eau cours d'eau et plan d'eau")
-```
-
diff --git a/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/template.yaml b/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/template.yaml
deleted file mode 100644
index dc29026e0d9cd1002e6dbd11fa22cb37be2dfd73..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_hubeau_qualite_rivieres_station/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des stations Hub'eau cours d'eau et plan d'eau
-description: >
-   Mise à jour des stations Hub'eau cours d'eau et plan d'eau
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_r_station_mesure_p_r52/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_r_station_mesure_p_r52/skeleton/skeleton.Rmd
deleted file mode 100644
index b828966437dae5e4f412313c17e1c5b36eb35eef..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_r_station_mesure_p_r52/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,628 +0,0 @@
----
-title: "Mise à jour des stations de mesure"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development, include=FALSE}
-library(collectr)
-library(datalibaba)
-library(dplyr)
-library(nngeo)
-library(sf)
-library(usethis)
-
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-
-```
-
-# Objectif
-
-Actualiser les **stations de mesure eau souterraine (ESO) et eau de surface (ESU)** 
-à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `captages.n_captage_p_r52` (source : ARS, périmètre : région Pays de la Loire)
-- `qualite_nappes_eau_souterraine.hubeau_qualite_nappes_stations` (source : Hub'eau, périmètre : bassin Loire-Bretagne)
-- `sandre.n_station_mesure_eaux_surface_loire_bretagne` (source : SANDRE, périmètre : bassin Loire-Bretagne)
-
-# Chargement des lot de données source
-
-## Captages ARS
-
-Chargement de la table des captages ARS : 
-```{r load_captages_ars_eso, eval=FALSE}
-data_ars <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau",
-  user = "admin")
-
-```
-
-## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
-
-Chargement de la table des stations ESO issues d'Hubeau :
-```{r load_hubeau_qualite_nappes_stations, eval=FALSE}
-data_eso_hubeau <- datalibaba::importer_data(
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau",
-  user = "admin")
-
-```
-
-## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
-
-Chargement de la table des stations ESU issues du SANDRE :
-```{r load-hubeau_qualite_rivieres_station_pc, eval=FALSE}
-data_esu_sandre <- datalibaba::importer_data(
-  table = "n_station_mesure_eaux_surface_loire_bretagne",
-  schema = "sandre",
-  db = "si_eau",
-  user = "admin")
-
-```
-
-# Consolidation dans des dataframes similaire 
-
-## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
-
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
-```{r consolidate_stations_hubeau_eso, eval=FALSE}
-stations_eso_hubeau <- data_eso_hubeau |> 
-  dplyr::rename(libelle_station = nom_commune,
-                date_creation = date_debut_mesure,
-                code_commune = code_insee) |>
-  dplyr::mutate(code_sise_eaux = NA,
-                source = "HUBEAU",
-                nature_eau = "ESO",
-                code_masse_eau = NA) |>
-  dplyr::select(code_bss = bss_id,
-                code_sise_eaux,
-                libelle_station,
-                nature_eau,
-                date_creation,
-                source,
-                code_masse_eau = codes_masse_eau_edl,
-                code_commune,
-                the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
-
-```
-
-Remplacer les valeurs vides dans `code_sise_eaux` par NA dans `stations_eso_hubeau` :
-```{r na_code_sise_eaux, eval=FALSE}
-stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-
-```
-
-Réaliser la jointure sur la variable `code_bss` :
-```{r update_code_sise_eaux, eval=FALSE}
-# Supprimer l'objet géométrie du dataframe data_ars
-data_ars_no_geom <- data_ars |> sf::st_drop_geometry()
-
-# Réaliser une jointure attributaire
-stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::left_join(data_ars_no_geom, by = c("code_bss" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
-```
-
-Identification des doublons générés par la jointure de récupération des `code_sise_eaux` :
-```{r get_duplicates_code_sise_eaux, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sise_eaux <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-  doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  sf::st_drop_geometry()
-  stations_eso_hubeau_no_geom <- stations_eso_hubeau |> sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(stations_eso_hubeau_no_geom, by = "code_bss") |>
-  dplyr::select(code_bss, n, code_sise_eaux, libelle_station)
-
-# Visualiser les doublons
-print(doublons_stations_code_sise_eaux)
-
-```
-
-Suppression des doublons :
-```{r delete_duplicates_code_sise_eaux, eval=FALSE}
-stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-
-```
-
-## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
-
-Sélection des variables et ajout de la source :
-```{r consolidate_stations_esu_sandre, eval=FALSE}
-stations_esu_sandre <- data_esu_sandre |> 
-  dplyr::mutate(code_bss = NA,
-                source = "SANDRE",
-                nature_eau = "ESU") |>
-  dplyr::select(code_bss,
-                code_sise_eaux = code_station,
-                libelle_station,
-                date_creation,
-                nature_eau,
-                source,
-                code_masse_eau,
-                code_commune,
-                the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_esu_sandre$date_creation <- as.Date(stations_esu_sandre$date_creation)
-
-```
-
-## Captages ARS
-
-Suppression des captages ARS avec des géométries vides :
-```{r delete-empty-geom, eval=FALSE}
-data_ars_with_geom = data_ars[!sf::st_is_empty(data_ars),,drop=FALSE] 
-
-```
-
-## Sélection des captages ARS différents des stations ESO de Hub'eau et des stations ESU du SANDRE
-
-```{r r select_captages_ars_not_hubeau_sandre, eval=FALSE}
-# Fusion des opérations pour sélectionner les captages ARS différents des stations ESO Hub'eau et ESU SANDRE
-stations_ars_not_hubeau_sandre <- data_ars_with_geom |> 
-  # Supprimer la géométrie pour effectuer des jointures
-  sf::st_drop_geometry() |> 
-  # Exclure les stations présentes dans stations_eso_hubeau et stations_esu_sandre
-  dplyr::anti_join(stations_eso_hubeau, by = c("code_bss" = "code_bss")) |> 
-  dplyr::anti_join(stations_esu_sandre, by = c("code_captage" = "code_sise_eaux")) |> 
-  # Récupérer les géométries par jointure avec data_ars
-  dplyr::left_join(data_ars, by = "code_captage") |> 
-  # Désélectionner toutes les variables finissant par .y
-  dplyr::select(-ends_with(".y"))
-
-# Renommer les colonnes pour supprimer le suffixe .x
-names(stations_ars_not_hubeau_sandre) <- gsub("\\.x$", "", names(stations_ars_not_hubeau_sandre))
-
-```
-
-## Consolidation des stations ARS
-
-Ajout de la source et sélection des variables :
-```{r consolidate_stations_ars, eval=FALSE}
-# Ajouter la variable `source` et sélectionner les variables nécessaires
-stations_ars <- stations_ars_not_hubeau_sandre |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_bss = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                nature_eau = nature_eau_captage,
-                date_creation = date_etat_installation,
-                source,
-                code_commune = code_commune_captage,
-                the_geom)
-
-```
-
-## Ajout du `code_masse_eau` pour les stations ARS
-
-Chargement de la table des bassins versants France entière :
-```{r load_bassin_versant, eval=FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-Requête spatiale pour la jointure de la variable `code_masse_eau`
-```{r update-codes-bassin-versant-masse-eau, eval=FALSE}
-# Convertir le dataframe `stations_ars` en objet sf
-stations_ars <- sf::st_as_sf(stations_ars, sf_column_name = "the_geom")
-
-# Réaliser une jointure spatiale pour le dataframe `stations_ars`
-stations_ars <- stations_ars |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-                dplyr::select(code_masse_eau), join = sf::st_within, left = TRUE)
-
-```
-
-## Fusion des trois dataframes
-
-```{r merge_stations, eval=FALSE}
-station_full <- dplyr::bind_rows(stations_eso_hubeau, stations_esu_sandre, stations_ars)
-
-```
-
-# Intersection des stations ESU avec les SAGE de la région et les limites régionales
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load_n_sage_r52, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Chargement de la table des limites de la région :
-```{r load_n_region_exp_r52, eval=FALSE}
-n_region_exp_r52 <- datalibaba::importer_data(
-  table = "n_region_exp_r52",
-  schema = "adminexpress",
-  db = "referentiels"
-)
-```
-
-Vérification des objets sf :
-```{r st_as_sf, eval=FALSE}
-# Vérifier que les deux dataframes sont en format 'sf'
-station_full <- sf::st_as_sf(station_full)
-n_sage_r52 <- sf::st_as_sf(n_sage_r52)
-n_region_exp_r52 <- sf::st_as_sf(n_region_exp_r52)
-
-```
-
-Création d'un polygone fusionnant SAGE et région :
-```{r limit_sage, eval=FALSE}
-# Identification des noms de colonnes communs aux deux objets
-colonnes_communes <- intersect(names(n_region_exp_r52), names(n_sage_r52))
-
-# Sélection des colonnes communes dans chaque objet
-n_region_exp_r52 <- n_region_exp_r52[, colonnes_communes]
-n_sage_r52 <- n_sage_r52[, colonnes_communes]
-
-# Combinaison des deux objets dans un seul objet sf
-# (création d'une seule collection de géométries pour pouvoir les fusionner)
-objets_combines <- rbind(n_region_exp_r52, n_sage_r52)
-
-# Agrégation de tous les polygones en un seul avec st_union()
-# (si les polygones se chevauchent ou sont adjacents, ils seront fusionnés)
-n_sage_r52_union <- sf::st_union(objets_combines)
-
-# Correction de la géométrie, pour s'assurer qu'elle est valide
-n_sage_r52_valid <- sf::st_make_valid(n_sage_r52_union)
-
-# Suppresion des trous internes en récupérant uniquement la limite extérieure
-n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
-
-```
-
-Sélection des stations ESU présentes dans les SAGE et la région :
-```{r st_intersects_stations_sage, eval=FALSE}
-# Filtrer les stations ESU présentes dans les SAGE de la région
-station_sage_r52 <- sf::st_filter(station_full, n_sage_r52_limit)
-
-```
-
-# Ajout des variables manquantes nécessaires
-
-## Ajout de la variable `id_station`
-
-```{r add_id_station, eval=FALSE}
-# Ajouter la variable `id_station`
-station_sage_r52 <- station_sage_r52 |>
-  # Trier par code_commune
-  dplyr::arrange(code_commune) |> 
-  # Ajouter un ID incrémental
-  dplyr::mutate(id_station = dplyr::row_number()) 
-
-```
-
-
-## Ajout de la variable `code_naiades`
-Cet ajout ne concerne que les stations ESU :
-```{r add_code_naiades, eval=FALSE}
-# Créer et alimenter la variable `code_naiades` à partir de `code_sise_eaux`
-station_sage_r52 <- station_sage_r52 |> 
-  dplyr::mutate(
-    code_naiades = dplyr::case_when(
-      startsWith(code_sise_eaux, "044") ~ sub("^044", "BS", code_sise_eaux),
-      startsWith(code_sise_eaux, "049") ~ sub("^049", "BX", code_sise_eaux),
-      startsWith(code_sise_eaux, "053") ~ sub("^053", "CB", code_sise_eaux),
-      NA ~ code_sise_eaux  # Remplacer les autres codes par NA
-    ))
-
-```
-
-## Ajout de la variable `code_bassin_versant`
-
-Jointure spatiale entre `n_bassin_versant_specifique_000` et `station_sage_r52` :
-```{r add_codes_bassin_versant, eval=FALSE}
-# Réaliser une jointure spatiale pour récupérer la variable `code_bassin_versant`
-station_sage_r52 <- station_sage_r52 |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-                dplyr::select(code_bassin_versant = code_bassin_versant_specifique), 
-              join = sf::st_within, left = TRUE)
-
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des bassins versants :
-```{r get_duplicates_code_bassin_versant, eval=FALSE}
-# Compter les occurrences de chaque id_station
-doublons_code_bassin_versant <- station_sage_r52 |>
-  dplyr::group_by(id_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  dplyr::left_join(station_sage_r52, by = "id_station") |>
-  dplyr::left_join(n_bassin_versant_specifique_000, by = c("code_bassin_versant" = "code_bassin_versant_specifique")) |>
-  dplyr::select(id_station, n, libelle_station, code_bassin_versant, nom_bassin_versant_specifique, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_code_bassin_versant)
-
-```
-
-Suppression des doublons (optionnel) :
-```{r delete_duplicates_code_bassin_versant, eval=FALSE}
-station_sage_r52 <- station_sage_r52 |>
-  dplyr::group_by(id_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-
-```
-
-## Ajout de la variable `code_sage`
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load-sage, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_sage_r52` :
-```{r add_code_sage, eval=FALSE}
-# Réaliser une jointure spatiale
-station_sage_r52 <- station_sage_r52 |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-```{r get_station_duplicates_code_sage, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_sage_r52 |>
-  dplyr::group_by(id_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_sage_r52, by = "id_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(id_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel) :
-```{r delete_station_duplicates_code_sage, eval=FALSE}
-station_sage_r52 <- station_sage_r52 |>
-  dplyr::group_by(id_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-```{r replace-code-sage-na, eval=FALSE}
-station_sage_r52 <- station_sage_r52 |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout de la variable `captage_prioritaire`
-
-Chargement de la table des captages prioritaires de la région :
-```{r load_r_captage_prioritaire_r52, eval=FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-Ajout de la variable captage_prioritaire
-```{r update-captage-prioriaire, eval=FALSE}
-# Alimenter la variable en vérifiant la présence du `code_si_eaux` dans `r_captage_prioritaire_r52`
-station_sage_r52 <- station_sage_r52 |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_sise_eaux %in% r_captage_prioritaire_r52$code_sise_eaux)
-```
-
-# Publication en base
-
-## Sélection des variables à conserver dans le dataframe final
-
-```{r order_variables, eval=FALSE}
-# Modifier l'ordre des variables pour publication dans une table en base
-r_station_mesure_p_r52 <- station_sage_r52 |> 
-  dplyr::select(
-    id_station,
-    code_bss,
-    code_sise_eaux,
-    code_naiades,
-    libelle_station, 
-    nature_eau,
-    date_creation, 
-    source,
-    code_masse_eau,
-    code_bassin_versant,
-    code_commune,
-    code_sage,
-    captage_prioritaire,
-    the_geom
-  )
-```
-
-
-## Création dynamique du nom de la table avec l'année en cours
-
-```{r create_table_name, eval=FALSE}
-# Définir l'année en cours
-current_year <- format(Sys.Date(), "%Y")
-
-# Construire dynamiquement le nom de la table
-table_name <- paste0("r_station_mesure_p_", current_year, "_r52")
-```
-
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive_old_table, eval=FALSE}
-collectr::archive_table(database = "si_eau",
-                        table = table_name, 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish_new_table, eval=FALSE}
-# Publier la table en base
-datalibaba::poster_data(data = r_station_mesure_p_r52,
-                        table = table_name,
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "id_station",
-                        overwrite = TRUE,
-                        user = "admin")
-
-```
-
-## Mise à jour de la géométrie de la table `r_station_mesure_p_current_year_r52`
-
-```{r update_geometry_r_station_mesure_p_year_r52}
-# Connexion à la base de données PostgreSQL
-connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
-
-# Requête SQL pour ajouter les contraintes à la colonne the_geom
-# Construire la requête SQL en remplaçant dynamiquement le nom de la table
-constraint_query <- sprintf(
-  "ALTER TABLE stations.%s
-   ADD CONSTRAINT enforce_geotype_the_geom 
-   CHECK (geometrytype(the_geom) = 'MULTIPOINT'::text 
-          OR geometrytype(the_geom) = 'POINT'::text 
-          OR the_geom IS NULL);",
-  table_name
-)
-
-# Exécution de la requête ALTER TABLE
-DBI::dbExecute(connexion, constraint_query)
-
-# Fermeture de la connexion
-DBI::dbDisconnect(connexion)
-
-```
-
-## Ajout des commentaires de la table actualisée
-
-### Description de la table actualisée
-
-```{r publish_new_table_comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesure millésime ", 
-                       current_year, 
-                       " (source : ARS + Hub'eau + SANDRE, ", 
-                       date_today, ")"),
-  table = table_name,
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-
-```
-
-### Description des champs de la table actualisée
-
-```{r publish_new_fields_comments, eval=FALSE}
-# Création d'une liste avec les noms des variables et leurs descriptions
-variables <- c(
-  "id_station", "Identifiant unique de la station de mesur",
-  "code_bss", "Code BSS de la station de mesure",
-  "code_sise_eaux", "Code SISE-EAUX de la station de mesure",  
-  "code_naiades", "Code Naïades de la station de mesure",
-  "libelle_station", "Nom de la station de mesure",
-  "nature_eau", "Nature de l'eau de la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "source", "Source de la donnée",
-  "code_masse_eau", "Code de la masse d'eau de la station de mesure",
-  "code_bassin_versant", "Code du bassin versant de la station de mesure",
-  "code_commune", "Code INSEE  de la commune de la station de mesure",
-  "code_sage", "Code du SAGE de la station de mesure",
-  "captage_prioritaire", "Captaire prioritaire (T/F)",
-  "the_geom", "Géométrie ponctuelle de la station de mesure"
-)
-
-# Création du dataframe avec les variables
-comments <- data.frame(
-  nom_variable = variables[seq(1, length(variables), by = 2)],
-  libelle_variable = variables[seq(2, length(variables), by = 2)],
-  stringsAsFactors = FALSE
-)
-
-# Publication du dictionnaire de données
-datalibaba::post_dico_attr(dico = comments,
-                           table = table_name,
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin")
-
-```
-
-## Mise à jour du skeleton
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations de mesure ESO et ESU",
-  template_dir = "update_r_station_mesure_p_r52",
-  template_description = "Mise à jour des stations de mesure ESO et ES",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_r_station_mesure_p_r52.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_r_station_mesure_p_r52/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_r_station_mesure_p_r52.Rmd", vignette_name = "Mise à jour des stations de mesure")
-```
-
diff --git a/inst/rmarkdown/templates/update_r_station_mesure_p_r52/template.yaml b/inst/rmarkdown/templates/update_r_station_mesure_p_r52/template.yaml
deleted file mode 100644
index dbeb3c3a7993e88691accde98b6a8037a86a6e7c..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_r_station_mesure_p_r52/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des stations de mesure ESO et ESU
-description: >
-   Mise à jour des stations de mesure ESO et ES
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_station_eso/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_station_eso/skeleton/skeleton.Rmd
deleted file mode 100644
index 31cb9e016957b19a766a9fb8c390e2914be531ba..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_station_eso/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,365 +0,0 @@
----
-title: "Mise à jour des stations ESO"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(datalibaba)
-library(dplyr)
-library(sf)
-library(collectr)
-library(usethis)
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser les **stations de mesure eau de souterraine (ESO)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `qualite_nappes_eau_souterraine.hubeau_qualite_nappes_stations` (source : Hub'eau)
-- `captages.n_captage_p_r52` (source : ARS)
-
-# Chargement des lot de données source
-
-## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
-```{r load_hubeau_qualite_nappes_stations, eval=FALSE}
-data_hubeau_eso <- datalibaba::importer_data(
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau")
-```
-
-## Captages ARS ESO
-Chargement de la table des captages en filtrant sur la nature de l'eau du captage et le début du `code_bss` : 
-```{r load_captages_ars_eso, eval=FALSE}
-data_ars_eso <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESO' & startsWith(code_bss, "BSS"))
-```
-
-Suppression des géométries vides :
-```{r delete-empty-geom, eval=FALSE}
-data_ars_with_geom = data_ars_eso[!sf::st_is_empty(data_ars_eso),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de Hub'eau :
-
-```{r select_captages_ars_not_hubeau, eval=FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_hubeau <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_hubeau_eso, by = c("code_bss" = "bss_id"))
-
-# Récupérer les géométries par jointure avec stations_eso_ars
-data_ars_not_hubeau <- data_ars_not_hubeau |> 
-  dplyr::left_join(data_ars_eso, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_hubeau <- dplyr::select(data_ars_not_hubeau, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_hubeau) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_hubeau))
-```
-
-## Consolidation des stations Hub'eau
-
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
-```{r consolidate_stations_hubeau, eval=FALSE}
-stations_eso_hubeau <- data_hubeau_eso |> 
-  dplyr::rename(code_station = bss_id,
-                libelle_station = nom_commune,
-                date_creation = date_debut_mesure,
-                code_commune = code_insee) |>
-  dplyr::mutate(code_sise_eaux = "",
-                source = "HUBEAU") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-```{r consolidate_stations_ars, eval=FALSE}
-stations_eso_ars <- data_ars_not_hubeau |>
-  dplyr::rename(code_station = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge_stations, eval=FALSE}
-station_eso <- dplyr::bind_rows(stations_eso_hubeau, stations_eso_ars)
-```
-
-# Ajout des champs manquants au dataframe station_eso
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load_sage, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_eso` :
-```{r update_code_sage, eval=FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-```{r get_duplicates_code_sage, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_eso, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel, à exécuter si le tibble comporte des lignes) :
-```{r delete_station_duplicates_code_sage, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-```{r replace_code_sage_na, eval=FALSE}
-station_eso <- station_eso |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-```{r load_bassin-versant, eval=FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_eso` :
-```{r update_codes_bassin_versant_masse_eau, eval=FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-## Ajout du `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-```{r load_captage_prioritaire, eval=FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-```{r update_captage_prioriaire, eval=FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_eso <- station_eso |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_bss)
-```
-
-## Mise à jour du code_sise_eaux à partir des données ARS
-
-Remplacer les valeurs vides dans `code_station` par NA dans `station_eso` :
-```{r na_code_sise_eaux, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-```
-
-```{r update_codes_sise_eaux, eval=FALSE}
-# Supprimer l'objet géométrie du dataframe data_ars
-data_ars_eso <- data_ars_eso |>
-  sf::st_drop_geometry()
-
-# Réaliser une jointure attributaire
-station_eso <- station_eso |>
-  dplyr::left_join(data_ars_eso, by = c("code_station" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
-```
-
-Identification des doublons générés par la jointure de récupération des `code_sise_eaux` :
-```{r get_duplicates_code_sise_eaux, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sise_eaux <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-  doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  sf::st_drop_geometry()
-  station_eso_sans_geom <- station_eso |> sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(station_eso_sans_geom, by = "code_station") |>
-  dplyr::select(code_station, n, code_sise_eaux, libelle_station)
-
-# Visualiser les doublons
-print(doublons_stations_code_sise_eaux)
-```
-
-Suppression des doublons :
-```{r delete_duplicates_code_sise_eaux, eval=FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-```{r select_station_eso_variables, eval=FALSE}
-station_eso <- station_eso |> 
-  dplyr::select(code_station,
-                code_sise_eaux,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive_old_table, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_eso", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get_comments_old_table, eval=FALSE}
-station_eso_comments <- datalibaba::get_table_comments(table = "station_eso",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish_new_table, eval=FALSE}
-datalibaba::poster_data(data = station_eso,
-                        table = "station_eso",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish_new_table_comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de souterraines (source : ARS + Hub'eau, ", date_today, ")"),
-  table = "station_eso",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish_new_fields_comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = station_eso_comments,
-                           table = "station_eso",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-## Mise à jour du skeleton
-
-```{r development-create-template, eval=FALSE}
-# Créer de l'arborescence et des fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations ESO",
-  template_dir = "update_station_eso",
-  template_description = "Mise à jour des stations ESO",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_station_eso.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_station_eso/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_station_eso.Rmd", vignette_name = "Mise à jour des stations ESO")
-```
-
diff --git a/inst/rmarkdown/templates/update_station_eso/template.yaml b/inst/rmarkdown/templates/update_station_eso/template.yaml
deleted file mode 100644
index 2c44b9194883b3e58dc8a28f98486ecea6090877..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_station_eso/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des stations ESO
-description: >
-   Mise à jour des stations ESO
-create_dir: TRUE
diff --git a/inst/rmarkdown/templates/update_station_esu/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/update_station_esu/skeleton/skeleton.Rmd
deleted file mode 100644
index 8358c0e547c862358e18489405d346b1f28441f6..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_station_esu/skeleton/skeleton.Rmd
+++ /dev/null
@@ -1,402 +0,0 @@
----
-title: "Mise à jour des stations ESU"
-output: html_document
-editor_options: 
-  chunk_output_type: console
----
-
-```{r development}
-library(datalibaba)
-library(dplyr)
-library(sf)
-library(collectr)
-library(usethis)
-library(nngeo)
-```
-
-```{r development-load}
-# Load already included functions if relevant
-pkgload::load_all(export_all = FALSE)
-```
-
-# Objectif
-
-Actualiser les **stations de mesure eau de surface (ESU)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `sandre.n_station_mesure_eaux_surface_loire_bretagne` (source : SANDRE)
-- `captages.n_captage_p_r52` (source : ARS)
-
-# Chargement des lot de données source
-
-## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
-```{r load-hubeau_qualite_rivieres_station_pc, eval=FALSE}
-data_sandre <- datalibaba::importer_data(
-  table = "n_station_mesure_eaux_surface_loire_bretagne",
-  schema = "sandre",
-  db = "si_eau")
-```
-
-## Captages ARS ESU
-```{r load_captages_ars_eso, eval=FALSE}
-data_ars_esu <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESU')
-```
-
-Suppression des géométries vides :
-```{r delete-empty-geom, eval=FALSE}
-data_ars_with_geom = data_ars_esu[!sf::st_is_empty(data_ars_esu),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de SANDRE
-
-```{r select-captages-ars-not-hubeau, eval=FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_sandre <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_sandre, by = c("code_captage" = "code_station"))
-
-# Récupérer les géométries par jointure avec stations_esu_ars
-data_ars_not_sandre <- data_ars_not_sandre |> 
-  dplyr::left_join(data_ars_esu, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_sandre <- dplyr::select(data_ars_not_sandre, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_sandre) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_sandre))
-```
-
-## Consolidation des stations SANDRE
-
-Sélection des variables et ajout de la source :
-```{r consolidate-stations_hubeau, eval=FALSE}
-stations_esu_sandre <- data_sandre |> 
-  dplyr::mutate(source = "SANDRE") |>
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_commune,
-                the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_esu_sandre$date_creation <- as.Date(stations_esu_sandre$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-```{r consolidate-stations_ars, eval=FALSE}
-stations_esu_ars <- data_ars_not_sandre |>
-  dplyr::rename(code_station = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge-stations, eval=FALSE}
-station_esu <- dplyr::bind_rows(stations_esu_sandre, stations_esu_ars)
-```
-
-# Ajout des champs manquants au dataframe station_esu
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-```{r load-sage, eval=FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_esu` :
-```{r update-code-sage, eval=FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-```{r get-station-duplicates-code_sage, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel) :
-```{r delete-station-duplicates-code-sage, eval=FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-```{r replace-code-sage-na, eval=FALSE}
-station_esu <- station_esu |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-```{r load-bassin-versant, eval=FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_esu` :
-```{r update-codes-bassin-versant-masse-eau, eval=FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-Fusion des variables pour conserver un maximum de valeurs :
-```{r merge-variables, eval=FALSE}
-# Fusionner les variables code_masse_eau.x et code_masse_eau.y, code_eu_masse_eau.x et code_eu_masse_eau.y
-station_esu <- station_esu |>
-  dplyr::mutate(code_masse_eau = dplyr::coalesce(code_masse_eau.x, code_masse_eau.y)) |>
-  dplyr::select(-code_masse_eau.x, -code_masse_eau.y)  # Supprimer les colonnes inutiles
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des bassins versants :
-```{r get_duplicates_code_bassin_versant, eval=FALSE}
-# Compter les occurrences de chaque code_station
-doublons_code_bassin_versant <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_bassin_versant_specifique_000, by = c("code_bassin_versant" = "code_bassin_versant_specifique")) |>
-  dplyr::select(code_station, n, libelle_station, code_bassin_versant, nom_bassin_versant_specifique, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_code_bassin_versant)
-```
-
-Suppression des doublons (optionnel) :
-```{r delete_duplicates_code_bassin_versant, eval=FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-## Ajout du champs `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-```{r load-captage-prioritaire, eval=FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-```{r update-captage-prioriaire, eval=FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_esu <- station_esu |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_sise_eaux)
-```
-
-# Intersection des stations ESU avec les SAGE de la région et les limites régionales
-
-Chargement de la table des limites de la région :
-```{r load-region, eval=FALSE}
-n_region_exp_r52 <- datalibaba::importer_data(
-  table = "n_region_exp_r52",
-  schema = "adminexpress",
-  db = "referentiels"
-)
-```
-
-Vérification des objets sf :
-```{r st_as_sf, eval=FALSE}
-# Vérifier que les deux dataframes sont en format 'sf'
-station_esu <- sf::st_as_sf(station_esu)
-n_sage_r52 <- sf::st_as_sf(n_sage_r52)
-n_region_exp_r52 <- sf::st_as_sf(n_region_exp_r52)
-
-```
-
-Création d'un polygone fusionnant SAGE et région :
-```{r limit_sage, eval=FALSE}
-# Identification des noms de colonnes communs aux deux objets
-colonnes_communes <- intersect(names(n_region_exp_r52), names(n_sage_r52))
-
-# Sélection des colonnes communes dans chaque objet
-n_region_exp_r52 <- n_region_exp_r52[, colonnes_communes]
-n_sage_r52 <- n_sage_r52[, colonnes_communes]
-
-# Combinaison des deux objets dans un seul objet sf
-# (création d'une seule collection de géométries pour pouvoir les fusionner)
-objets_combines <- rbind(n_region_exp_r52, n_sage_r52)
-
-# Agrégation de tous les polygones en un seul avec st_union()
-# (si les polygones se chevauchent ou sont adjacents, ils seront fusionnés)
-n_sage_r52_union <- sf::st_union(objets_combines)
-
-# Correction de la géométrie, pour s'assurer qu'elle est valide
-n_sage_r52_valid <- sf::st_make_valid(n_sage_r52_union)
-
-# Suppresion des trous internes en récupérant uniquement la limite extérieure
-n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
-
-```
-
-Sélection des stations ESU présentes dans les SAGE et la région :
-```{r st_intersects_stations_sage, eval=FALSE}
-# Filtrer les stations ESU présentes dans les SAGE de la région
-station_esu <- sf::st_filter(station_esu, n_sage_r52_limit)
-
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-```{r select-station-esu-variables, eval=FALSE}
-station_esu <- station_esu |> 
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-```{r archive-old-table, eval=FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_esu", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get-comments-old-table, eval=FALSE}
-station_esu_comments <- datalibaba::get_table_comments(table = "station_esu",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-```{r publish-new-table, eval=FALSE}
-datalibaba::poster_data(data = station_esu,
-                        table = "station_esu",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish-new-table-comment, eval=FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de surface (ESU) (source : ARS + SANDRE, ", date_today, ")"),
-  table = "station_esu",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish-new-fields-comments, eval=FALSE}
-datalibaba::post_dico_attr(dico = station_esu_comments,
-                           table = "station_esu",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-```{r development-create-template, eval=FALSE}
-# Créer l'arborescence et les fichiers du template
-usethis::use_rmarkdown_template(
-  template_name = "Mise à jour des stations ESU",
-  template_dir = "update_station_esu",
-  template_description = "Mise à jour des stations ESU",
-  template_create_dir = TRUE
-)
-
-# Définir les chemins source et destination
-source_file <- "dev/flat_update_station_esu.Rmd"
-destination_dir <- "inst/rmarkdown/templates/update_station_esu/skeleton"
-destination_file <- file.path(destination_dir, "skeleton.Rmd")
-
-# Copier et renommer le fichier
-file.copy(from = source_file, to = destination_file, overwrite = TRUE)
-message("File copied and renamed successfully.")
-```
-
-```{r development-inflate, eval=FALSE}
-options(rmarkdown.html_vignette.check_title = FALSE)
-# Run but keep eval=FALSE to avoid infinite loop
-# Execute in the console directly
-fusen::inflate(flat_file = "dev/flat_update_station_esu.Rmd", vignette_name = "Mise à jour des stations ESU")
-```
-
diff --git a/inst/rmarkdown/templates/update_station_esu/template.yaml b/inst/rmarkdown/templates/update_station_esu/template.yaml
deleted file mode 100644
index 9bcfc07f2085ac98117150c8f0ca640a3419aef9..0000000000000000000000000000000000000000
--- a/inst/rmarkdown/templates/update_station_esu/template.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: Mise à jour des stations ESU
-description: >
-   Mise à jour des stations ESU
-create_dir: TRUE
diff --git a/vignettes/mise-a-jour-des-captages-ars.Rmd b/vignettes/mise-a-jour-des-captages-ars.Rmd
index 3f1e868719ae53e529cf3542e53c45667c5875a3..887c61e2a77a3a4c03f49e69f2f3d5c3b2e34611 100644
--- a/vignettes/mise-a-jour-des-captages-ars.Rmd
+++ b/vignettes/mise-a-jour-des-captages-ars.Rmd
@@ -23,6 +23,18 @@ library(data.captages)
 
 
 
+```{r config}
+#| eval: no
+
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
+
+# Accéder à la valeur pour file_path_data_ars
+file_path_data_ars <- config$file_path_data_ars
+```
+
+
+
 # Objectif
 
 Actualiser **la table des captages de la région** (`captages.n_captage_p_r52`) 
@@ -33,6 +45,9 @@ Actualiser **la table des captages de la région** (`captages.n_captage_p_r52`)
 ## Captages ARS (SISE-EAUX)
 
 ### Chargement des captages du dernier livrable en date
+
+Il faut au préalable **modifier si besoin le chemin vers le dernier livrable de l'ARS au format Excel qui est stocké dans le fichier config.yml** situé à la racine du package.
+
 L'export transmis par l'ARS est importé ainsi que la date du fichier (qui sera utilisée ultérieurement comme métadonnée) :
 ```{r load_data}
 #| eval: no
@@ -40,14 +55,11 @@ L'export transmis par l'ARS est importé ainsi que la date du fichier (qui sera
 # Make the dataset file available to the current Rmd during development
 pkgload::load_all(path = here::here(), export_all = FALSE)
 
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/CAP_SISE_13_02_2024.xlsx"
-
 # Stocker la date de dernier enregistrement du fichier
-last_modified_date <- format(file.info(file_path)$ctime,"%d/%m/%Y")
+last_modified_date <- format(file.info(file_path_data_ars)$ctime,"%d/%m/%Y")
 
 # Lire le fichier Excel dans un dataframe
-data <- readxl::read_excel(file_path)
+data <- readxl::read_excel(file_path_data_ars)
 
 # Vérifier le type de données dans la colonne "INS - Début d'usage - Date"
 str(data)
@@ -59,7 +71,6 @@ data <- data |>
 # Convertir les valeurs numériques en dates
 data <- data |>
   dplyr::mutate(`INS - Début d'usage - Date` = as.Date(`INS - Début d'usage - Date`, origin = "1899-12-30"))
-
 ```
 
 
@@ -72,118 +83,25 @@ table en base :
 
 captage <- data |>
   dplyr::rename(departement_captage = "INS - Dépt gest - Code",
-         code_unite_gestion = "UGE - Code national",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "INS - Code national",
-         nom_captage = "INS - Nom",
-         type_installation = "INS - Type - Code",
-         nature_eau_captage = "INS - Nature de l'eau - Code",
-         usage_captage = "INS - Usage direct - Code",
-         etat_installation = "INS - Etat - Code",
-         date_etat_installation = "INS - Début d'usage - Date",
-         code_responsable_suivi = "INS - Resp. suivi - Code",
-         motif_abandon = "INS - Motif d'abandon - Libellé",
-         code_commune_captage = "COM - Code INSEE (5 car)",
-         nom_commune_captage = "COM - Nom",
-         code_bss = "CAP - BSS - Code",
-         designation_bss = "CAP - BSS - Désignation",
-         coordonnee_x = "PSV - Coordonnée X",
-         coordonnee_y = "PSV - Coordonnée Y",
-         coordonnee_z = "PSV - Coordonnée Z",
-         debit_moyen_m3j = "INS - Débit moyen/jour - m3/j")
-
-```
-
-
-## Captages ARS (SISE-EAUX) gérés par un autre département
-:warning: On récupère de façon temporaire ces captages (principalement gérés 
-par le 35) dans un livrable plus ancien car ils ne sont pas disponibles dans
-la livraison la plus récente. il faut donc vérifier le contenu du livrable 
-avant d'exécuter le chunk suivant, après chaque livraison. 
-
-### Chargement des captages manquants
-```{r load_missing_data}
-#| eval: no
-
-# Make the dataset file available to the current Rmd during development
-pkgload::load_all(path = here::here(), export_all = FALSE)
-
-# Spécifier le chemin vers le fichier Excel
-file_path <- "T:/datalab/SRNP_DEMA_SI_EAU/CAPTAGES_ZONAGES_ASSOCIES/DONNEES_CLIENT/CAPTAGES/@archives/CAP_SISE_11_11_2020.xlsx"
-
-# Lire le fichier Excel dans un dataframe et filtrer pour ne conserver que les enregistrements du 35
-missing_data <- readxl::read_excel(file_path, skip = 5) |> 
-  dplyr::filter(`Dpt Gest.` == "035")
-
-```
-
-
-### Renommage et sélection des variables
-```{r load_missing_data-1}
-#| eval: no
-
-# Adapter le format du dataframe pour le fusionner avec les données plus récentes
-captage_035 <- missing_data |>
-  dplyr::rename(departement_captage = "Dpt Gest.",
-         code_unite_gestion = "UGE - Code",
-         nom_unite_gestion = "UGE - Nom",
-         code_captage = "Code CAP",
-         nom_captage = "Nom Captage",
-         type_installation = "Type ins",
-         nature_eau_captage = "NatEau",
-         usage_captage = "Usage",
-         etat_installation = "Etat",
-         date_etat_installation = "DébUsage",
-         motif_abandon = "Motif abandon",
-         code_commune_captage = "Com Code",
-         nom_commune_captage = "Com Nom",
-         code_bss = "BSS code",
-         designation_bss = "Dés. BSS",
-         coordonnee_x = "X - Lbt2e",
-         coordonnee_y = "Y - Lbt2e",
-         coordonnee_z = "Z",
-         debit_moyen_m3j = "moy m3/j") |>
-  dplyr::mutate(date_etat_installation = as.Date(date_etat_installation),
-                code_responsable_suivi = NA,
-                code_commune_captage = as.character(code_commune_captage)
-                ) |>
-  dplyr::select(
-    departement_captage,
-    code_unite_gestion,
-    nom_unite_gestion,
-    code_captage,
-    nom_captage,
-    type_installation,
-    nature_eau_captage,
-    usage_captage,
-    etat_installation,
-    date_etat_installation,
-    code_responsable_suivi,
-    motif_abandon,
-    code_commune_captage,
-    nom_commune_captage,
-    code_bss,
-    designation_bss,
-    coordonnee_x,
-    coordonnee_y,
-    coordonnee_z,
-    debit_moyen_m3j
-  )
-
-
-```
-
-
-## Fusion des deux dataframes
-
-On rassemble les données des dataframes `captage` `captage_035` pour disposer
-du référentiel le plus complet possible :
-```{r merge_captages}
-#| eval: no
-
-# Fusionner les deux dataframes
-captage_full <- dplyr::bind_rows(captage, captage_035) |>
-  dplyr::arrange(code_captage)
+                code_unite_gestion = "UGE - Code national",
+                nom_unite_gestion = "UGE - Nom",
+                code_captage = "INS - Code national",
+                nom_captage = "INS - Nom",
+                type_installation = "INS - Type - Code",
+                nature_eau_captage = "INS - Nature de l'eau - Code",
+                usage_captage = "INS - Usage direct - Code",
+                etat_installation = "INS - Etat - Code",
+                date_etat_installation = "INS - Début d'usage - Date",
+                code_responsable_suivi = "INS - Resp. suivi - Code",
+                motif_abandon = "INS - Motif d'abandon - Libellé",
+                code_commune_captage = "COM - Code INSEE (5 car)",
+                nom_commune_captage = "COM - Nom",
+                code_bss = "CAP - BSS - Code",
+                designation_bss = "CAP - BSS - Désignation",
+                coordonnee_x = "PSV - Coordonnée X",
+                coordonnee_y = "PSV - Coordonnée Y",
+                coordonnee_z = "PSV - Coordonnée Z",
+                debit_moyen_m3j = "INS - Débit moyen/jour - m3/j")
 
 ```
 
@@ -203,7 +121,6 @@ table_de_passage_bss_000 <- datalibaba::importer_data(
   db = "si_eau",
   user = "admin"
 )
-
 ```
 
 
@@ -214,7 +131,7 @@ jointure est possible :
 #| eval: no
 
 # Mettre à jour la variable `code_bss` du dataframe `captage`
-captage_bss <- captage_full |>
+captage_bss <- captage |>
   dplyr::left_join(table_de_passage_bss_000, by = c("code_bss" = "indice")) |>
   dplyr::mutate(code_bss = ifelse(!is.na(nouvel_identifiant), nouvel_identifiant, code_bss)) |>
   dplyr::select(departement_captage:debit_moyen_m3j)
@@ -254,11 +171,11 @@ cat("Le fichier captage_eso_sans_code_bss.csv a été enregistré avec succès.\
 
 # Comparer la structure du dataframe avec celle de la table en base 
 collectr::check_structure_table(dataframe = captage, 
+                                host = Sys.getenv("server"),
                                 database = "si_eau",
                                 table = "n_captage_p_r52", 
                                 schema = "captages",
                                 role = "admin")
-
 ```
 
 
@@ -273,7 +190,6 @@ captage_sans_geom <- captage_bss |>
   dplyr::mutate(coordonnee_x = ifelse(coordonnee_x %in% c(1, 3), NA, coordonnee_x),
                 coordonnee_y = ifelse(coordonnee_y %in% c(1, 3), NA, coordonnee_y)) |>
   dplyr::filter(is.na(coordonnee_x) | is.na(coordonnee_y))
-
 ```
 
 
@@ -287,7 +203,6 @@ utils::write.csv(captage_sans_geom,
 
 # Afficher un message de confirmation
 cat("Le fichier captage_sans_geom.csv a été enregistré avec succès.\n")
-
 ```
 
 
@@ -309,7 +224,6 @@ captage_geom <- sf::st_as_sf(captage_with_xy,
                         crs = 2154,
                         remove = FALSE) |>
   dplyr::rename(the_geom = geometry)
-
 ```
 
 
@@ -320,7 +234,6 @@ Reconstitution du lot de données complet (avec et sans géométrie valide) :
 #| eval: no
 
 n_captage_p_r52 <- dplyr::bind_rows(captage_geom, captage_sans_geom)
-
 ```
 
 
@@ -332,17 +245,15 @@ La version précédente de l'export est stockée dans un schéma d'archive :
 ```{r archive_old_table}
 #| eval: no
 
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "n_captage_p_r52", 
                         schema = "captages",
                         new_schema = "zz_archives",
                         role = "admin")
-
 ```
 
 
-## Ajout de la contrainté géomatique concernant le type de géométries
-
 ## Récupération des commentaires de la version précédente de la table 
 ```{r get_comments_old_table}
 #| eval: no
@@ -354,7 +265,6 @@ n_captage_p_r52_comments <- datalibaba::get_table_comments(table = "n_captage_p_
   dplyr::filter(!is.na(nom_col)) |> 
   dplyr::select(nom_col, commentaire) |>
   dplyr::arrange(nom_col)
-
 ```
 
 
@@ -371,10 +281,11 @@ datalibaba::poster_data(data = n_captage_p_r52,
                         pk = "code_captage",
                         overwrite = TRUE,
                         user = "admin")
-
 ```
 
 
+## Ajout de la contrainte géomatique concernant le type de géométries
+
 ## Publication de la description de la table actualisée
 ```{r publish_new_table_comment}
 #| eval: no
@@ -385,7 +296,6 @@ datalibaba::commenter_table(
   schema = "captages",
   db = "si_eau",
   user = "admin")
-
 ```
 
 
@@ -398,8 +308,6 @@ datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
                            schema = "captages",
                            db = "si_eau",
                            user = "admin")
-
 ```
 
 
-
diff --git a/vignettes/mise-a-jour-des-captages-en-eau-potable.Rmd b/vignettes/mise-a-jour-des-captages-en-eau-potable.Rmd
index ac69084334ad93d4a27861bdd41a710648ec2c52..be77b249920e79e28e029b3001e15d7f4da82c98 100644
--- a/vignettes/mise-a-jour-des-captages-en-eau-potable.Rmd
+++ b/vignettes/mise-a-jour-des-captages-en-eau-potable.Rmd
@@ -2,7 +2,7 @@
 title: "Mise à jour des captages en eau potable"
 output: rmarkdown::html_vignette
 vignette: >
-  %\VignetteIndexEntry{mise-a-jour-des-captages-en-eau-potable}
+  %\VignetteIndexEntry{Mise à jour des captages en eau potable}
   %\VignetteEngine{knitr::rmarkdown}
   %\VignetteEncoding{UTF-8}
 ---
@@ -14,27 +14,31 @@ knitr::opts_chunk$set(
 )
 ```
 
-```{r setup}
+```{r}
 library(data.captages)
 ```
 
 <!-- WARNING - This vignette is generated by {fusen} from dev/flat_update_captage_ep.Rmd: do not edit by hand -->
 
+
+
+
 # Objectif
 
 Actualiser **la table des captages en eau potable de la région** (`captages.n_captage_eau_potable_p_r52`) à partir de la table des captages de l'ARS (`captages.n_captage_p_r52`).
 
-
 # Création du dataframe des captages en eau potable
 
 ## Chargement de la table des captages
+```{r load-captage}
+#| eval: no
 
-```{r load-captage, eval = FALSE}
 n_captage_p_r52 <- datalibaba::importer_data(db = "si_eau",
                                              schema = "captages",
                                              table = "n_captage_p_r52")
 ```
 
+
 ## Filtre sur les captages en eau potable
 
 Les enregistrements correspondant aux valeurs suivantes pour les usages sont sélectionnés :
@@ -45,50 +49,61 @@ Les enregistrements correspondant aux valeurs suivantes pour les usages sont sé
 - `PRV` : ADDUCTION COLLECTIVE PRIVEE
 
 Source : table `captages.n_captage_usage_direct`
+```{r filter-captage-ep}
+#| eval: no
 
-
-```{r filter-captage-ep, eval = FALSE}
 n_captage_eau_potable_p_r52 <- n_captage_p_r52 |>
   dplyr::filter(usage_captage  %in% c('AEP', 'PRV', 'ALI', 'CND'))
 ```
 
+
 # Publication de la table en base
 
 ## Vérification de la correspondance des variables avec les champs stockés en base
-
-```{r check-attributes, eval = FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::check_structure_table(connexion, 
-                                df = n_captage_eau_potable_p_r52, 
-                                table_name = "n_captage_eau_potable_p_r52", 
-                                schema = "alimentation_eau_potable")
+```{r check-attributes}
+#| eval: no
+
+collectr::check_structure_table(dataframe = n_captage_eau_potable_p_r52,
+                                host = Sys.getenv("server"),
+                                database = "si_eau",
+                                table = "n_captage_eau_potable_p_r52", 
+                                schema = "alimentation_eau_potable",
+                                role = "admin")
 ```
 
+
 ## Archivage de la version précédente de la table
+```{r archive-old-table}
+#| eval: no
 
-```{r archive-old-table, eval = FALSE}
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "n_captage_eau_potable_p_r52", 
                         schema = "alimentation_eau_potable",
                         new_schema = "zz_archives",
                         role = "admin")
 ```
 
-## Récupération des commentaires de la version précédente de la table 
 
-```{r get-comments-old-table, eval = FALSE}
-n_captage_eau_potable_p_r52_comments <- datalibaba::get_table_comments(
-  table = "n_captage_eau_potable_p_r52",
-  schema = "alimentation_eau_potable",
-  db = "si_eau") |> 
+## Récupération des commentaires de la version précédente de la table 
+```{r get-comments-old-table}
+#| eval: no
+
+n_captage_eau_potable_p_r52_comments <- 
+  datalibaba::get_table_comments(
+    table = "n_captage_eau_potable_p_r52",
+    schema = "alimentation_eau_potable",
+    db = "si_eau") |> 
   dplyr::filter(!is.na(nom_col)) |> 
   dplyr::select(nom_col, commentaire) |>
   dplyr::arrange(nom_col)
 ```
 
+
 ## Publication de la table actualisée
+```{r publish-new-table}
+#| eval: no
 
-```{r publish-new-table, eval = FALSE}
 datalibaba::poster_data(data = n_captage_eau_potable_p_r52,
                         table = "n_captage_eau_potable_p_r52",
                         schema = "alimentation_eau_potable",
@@ -98,26 +113,32 @@ datalibaba::poster_data(data = n_captage_eau_potable_p_r52,
                         user = "admin")
 ```
 
+
+## Ajout de la contrainte géomatique concernant le type de géométries
+
 ## Publication de la description de la table actualisée
+```{r publish-new-table-comment}
+#| eval: no
 
-```{r publish-new-table-comment, eval = FALSE}
 datalibaba::commenter_table(
   comment = glue::glue("Points de prélèvement en eau potable de la région Pays de la Loire (source : ARS, ", last_modified_date, ")"),
   table = "n_captage_eau_potable_p_r52",
   schema = "alimentation_eau_potable",
   db = "si_eau",
-  user= "admin"
-)
+  user= "admin")
 ```
 
+
 ## Publication des commentaires des champs de la table actualisée
+```{r publish-new-fields-comments}
+#| eval: no
 
-```{r publish-new-fields-comments, eval = FALSE}
 datalibaba::post_dico_attr(dico = n_captage_p_r52_comments,
                            table = "n_captage_eau_potable_p_r52",
                            schema = "alimentation_eau_potable",
                            db = "si_eau",
-                           user = "admin"
-                           )
+                           user = "admin")
 ```
 
+
+
diff --git a/vignettes/mise-a-jour-des-stations-de-mesure.Rmd b/vignettes/mise-a-jour-des-stations-de-mesure.Rmd
index a292cb1a2042a722576dc49ecb332154dcef01fd..de3ecd6201dec99df25b1db54133b5d82e090e4f 100644
--- a/vignettes/mise-a-jour-des-stations-de-mesure.Rmd
+++ b/vignettes/mise-a-jour-des-stations-de-mesure.Rmd
@@ -23,6 +23,17 @@ library(data.captages)
 
 
 
+```{r config}
+#| eval: no
+
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
+
+# Accéder à la valeur pour year
+year <- config$year
+```
+
+
 # Objectif
 
 Actualiser les **stations de mesure eau souterraine (ESO) et eau de surface (ESU)** 
@@ -80,7 +91,7 @@ data_esu_sandre <- datalibaba::importer_data(
 
 ## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
 
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
+Renommage et ajout de variables :
 ```{r consolidate_stations_hubeau_eso}
 #| eval: no
 
@@ -89,34 +100,17 @@ stations_eso_hubeau <- data_eso_hubeau |>
                 date_creation = date_debut_mesure,
                 code_commune = code_insee) |>
   dplyr::mutate(code_sise_eaux = NA,
+                code_naiades = NA,
                 source = "HUBEAU",
                 nature_eau = "ESO",
-                code_masse_eau = NA) |>
-  dplyr::select(code_bss = bss_id,
-                code_sise_eaux,
-                libelle_station,
-                nature_eau,
-                date_creation,
-                source,
-                code_masse_eau = codes_masse_eau_edl,
-                code_commune,
-                the_geom)
+                code_masse_eau = NA)
 
 # Convertir les dates de la variable date_creation
 stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
 ```
 
 
-Remplacer les valeurs vides dans `code_sise_eaux` par NA dans `stations_eso_hubeau` :
-```{r na_code_sise_eaux}
-#| eval: no
-
-stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-```
-
-
-Réaliser la jointure sur la variable `code_bss` :
+Réaliser la jointure sur la variable `bss_id` :
 ```{r update_code_sise_eaux}
 #| eval: no
 
@@ -125,9 +119,8 @@ data_ars_no_geom <- data_ars |> sf::st_drop_geometry()
 
 # Réaliser une jointure attributaire
 stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::left_join(data_ars_no_geom, by = c("code_bss" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
+  dplyr::left_join(data_ars_no_geom, by = c("bss_id" = "code_bss")) |>
+  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux))
 ```
 
 
@@ -137,7 +130,7 @@ Identification des doublons générés par la jointure de récupération des `co
 
 # Compter les occurrences de chaque code_station
 doublons_stations_code_sise_eaux <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss) |>
+  dplyr::group_by(bss_id) |>
   dplyr::tally(name = "n") |>
   dplyr::filter(n > 1)
 
@@ -148,8 +141,8 @@ doublons_stations_code_sise_eaux <- stations_eso_hubeau |>
 
 # Joindre les informations additionnelles
 doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(stations_eso_hubeau_no_geom, by = "code_bss") |>
-  dplyr::select(code_bss, n, code_sise_eaux, libelle_station)
+  dplyr::left_join(stations_eso_hubeau_no_geom, by = "bss_id") |>
+  dplyr::select(bss_id, n, code_sise_eaux, libelle_station)
 
 # Visualiser les doublons
 print(doublons_stations_code_sise_eaux)
@@ -161,22 +154,42 @@ Suppression des doublons :
 #| eval: no
 
 stations_eso_hubeau <- stations_eso_hubeau |>
-  dplyr::group_by(code_bss, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
+  dplyr::group_by(bss_id, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
+```
+
+
+Sélection finale des variables :
+```{r consolidate_stations_esu_sandre}
+#| eval: no
+
+stations_eso_hubeau <- stations_eso_hubeau |> 
+  dplyr::select(code_bss = bss_id,
+                code_sise_eaux,
+                code_naiades,
+                libelle_station,
+                date_creation,
+                nature_eau,
+                source,
+                code_masse_eau = codes_masse_eau_edl,
+                code_commune,
+                the_geom)
 ```
 
 
 ## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
 
-Sélection des variables et ajout de la source :
-```{r consolidate_stations_esu_sandre}
+Sélection et ajout de variables :
+```{r consolidate_stations_esu_sandre-1}
 #| eval: no
 
 stations_esu_sandre <- data_esu_sandre |> 
   dplyr::mutate(code_bss = NA,
+                code_sise_eaux = NA,
                 source = "SANDRE",
                 nature_eau = "ESU") |>
   dplyr::select(code_bss,
-                code_sise_eaux = code_station,
+                code_sise_eaux,
+                code_naiades = code_station,
                 libelle_station,
                 date_creation,
                 nature_eau,
@@ -210,7 +223,7 @@ stations_ars_not_hubeau_sandre <- data_ars_with_geom |>
   sf::st_drop_geometry() |> 
   # Exclure les stations présentes dans stations_eso_hubeau et stations_esu_sandre
   dplyr::anti_join(stations_eso_hubeau, by = c("code_bss" = "code_bss")) |> 
-  dplyr::anti_join(stations_esu_sandre, by = c("code_captage" = "code_sise_eaux")) |> 
+  dplyr::anti_join(stations_esu_sandre, by = c("code_captage" = "code_naiades")) |> 
   # Récupérer les géométries par jointure avec data_ars
   dplyr::left_join(data_ars, by = "code_captage") |> 
   # Désélectionner toutes les variables finissant par .y
@@ -223,21 +236,39 @@ names(stations_ars_not_hubeau_sandre) <- gsub("\\.x$", "", names(stations_ars_no
 
 ## Consolidation des stations ARS
 
-Ajout de la source et sélection des variables :
+Ajout de la source :
 ```{r consolidate_stations_ars}
 #| eval: no
 
-# Ajouter la variable `source` et sélectionner les variables nécessaires
+# Ajouter la variable `source`
 stations_ars <- stations_ars_not_hubeau_sandre |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_bss = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                nature_eau = nature_eau_captage,
-                date_creation = date_etat_installation,
-                source,
-                code_commune = code_commune_captage,
-                the_geom)
+  dplyr::mutate(source = "ARS") 
+```
+
+
+## Ajout de la variable `code_naiades` pour les stations ARS
+
+Cet ajout ne concerne que les stations ESU :
+```{r add_code_naiades}
+#| eval: no
+
+# Créer et alimenter la variable `code_naiades` à partir de `code_sise_eaux`
+stations_ars <- stations_ars |> 
+  dplyr::mutate(
+    code_naiades = dplyr::case_when(
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^044") ~ stringr::str_replace(code_captage, "^044", "BS"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^049") ~ stringr::str_replace(code_captage, "^049", "BX"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^053") ~ stringr::str_replace(code_captage, "^053", "CB"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^072") ~ stringr::str_replace(code_captage, "^072", "CU"),
+      nature_eau_captage == "ESU" & 
+        stringr::str_detect(code_captage, "^085") ~ stringr::str_replace(code_captage, "^085", "DH"),
+      TRUE ~ NA_character_  # Met NA si aucun pattern ne correspond
+    )
+  )
 ```
 
 
@@ -271,6 +302,25 @@ stations_ars <- stations_ars |>
 ```
 
 
+Sélection finale des variables :
+```{r select_variables_stations_ars}
+#| eval: no
+
+# Sélectionner les variables nécessaires
+stations_ars <- stations_ars |>
+  dplyr::select(code_bss,
+                code_sise_eaux = code_captage,
+                code_naiades,
+                libelle_station = nom_captage,
+                nature_eau = nature_eau_captage,
+                date_creation = date_etat_installation,
+                source,
+                code_masse_eau,
+                code_commune = code_commune_captage,
+                the_geom)
+```
+
+
 ## Fusion des trois dataframes
 ```{r merge_stations}
 #| eval: no
@@ -345,11 +395,11 @@ n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
 ```
 
 
-Sélection des stations ESU présentes dans les SAGE et la région :
+Sélection des stations présentes dans les SAGE et la région :
 ```{r st_intersects_stations_sage}
 #| eval: no
 
-# Filtrer les stations ESU présentes dans les SAGE de la région
+# Filtrer les stations présentes dans les SAGE de la région
 station_sage_r52 <- sf::st_filter(station_full, n_sage_r52_limit)
 ```
 
@@ -369,28 +419,6 @@ station_sage_r52 <- station_sage_r52 |>
 ```
 
 
-
-## Ajout de la variable `code_naiades`
-Cet ajout ne concerne que les stations ESU :
-```{r add_code_naiades}
-#| eval: no
-
-# Créer et alimenter la variable `code_naiades` à partir de `code_sise_eaux`
-station_sage_r52 <- station_sage_r52 |> 
-  dplyr::mutate(
-    code_naiades = dplyr::case_when(
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^044") ~ stringr::str_replace(code_sise_eaux, "^044", "BS"),
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^049") ~ stringr::str_replace(code_sise_eaux, "^049", "BX"),
-      nature_eau == "ESU" & source == "ARS" & 
-        stringr::str_detect(code_sise_eaux, "^053") ~ stringr::str_replace(code_sise_eaux, "^053", "CB"),
-      TRUE ~ NA_character_  # Met NA si aucun pattern ne correspond
-    )
-  )
-```
-
-
 ## Ajout de la variable `code_bassin_versant`
 
 Jointure spatiale entre `n_bassin_versant_specifique_000` et `station_sage_r52` :
@@ -400,8 +428,14 @@ Jointure spatiale entre `n_bassin_versant_specifique_000` et `station_sage_r52`
 # Réaliser une jointure spatiale pour récupérer la variable `code_bassin_versant`
 station_sage_r52 <- station_sage_r52 |>
   sf::st_join(n_bassin_versant_specifique_000 |> 
-                dplyr::select(code_bassin_versant = code_bassin_versant_specifique), 
-              join = sf::st_within, left = TRUE)
+                dplyr::select(code_bassin_versant = code_bassin_versant_specifique, 
+                              code_eu_masse_eau), 
+              join = sf::st_within, left = TRUE) |>
+  dplyr::mutate(code_bassin_versant = dplyr::if_else(
+    stringr::str_starts(code_bassin_versant, "H0000000"), 
+    code_eu_masse_eau, 
+    code_bassin_versant
+  ))
 ```
 
 
@@ -565,17 +599,14 @@ r_station_mesure_p_r52 <- station_sage_r52 |>
 ```{r create_table_name}
 #| eval: no
 
-# Définir l'année en cours
-current_year <- format(Sys.Date(), "%Y")
-
 # Construire dynamiquement le nom de la table
-table_name <- paste0("r_station_mesure_p_", current_year, "_r52")
+table_name <- paste0("r_station_mesure_p_", year, "_r52")
 ```
 
 
 ## Archivage de la version précédente de la table
 
-La version précédente de l'export est stockée dans un schéma d'archive :
+La version précédente de l'export est stock\u00e9e dans un sch\u00e9ma d'archive :
 ```{r archive_old_table}
 #| eval: no
 
@@ -605,7 +636,7 @@ datalibaba::poster_data(data = r_station_mesure_p_r52,
 ```
 
 
-## Mise à jour de la géométrie de la table `r_station_mesure_p_current_year_r52`
+## Mise à jour de la géométrie de la table `r_station_mesure_p_year_r52`
 ```{r update_geometry_r_station_mesure_p_current_year_r52}
 #| eval: no
 
@@ -639,9 +670,9 @@ DBI::dbDisconnect(connexion)
 
 date_today  <- format(Sys.time(), format = "%d/%m/%Y")
 datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesure millésime ", 
-                       current_year, 
-                       " (source : ARS + Hub'eau + SANDRE, ", 
+  comment = glue::glue("Stations de mesure mill\u00e9sime ", 
+                       year, 
+                       " (source : ARS + Hub\'eau + SANDRE, ", 
                        date_today, ")"),
   table = table_name,
   schema = "stations",
@@ -657,20 +688,20 @@ datalibaba::commenter_table(
 
 # Création d'une liste avec les noms des variables et leurs descriptions
 variables <- c(
-  "id_station", "Identifiant unique de la station de mesur",
+  "id_station", "Identifiant unique de la station de mesure",
   "code_bss", "Code BSS de la station de mesure",
   "code_sise_eaux", "Code SISE-EAUX de la station de mesure",  
-  "code_naiades", "Code Naïades de la station de mesure",
+  "code_naiades", "Code Na\u00efades de la station de mesure",
   "libelle_station", "Nom de la station de mesure",
-  "nature_eau", "Nature de l'eau de la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "source", "Source de la donnée",
-  "code_masse_eau", "Code de la masse d'eau de la station de mesure",
+  "nature_eau", "Nature de l\'eau de la station de mesure",
+  "date_creation", "Date de cr\u00e9ation de la station de mesure",
+  "source", "Source de la donn\u00e9e",
+  "code_masse_eau", "Code de la masse d\'eau de la station de mesure",
   "code_bassin_versant", "Code du bassin versant de la station de mesure",
   "code_commune", "Code INSEE  de la commune de la station de mesure",
   "code_sage", "Code du SAGE de la station de mesure",
   "captage_prioritaire", "Captaire prioritaire (T/F)",
-  "the_geom", "Géométrie ponctuelle de la station de mesure"
+  "the_geom", "G\u00e9om\u00e9trie ponctuelle de la station de mesure"
 )
 
 # Création du dataframe avec les variables
@@ -689,6 +720,4 @@ datalibaba::post_dico_attr(dico = comments,
 ```
 
 
-## Mise à jour du skeleton
-
 
diff --git a/vignettes/mise-a-jour-des-stations-eso.Rmd b/vignettes/mise-a-jour-des-stations-eso.Rmd
deleted file mode 100644
index 00a02ddbe14e8d13e0f5196399772a4688c6a1dc..0000000000000000000000000000000000000000
--- a/vignettes/mise-a-jour-des-stations-eso.Rmd
+++ /dev/null
@@ -1,364 +0,0 @@
----
-title: "Mise à jour des stations ESO"
-output: rmarkdown::html_vignette
-vignette: >
-  %\VignetteIndexEntry{mise-a-jour-des-stations-eso}
-  %\VignetteEngine{knitr::rmarkdown}
-  %\VignetteEncoding{UTF-8}
----
-
-```{r, include = FALSE}
-knitr::opts_chunk$set(
-  collapse = TRUE,
-  comment = "#>"
-)
-```
-
-```{r setup}
-library(data.captages)
-```
-
-<!-- WARNING - This vignette is generated by {fusen} from dev/flat_update_station_eso.Rmd: do not edit by hand -->
-
-# Objectif
-
-Actualiser les **stations de mesure eau de souterraine (ESO)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `qualite_nappes_eau_souterraine.hubeau_qualite_nappes_stations` (source : Hub'eau)
-- `captages.n_captage_p_r52` (source : ARS)
-
-
-# Chargement des lot de données source
-
-## Stations de mesure des qualités des nappes d'eau souterraine (ESO)
-
-```{r load_hubeau_qualite_nappes_stations, eval = FALSE}
-data_hubeau_eso <- datalibaba::importer_data(
-  table = "hubeau_qualite_nappes_stations",
-  schema = "qualite_nappes_eau_souterraine",
-  db = "si_eau")
-```
-
-## Captages ARS ESO
-
-Chargement de la table des captages en filtrant sur la nature de l'eau du captage et le début du `code_bss` : 
-
-```{r load_captages_ars_eso, eval = FALSE}
-data_ars_eso <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESO' & startsWith(code_bss, "BSS"))
-```
-
-Suppression des géométries vides :
-
-```{r delete-empty-geom, eval = FALSE}
-data_ars_with_geom = data_ars_eso[!sf::st_is_empty(data_ars_eso),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de Hub'eau :
-
-```{r select_captages_ars_not_hubeau, eval = FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_hubeau <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_hubeau_eso, by = c("code_bss" = "bss_id"))
-
-# Récupérer les géométries par jointure avec stations_eso_ars
-data_ars_not_hubeau <- data_ars_not_hubeau |> 
-  dplyr::left_join(data_ars_eso, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_hubeau <- dplyr::select(data_ars_not_hubeau, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_hubeau) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_hubeau))
-```
-
-## Consolidation des stations Hub'eau
-
-Renommage des variables, ajout du code SISE-Eaux et de la source, sélection des variables :
-
-```{r consolidate_stations_hubeau, eval = FALSE}
-stations_eso_hubeau <- data_hubeau_eso |> 
-  dplyr::rename(code_station = bss_id,
-                libelle_station = nom_commune,
-                date_creation = date_debut_mesure,
-                code_commune = code_insee) |>
-  dplyr::mutate(code_sise_eaux = "",
-                source = "HUBEAU") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_eso_hubeau$date_creation <- as.Date(stations_eso_hubeau$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-
-```{r consolidate_stations_ars, eval = FALSE}
-stations_eso_ars <- data_ars_not_hubeau |>
-  dplyr::rename(code_station = code_bss,
-                code_sise_eaux = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,code_sise_eaux,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge_stations, eval = FALSE}
-station_eso <- dplyr::bind_rows(stations_eso_hubeau, stations_eso_ars)
-```
-
-# Ajout des champs manquants au dataframe station_eso
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-
-```{r load_sage, eval = FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_eso` :
-
-```{r update_code_sage, eval = FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-
-```{r get_duplicates_code_sage, eval = FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_eso, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel, à exécuter si le tibble comporte des lignes) :
-
-```{r delete_station_duplicates_code_sage, eval = FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-
-```{r replace_code_sage_na, eval = FALSE}
-station_eso <- station_eso |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-
-```{r load_bassin-versant, eval = FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_eso` :
-
-```{r update_codes_bassin_versant_masse_eau, eval = FALSE}
-# Réaliser une jointure spatiale
-station_eso <- station_eso |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-## Ajout du `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-
-```{r load_captage_prioritaire, eval = FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-
-```{r update_captage_prioriaire, eval = FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_eso <- station_eso |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_bss)
-```
-
-## Mise à jour du code_sise_eaux à partir des données ARS
-
-Remplacer les valeurs vides dans `code_station` par NA dans `station_eso` :
-
-```{r na_code_sise_eaux, eval = FALSE}
-station_eso <- station_eso |>
-  dplyr::mutate(code_sise_eaux = dplyr::if_else(code_sise_eaux == "", NA_character_, code_sise_eaux))
-```
-
-```{r update_codes_sise_eaux, eval = FALSE}
-# Supprimer l'objet géométrie du dataframe data_ars
-data_ars_eso <- data_ars_eso |>
-  sf::st_drop_geometry()
-
-# Réaliser une jointure attributaire
-station_eso <- station_eso |>
-  dplyr::left_join(data_ars_eso, by = c("code_station" = "code_bss")) |>
-  dplyr::mutate(code_sise_eaux = ifelse(is.na(code_sise_eaux), code_captage, code_sise_eaux)) |>
-  dplyr::select(-code_captage) # Supprime la colonne code_captage
-```
-
-Identification des doublons générés par la jointure de récupération des `code_sise_eaux` :
-
-```{r get_duplicates_code_sise_eaux, eval = FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sise_eaux <- station_eso |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-  doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  sf::st_drop_geometry()
-  station_eso_sans_geom <- station_eso |> sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sise_eaux <- doublons_stations_code_sise_eaux |>
-  dplyr::left_join(station_eso_sans_geom, by = "code_station") |>
-  dplyr::select(code_station, n, code_sise_eaux, libelle_station)
-
-# Visualiser les doublons
-print(doublons_stations_code_sise_eaux)
-```
-
-Suppression des doublons :
-
-```{r delete_duplicates_code_sise_eaux, eval = FALSE}
-station_eso <- station_eso |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-
-```{r select_station_eso_variables, eval = FALSE}
-station_eso <- station_eso |> 
-  dplyr::select(code_station,
-                code_sise_eaux,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-
-```{r archive_old_table, eval = FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_eso", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get_comments_old_table, eval = FALSE}
-station_eso_comments <- datalibaba::get_table_comments(table = "station_eso",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-
-```{r publish_new_table, eval = FALSE}
-datalibaba::poster_data(data = station_eso,
-                        table = "station_eso",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish_new_table_comment, eval = FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de souterraines (source : ARS + Hub'eau, ", date_today, ")"),
-  table = "station_eso",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish_new_fields_comments, eval = FALSE}
-datalibaba::post_dico_attr(dico = station_eso_comments,
-                           table = "station_eso",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
-## Mise à jour du skeleton
-
diff --git a/vignettes/mise-a-jour-des-stations-esu.Rmd b/vignettes/mise-a-jour-des-stations-esu.Rmd
deleted file mode 100644
index e7e82bfc2e49c7c5e8f52b0037644d407e425c6d..0000000000000000000000000000000000000000
--- a/vignettes/mise-a-jour-des-stations-esu.Rmd
+++ /dev/null
@@ -1,402 +0,0 @@
----
-title: "Mise à jour des stations ESU"
-output: rmarkdown::html_vignette
-vignette: >
-  %\VignetteIndexEntry{mise-a-jour-des-stations-esu}
-  %\VignetteEngine{knitr::rmarkdown}
-  %\VignetteEncoding{UTF-8}
----
-
-```{r, include = FALSE}
-knitr::opts_chunk$set(
-  collapse = TRUE,
-  comment = "#>"
-)
-```
-
-```{r setup}
-library(data.captages)
-```
-
-<!-- WARNING - This vignette is generated by {fusen} from dev/flat_update_station_esu.Rmd: do not edit by hand -->
-
-# Objectif
-
-Actualiser les **stations de mesure eau de surface (ESU)** à partir des tables suivantes dans une base de données PostgreSQL :
-
-- `sandre.n_station_mesure_eaux_surface_loire_bretagne` (source : SANDRE)
-- `captages.n_captage_p_r52` (source : ARS)
-
-
-# Chargement des lot de données source
-
-## Stations de mesure de la qualité des eaux superficielles continentales (STQ)
-
-```{r load-hubeau_qualite_rivieres_station_pc, eval = FALSE}
-data_sandre <- datalibaba::importer_data(
-  table = "n_station_mesure_eaux_surface_loire_bretagne",
-  schema = "sandre",
-  db = "si_eau")
-```
-
-## Captages ARS ESU
-
-```{r load_captages_ars_eso, eval = FALSE}
-data_ars_esu <- datalibaba::importer_data(
-  table = "n_captage_p_r52",
-  schema = "captages",
-  db = "si_eau") |>
-  dplyr::filter(nature_eau_captage == 'ESU')
-```
-
-Suppression des géométries vides :
-
-```{r delete-empty-geom, eval = FALSE}
-data_ars_with_geom = data_ars_esu[!sf::st_is_empty(data_ars_esu),,drop=FALSE] 
-```
-
-# Création d'un dataframe unique
-
-## Sélection des captages ARS différents de SANDRE
-
-```{r select-captages-ars-not-hubeau, eval = FALSE}
-# Effectuer l'opération anti_join après avoir supprimé la géométrie
-data_ars_not_sandre <- data_ars_with_geom |> 
-  sf::st_drop_geometry() |> 
-  dplyr::anti_join(data_sandre, by = c("code_captage" = "code_station"))
-
-# Récupérer les géométries par jointure avec stations_esu_ars
-data_ars_not_sandre <- data_ars_not_sandre |> 
-  dplyr::left_join(data_ars_esu, by = "code_captage")
-
-# Désélectionner toutes les variables finissant par .y dans la jointure
-data_ars_not_sandre <- dplyr::select(data_ars_not_sandre, 
-                                     -ends_with(".y"))
-
-# Renommer toutes les variables en supprimant le suffixe .x
-names(data_ars_not_sandre) <- gsub("\\.x$", "", 
-                                   names(data_ars_not_sandre))
-```
-
-## Consolidation des stations SANDRE
-
-Sélection des variables et ajout de la source :
-
-```{r consolidate-stations_hubeau, eval = FALSE}
-stations_esu_sandre <- data_sandre |> 
-  dplyr::mutate(source = "SANDRE") |>
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_commune,
-                the_geom)
-
-# Convertir les dates de la variable date_creation
-stations_esu_sandre$date_creation <- as.Date(stations_esu_sandre$date_creation)
-```
-
-## Consolidation des stations ARS
-
-Renommage des variables, ajout de la source, sélection des variables :
-
-```{r consolidate-stations_ars, eval = FALSE}
-stations_esu_ars <- data_ars_not_sandre |>
-  dplyr::rename(code_station = code_captage,
-                libelle_station = nom_captage,
-                date_creation = date_etat_installation,
-                code_commune = code_commune_captage) |>
-  dplyr::mutate(source = "ARS") |>
-  dplyr::select(code_station,libelle_station,date_creation,
-                source,code_commune,the_geom)
-```
-
-## Fusion des deux dataframes
-
-```{r merge-stations, eval = FALSE}
-station_esu <- dplyr::bind_rows(stations_esu_sandre, stations_esu_ars)
-```
-
-# Ajout des champs manquants au dataframe station_esu
-
-## Ajout du `code_sage` par station
-
-Chargement de la table des SAGE en Pays de la Loire :
-
-```{r load-sage, eval = FALSE}
-n_sage_r52 <- datalibaba::importer_data(
-  table = "n_sage_r52",
-  schema = "zonages_de_gestion",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure du `code_sage` dans `station_esu` :
-
-```{r update-code-sage, eval = FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_sage_r52 |> dplyr::select(code_sage = code), join = sf::st_within, left = TRUE)
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des SAGE :
-
-```{r get-station-duplicates-code_sage, eval = FALSE}
-# Compter les occurrences de chaque code_station
-doublons_stations_code_sage <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_stations_code_sage <- doublons_stations_code_sage |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_sage_r52, by = c("code_sage" = "code")) |>
-  dplyr::select(code_station, n, libelle_station, code_sage, nom, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_stations_code_sage)
-```
-
-Suppression des doublons (optionnel) :
-
-```{r delete-station-duplicates-code-sage, eval = FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-Ajout de la valeur `SAGE00000` si la valeur de `code_sage` est NA :
-
-```{r replace-code-sage-na, eval = FALSE}
-station_esu <- station_esu |> 
-  dplyr::mutate(code_sage = tidyr::replace_na(code_sage, "SAGE00000"))
-```
-
-## Ajout des variables liées aux bassins versant
-
-Il s'agit des variables : `code_bassin_versant`, `code_masse_eau` et `code_eu_masse_eau`
-
-Chargement de la table des bassins versants France entière :
-
-```{r load-bassin-versant, eval = FALSE}
-n_bassin_versant_specifique_000 <- datalibaba::importer_data(
-  table = "n_bassin_versant_specifique_000",
-  schema = "sandre",
-  db = "si_eau"
-)
-```
-
-Requête spatiale pour la jointure des champs `code_bassin_versant`, `code_masse_eau`, `code_eu_masse_eau` dans `station_esu` :
-
-```{r update-codes-bassin-versant-masse-eau, eval = FALSE}
-# Réaliser une jointure spatiale
-station_esu <- station_esu |>
-  sf::st_join(n_bassin_versant_specifique_000 |> 
-            dplyr::select(code_bassin_versant = code_bassin_versant_specifique,
-                   code_masse_eau,
-                   code_eu_masse_eau), 
-          join = sf::st_within, left = TRUE)
-```
-
-Fusion des variables pour conserver un maximum de valeurs :
-
-```{r merge-variables, eval = FALSE}
-# Fusionner les variables code_masse_eau.x et code_masse_eau.y, code_eu_masse_eau.x et code_eu_masse_eau.y
-station_esu <- station_esu |>
-  dplyr::mutate(code_masse_eau = dplyr::coalesce(code_masse_eau.x, code_masse_eau.y)) |>
-  dplyr::select(-code_masse_eau.x, -code_masse_eau.y)  # Supprimer les colonnes inutiles
-```
-
-Identification des doublons générés par la superposition de périmètres dans la table des bassins versants :
-
-```{r get_duplicates_code_bassin_versant, eval = FALSE}
-# Compter les occurrences de chaque code_station
-doublons_code_bassin_versant <- station_esu |>
-  dplyr::group_by(code_station) |>
-  dplyr::tally(name = "n") |>
-  dplyr::filter(n > 1)
-
-# Supprimer l'objet géométrique pour pouvoir exécuter la jointure attributaire
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  sf::st_drop_geometry()
-
-# Joindre les informations additionnelles
-doublons_code_bassin_versant <- doublons_code_bassin_versant |>
-  dplyr::left_join(station_esu, by = "code_station") |>
-  dplyr::left_join(n_bassin_versant_specifique_000, by = c("code_bassin_versant" = "code_bassin_versant_specifique")) |>
-  dplyr::select(code_station, n, libelle_station, code_bassin_versant, nom_bassin_versant_specifique, the_geom.x)
-
-# Visualiser les doublons
-print(doublons_code_bassin_versant)
-```
-
-Suppression des doublons (optionnel) :
-
-```{r delete_duplicates_code_bassin_versant, eval = FALSE}
-station_esu <- station_esu |>
-  dplyr::group_by(code_station, the_geom) |> dplyr::slice(1) |> dplyr::ungroup()
-```
-
-## Ajout du champs `captage_prioriaire`
-
-Chargement de la table des captages prioritaires de la région :
-
-```{r load-captage-prioritaire, eval = FALSE}
-r_captage_prioritaire_r52 <- datalibaba::importer_data(
-  table = "r_captage_prioritaire_r52",
-  schema = "captages",
-  db = "si_eau"
-)
-```
-
-Ajout de la variable captage_prioritaire
-
-```{r update-captage-prioriaire, eval = FALSE}
-# Alimenter la variable en vérifiant la présence du `code_station` dans `r_captage_prioritaire_r52`
-station_esu <- station_esu |>
-  dplyr::mutate(captage_prioritaire = 
-                  code_station %in% r_captage_prioritaire_r52$code_sise_eaux)
-```
-
-# Intersection des stations ESU avec les SAGE de la région et les limites régionales
-
-Chargement de la table des limites de la région :
-
-```{r load-region, eval = FALSE}
-n_region_exp_r52 <- datalibaba::importer_data(
-  table = "n_region_exp_r52",
-  schema = "adminexpress",
-  db = "referentiels"
-)
-```
-
-Vérification des objets sf :
-
-```{r st_as_sf, eval = FALSE}
-# Vérifier que les deux dataframes sont en format 'sf'
-station_esu <- sf::st_as_sf(station_esu)
-n_sage_r52 <- sf::st_as_sf(n_sage_r52)
-n_region_exp_r52 <- sf::st_as_sf(n_region_exp_r52)
-
-```
-
-Création d'un polygone fusionnant SAGE et région :
-
-```{r limit_sage, eval = FALSE}
-# Identification des noms de colonnes communs aux deux objets
-colonnes_communes <- intersect(names(n_region_exp_r52), names(n_sage_r52))
-
-# Sélection des colonnes communes dans chaque objet
-n_region_exp_r52 <- n_region_exp_r52[, colonnes_communes]
-n_sage_r52 <- n_sage_r52[, colonnes_communes]
-
-# Combinaison des deux objets dans un seul objet sf
-# (création d'une seule collection de géométries pour pouvoir les fusionner)
-objets_combines <- rbind(n_region_exp_r52, n_sage_r52)
-
-# Agrégation de tous les polygones en un seul avec st_union()
-# (si les polygones se chevauchent ou sont adjacents, ils seront fusionnés)
-n_sage_r52_union <- sf::st_union(objets_combines)
-
-# Correction de la géométrie, pour s'assurer qu'elle est valide
-n_sage_r52_valid <- sf::st_make_valid(n_sage_r52_union)
-
-# Suppresion des trous internes en récupérant uniquement la limite extérieure
-n_sage_r52_limit <- nngeo::st_remove_holes(n_sage_r52_valid)
-
-```
-
-Sélection des stations ESU présentes dans les SAGE et la région :
-
-```{r st_intersects_stations_sage, eval = FALSE}
-# Filtrer les stations ESU présentes dans les SAGE de la région
-station_esu <- sf::st_filter(station_esu, n_sage_r52_limit)
-
-```
-
-# Publication dans une table dans la base de données
-
-## Sélection des variables à conserver dans le dataframe final
-
-```{r select-station-esu-variables, eval = FALSE}
-station_esu <- station_esu |> 
-  dplyr::select(code_station,
-                libelle_station,
-                date_creation,
-                source,
-                code_masse_eau,
-                code_eu_masse_eau,
-                code_commune,
-                code_sage,
-                code_bassin_versant,
-                captage_prioritaire,
-                the_geom)
-```
-
-## Archivage de la version précédente de la table
-
-La version précédente de l'export est stockée dans un schéma d'archive :
-
-```{r archive-old-table, eval = FALSE}
-connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
-                        table = "station_esu", 
-                        schema = "stations",
-                        new_schema = "zz_archives",
-                        role = "admin")
-```
-
-## Récupération des commentaires de la version précédente de la table 
-
-```{r get-comments-old-table, eval = FALSE}
-station_esu_comments <- datalibaba::get_table_comments(table = "station_esu",
-                                                       schema = "stations",
-                                                       db = "si_eau") |> 
-  dplyr::filter(!is.na(nom_col)) |> 
-  dplyr::select(nom_col, commentaire) |>
-  dplyr::arrange(nom_col)
-```
-
-## Publication de la table actualisée
-
-La table actualisée écrase la précédente version :
-
-```{r publish-new-table, eval = FALSE}
-datalibaba::poster_data(data = station_esu,
-                        table = "station_esu",
-                        schema = "stations",
-                        db = "si_eau",
-                        pk = "code_station",
-                        overwrite = TRUE,
-                        user = "admin")
-```
-
-## Publication de la description de la table actualisée
-
-```{r publish-new-table-comment, eval = FALSE}
-date_today  <- format(Sys.time(), format = "%d/%m/%Y")
-datalibaba::commenter_table(
-  comment = glue::glue("Table des stations de mesure des eaux de surface (ESU) (source : ARS + SANDRE, ", date_today, ")"),
-  table = "station_esu",
-  schema = "stations",
-  db = "si_eau",
-  user = "admin"
-)
-```
-
-## Publication des commentaires des champs de la table actualisée
-
-```{r publish-new-fields-comments, eval = FALSE}
-datalibaba::post_dico_attr(dico = station_esu_comments,
-                           table = "station_esu",
-                           schema = "stations",
-                           db = "si_eau",
-                           user = "admin"
-                           )
-```
-
diff --git a/vignettes/mise-a-jour-des-stations-hub-eau-cours-d-eau-et-plan-d-eau.Rmd b/vignettes/mise-a-jour-des-stations-hub-eau-cours-d-eau-et-plan-d-eau.Rmd
index bc8d80768e40ba7fd4459804319a26e2b919addc..17af4d49402d45256089f0293a0c681290287de2 100644
--- a/vignettes/mise-a-jour-des-stations-hub-eau-cours-d-eau-et-plan-d-eau.Rmd
+++ b/vignettes/mise-a-jour-des-stations-hub-eau-cours-d-eau-et-plan-d-eau.Rmd
@@ -2,7 +2,7 @@
 title: "Mise à jour des stations Hub'eau cours d'eau et plan d'eau"
 output: rmarkdown::html_vignette
 vignette: >
-  %\VignetteIndexEntry{mise-a-jour-des-stations-hub-eau-cours-d-eau-et-plan-d-eau}
+  %\VignetteIndexEntry{Mise à jour des stations Hub'eau cours d'eau et plan d'eau}
   %\VignetteEngine{knitr::rmarkdown}
   %\VignetteEncoding{UTF-8}
 ---
@@ -14,73 +14,84 @@ knitr::opts_chunk$set(
 )
 ```
 
-```{r setup}
+```{r}
 library(data.captages)
 ```
 
 <!-- WARNING - This vignette is generated by {fusen} from dev/flat_update_hubeau_qualite_rivieres_station_pc.Rmd: do not edit by hand -->
 
-# Objectif
 
-Actualiser les **stations de mesures physicochimique sur des cours d'eau et plan d'eau** à partir de l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans une base de données PostgreSQL.
 
 
+# Objectif
+
+Actualiser les **stations de mesures physicochimique sur des cours d'eau et plan d'eau** à partir de l'[API Hub'eau "Qualit\u00e9 des cours d\'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans une base de données PostgreSQL.
+
 # Création du dataframe
 
 ## Récupération des données
 
 Téléchargement du lot de données avec l'identifiant de la région :
+```{r get-qualite-nappes-stations}
+#| eval: no
 
-```{r get-qualite-nappes-stations, eval = FALSE}
 hubeau_qualite_rivieres_station_pc <- hubeau::get_qualite_rivieres_station_pc(code_region="52")
 ```
 
+
 ## Création d'un champs de géométrie
+```{r create-the-geom}
+#| eval: no
 
-```{r create-the-geom, eval = FALSE}
 # Création de la géométrie
 hubeau_sf <- create_hubeau_geom(hubeau_qualite_rivieres_station_pc)
 ```
 
-## Remplacement des caractères accentués impactés par un problème d'encodage
 
+## Remplacement des caractères accentués impactés par un problème d'encodage
 Dans la variable `libelle_station` :
+```{r replace-encoding-problems}
+#| eval: no
 
-```{r replace-encoding-problems, eval = FALSE}
 # Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<e0>", "À", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<e0>", "\u00c0", hubeau_sf$libelle_station)
 # Remplacer <e0> par À dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c0>", "À", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c0>", "\u00c0", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c8>", "È", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c8>", "\u00c8", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c9>", "É", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c9>", "\u00c9", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<c2>", "Â", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<c2>", "\u00c2", hubeau_sf$libelle_station)
 # Remplacer <c8> par È dans la colonne libelle_station
-hubeau_sf$libelle_station <- gsub("<d4>", "Ô", hubeau_sf$libelle_station)
+hubeau_sf$libelle_station <- gsub("<d4>", "\u00d4", hubeau_sf$libelle_station)
 ```
 
+
 # Publication de la table en base
 
 ## Archivage de la version précédente de la table
 
 La version précédente de la table est stockée dans un schéma d'archive :
+```{r archive-old-table}
+#| eval: no
 
-```{r archive-old-table, eval = FALSE}
 connexion <- datalibaba::connect_to_db(db = "si_eau")
-collectr::archive_table(database = "si_eau",
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
                         table = "hubeau_qualite_rivieres_station_pc", 
                         schema = "qualite_cours_d_eau",
                         new_schema = "zz_archives",
                         role = "admin")
 ```
 
+
 ## Publication de la table actualisée
 
 La table actualisée écrase la précédente version :
+```{r publish-new-table}
+#| eval: no
 
-```{r publish-new-table, eval = FALSE}
 datalibaba::poster_data(data = hubeau_sf,
                         table = "hubeau_qualite_rivieres_station_pc",
                         schema = "qualite_cours_d_eau",
@@ -90,12 +101,14 @@ datalibaba::poster_data(data = hubeau_sf,
                         user = "admin")
 ```
 
+
 ## Publication de la description de la table actualisée
+```{r publish-new-table-comment}
+#| eval: no
 
-```{r publish-new-table-comment, eval = FALSE}
 date_today  <- format(Sys.time(), format = "%d/%m/%Y")
 datalibaba::commenter_table(
-  comment = glue::glue("Stations de mesures physicochimique sur des cours d'eau et plan d'eau (eau de surface : ESU) (source : Hub'eau)"),
+  comment = glue::glue("Stations de mesures physicochimique sur des cours d\'eau et plan d\'eau (eau de surface : ESU) (source : Hub\'eau)"),
   table = "hubeau_qualite_rivieres_station_pc",
   schema = "qualite_cours_d_eau",
   db = "si_eau",
@@ -103,58 +116,62 @@ datalibaba::commenter_table(
 )
 ```
 
+
+## Ajout de la contrainte géomatique concernant le type de géométries
+
 ## Ajout des commentaires
+```{r add-comments}
+#| eval: no
 
-```{r add-comments, eval = FALSE}
 # Création d'une liste avec les noms des variables et leurs descriptions
 variables <- c(
-  "code_station", "Code Sandre de la station de mesure. dans le référentiel national Sandre Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/stq.json",
-  "libelle_station", "Libellé Sandre de la station de mesure",
+  "code_station", "Code Sandre de la station de mesure. dans le r\u00e9f\u00e9rentiel national Sandre Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/stq.json",
+  "libelle_station", "Libell\u00e9 Sandre de la station de mesure",
   "uri_station", "URI station Sandre",
-  "durete", "Dureté moyenne de l'eau",
-  "coordonnee_x", "Coordonnée X du point caractéristique de la station de mesure",
-  "coordonnee_y", "Coordonnée Y du point caractéristique de la station de mesure",
-  "code_projection", "Code Sandre du système de projection des coordonnées de la station de mesure",
-  "libelle_projection", "Libellé Sandre du système de projection des coordonnées de la station de mesure",
-  "longitude", "Longitude la station de mesure dans le système de coordonnées WGS84",
-  "latitude", "Latitude de la station de mesure dans le système de coordonnées WGS84",
+  "durete", "Duret\u00e9 moyenne de l\'eau",
+  "coordonnee_x", "Coordonn\u00e9e X du point caract\u00e9ristique de la station de mesure",
+  "coordonnee_y", "Coordonn\u00e9e Y du point caract\u00e9ristique de la station de mesure",
+  "code_projection", "Code Sandre du syst\u00e8me de projection des coordonn\u00e9es de la station de mesure",
+  "libelle_projection", "Libell\u00e9 Sandre du syst\u00e8me de projection des coordonn\u00e9es de la station de mesure",
+  "longitude", "Longitude la station de mesure dans le syst\u00e8me de coordonn\u00e9es WGS84",
+  "latitude", "Latitude de la station de mesure dans le syst\u00e8me de coordonn\u00e9es WGS84",
   "code_commune", "Code INSEE de la commune de rattachement de la station de mesure",
-  "libelle_commune", "Libellé de la commune de rattachement de la station de mesure",
-  "code_departement", "Code INSEE du département de rattachement de la station de mesure",
-  "libelle_departement", "Libellé du département de rattachement de la station de mesure",
-  "code_region", "Code INSEE de la région de rattachement de la station de mesure",
-  "libelle_region", "Libellé INSEE de la région de rattachement de la station de mesure",
-  "code_cours_eau", "Code Sandre de l'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/cea.json (cours d'eau) et https://api.sandre.eaufrance.fr/referentiels/v1/pla.json (plan d'eau)",
-  "nom_cours_eau", "Libellé long Sandre de l'entité hydrographique associée à la station de mesure",
-  "uri_cours_eau", "URI du cours d'eau",
-  "nom_masse_deau", "Libellé de la masse d'eau de rattachement de la station de mesure",
-  "code_masse_deau", "Code national de la masse d'eau associé à la station de mesure",
-  "code_eu_masse_deau", "Code européen de la masse d'eau associé à la station de mesure",
-  "uri_masse_deau", "URI national de la masse d'eau de la station de mesure",
-  "code_eu_sous_bassin", "Code européen du sous-bassin DCE administratif",
-  "nom_sous_bassin", "Libellé du sous bassin DCE administratif",
+  "libelle_commune", "Libell\u00e9 de la commune de rattachement de la station de mesure",
+  "code_departement", "Code INSEE du d\u00e9partement de rattachement de la station de mesure",
+  "libelle_departement", "Libell\u00e9 du d\u00e9partement de rattachement de la station de mesure",
+  "code_region", "Code INSEE de la r\u00e9gion de rattachement de la station de mesure",
+  "libelle_region", "Libell\u00e9 INSEE de la r\u00e9gion de rattachement de la station de mesure",
+  "code_cours_eau", "Code Sandre de l\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/cea.json (cours d\'eau) et https://api.sandre.eaufrance.fr/referentiels/v1/pla.json (plan d\'eau)",
+  "nom_cours_eau", "Libell\u00e9 long Sandre de l\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure",
+  "uri_cours_eau", "URI du cours d\'eau",
+  "nom_masse_deau", "Libell\u00e9 de la masse d\'eau de rattachement de la station de mesure",
+  "code_masse_deau", "Code national de la masse d\'eau associ\u00e9 \u00e0 la station de mesure",
+  "code_eu_masse_deau", "Code europ\u00e9en de la masse d\'eau associ\u00e9 \u00e0 la station de mesure",
+  "uri_masse_deau", "URI national de la masse d\'eau de la station de mesure",
+  "code_eu_sous_bassin", "Code europ\u00e9en du sous-bassin DCE administratif",
+  "nom_sous_bassin", "Libell\u00e9 du sous bassin DCE administratif",
   "uri_sous_bassin", "URI du sous-bassin DCE",
   "code_bassin", "Code national du bassin DCE",
-  "code_eu_bassin", "Code européen du bassin DCE",
-  "nom_bassin", "Libellé du bassin DCE",
+  "code_eu_bassin", "Code europ\u00e9en du bassin DCE",
+  "nom_bassin", "Libell\u00e9 du bassin DCE",
   "uri_bassin", "URI du bassin DCE",
-  "type_entite_hydro", "Code Sandre de la nature d'entité hydrographique associée à la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/796.json",
+  "type_entite_hydro", "Code Sandre de la nature d\'entit\u00e9 hydrographique associ\u00e9e \u00e0 la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/796.json",
   "commentaire", "Commentaire sur la station de mesure",
-  "date_creation", "Date de création de la station de mesure",
-  "date_arret", "Date d'arrêt d'activité de la station de mesure",
-  "date_maj_information", "Date de mise à jour des informations sur la station de mesure",
-  "finalite", "Code Sandre de la finalité de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/645.json",
-  "localisation_precise", "Localisation précise de la station de mesure",
+  "date_creation", "Date de cr\u00e9ation de la station de mesure",
+  "date_arret", "Date d\'arr\u00eat d\'activit\u00e9 de la station de mesure",
+  "date_maj_information", "Date de mise \u00e0 jour des informations sur la station de mesure",
+  "finalite", "Code Sandre de la finalit\u00e9 de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/645.json",
+  "localisation_precise", "Localisation pr\u00e9cise de la station de mesure",
   "nature", "Code Sandre de la nature de la station de mesure. Liste sur https://api.sandre.eaufrance.fr/referentiels/v1/nsa/62.json",
-  "altitude_point_caracteristique", "Altitude du point caractéristique de la station de mesure",
-  "point_kilometrique", "Pk du point caractéristique sur le tronçon de l'entité hydrographique principale associée à la station de mesure",
-  "premier_mois_annee_etiage", "Premier mois de l'année d'étiage de la station de mesure",
-  "superficie_bassin_versant_reel", "Superficie réelle du bassin versant réel",
+  "altitude_point_caracteristique", "Altitude du point caract\u00e9ristique de la station de mesure",
+  "point_kilometrique", "Pk du point caract\u00e9ristique sur le tron\u00e7on de l\'entit\u00e9 hydrographique principale associ\u00e9e \u00e0 la station de mesure",
+  "premier_mois_annee_etiage", "Premier mois de l\'ann\u00e9e d\'\u00e9tiage de la station de mesure",
+  "superficie_bassin_versant_reel", "Superficie r\u00e9elle du bassin versant r\u00e9el",
   "superficie_bassin_versant_topo", "Superficie topographique du bassin versant topographique",
-  "geometry_type", "Type de géométrie",
-  "geometry_crs_type", "Type de valeur du système de référence spatial",
-  "geometry_crs_properties_name", "Système de référence spatial",
-  "the_geom", "Géométrie de la station de mesure"
+  "geometry_type", "Type de g\u00e9om\u00e9trie",
+  "geometry_crs_type", "Type de valeur du syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "geometry_crs_properties_name", "Syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "the_geom", "G\u00e9om\u00e9trie de la station de mesure"
 )
 
 # Créer le dataframe avec les variables
@@ -174,3 +191,5 @@ datalibaba::post_dico_attr(
 )
 ```
 
+
+
diff --git a/vignettes/mise-a-jour-des-stations-hubeau-nappes-d-eau-souterraine.Rmd b/vignettes/mise-a-jour-des-stations-hubeau-nappes-d-eau-souterraine.Rmd
new file mode 100644
index 0000000000000000000000000000000000000000..120697a04d2dfe2fa2a2a9206a91bd7f9f9e46f1
--- /dev/null
+++ b/vignettes/mise-a-jour-des-stations-hubeau-nappes-d-eau-souterraine.Rmd
@@ -0,0 +1,249 @@
+---
+title: "Mise à jour des stations Hubeau nappes d'eau souterraine"
+output: rmarkdown::html_vignette
+vignette: >
+  %\VignetteIndexEntry{Mise à jour des stations Hubeau nappes d'eau souterraine}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
+---
+
+```{r, include = FALSE}
+knitr::opts_chunk$set(
+  collapse = TRUE,
+  comment = "#>"
+)
+```
+
+```{r}
+library(data.captages)
+```
+
+<!-- WARNING - This vignette is generated by {fusen} from dev/flat_update_hubeau_qualite_nappe_station.Rmd: do not edit by hand -->
+
+
+
+
+# Objectif
+
+Actualiser les **stations de mesure des qualités des nappes d'eau souterraine (ESO)** \u00e0 partir de l'[API Hub'eau \"Qualit\u00e9 des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans une base de données PostgreSQL.
+
+# Création du dataframe
+
+## Collecte des données
+
+Téléchargement des données du bassin Loire-Bretagne :
+```{r get_hubeau_qualite_nappes_stations_lb}
+#| eval: no
+
+hubeau_qualite_nappes_stations_lb <- hubeau::get_qualite_nappes_stations(
+  circonscription_administrative_bassin="Loire-Bretagne")
+```
+
+
+Téléchargement des données du bassin Seine-Normandie en Mayenne :
+```{r get_hubeau_qualite_nappes_stations_53}
+#| eval: no
+
+hubeau_qualite_nappes_stations_53 <- hubeau::get_qualite_nappes_stations(
+  circonscription_administrative_bassin="Seine-Normandie",num_departement="53")
+```
+
+
+Fusion des deux dataframes :
+```{r merge_hubeau_qualite_nappes_stations}
+#| eval: no
+
+hubeau_qualite_nappes_stations <- dplyr::bind_rows(
+  hubeau_qualite_nappes_stations_lb, hubeau_qualite_nappes_stations_53)
+```
+
+
+## Création d'un champs de géométrie
+```{r create_the_geom}
+#| eval: no
+
+# Création de la géométrie
+hubeau_sf <- create_hubeau_geom(hubeau_qualite_nappes_stations)
+```
+
+
+# Publication de la table en base
+
+## Archivage de la version précédente de la table
+
+La version précédente de la table est stockée dans un schéma d'archive :
+```{r archive_old_table}
+#| eval: no
+
+# connexion <- datalibaba::connect_to_db(db = "si_eau")
+collectr::archive_table(host = Sys.getenv("server"),
+                        database = "si_eau",
+                        table = "hubeau_qualite_nappes_stations", 
+                        schema = "qualite_nappes_eau_souterraine",
+                        new_schema = "zz_archives",
+                        role = "admin")
+```
+
+
+## Publication de la table actualisée
+
+La table actualisée écrase la précédente version :
+```{r publish_new_table}
+#| eval: no
+
+datalibaba::poster_data(data = hubeau_sf,
+                        table = "hubeau_qualite_nappes_stations",
+                        schema = "qualite_nappes_eau_souterraine",
+                        db = "si_eau",
+                        pk = "bss_id",
+                        overwrite = TRUE,
+                        user = "admin")
+```
+
+
+## Ajout de la contrainte géomatique concernant le type de géométries
+
+## Publication de la description de la table actualisée
+```{r publish_new_table_comment}
+#| eval: no
+
+date_today  <- format(Sys.time(), format = "%d/%m/%Y")
+datalibaba::commenter_table(
+  comment = glue::glue("Stations de mesure des qualit\u00e9s des nappes d\'eau souterraine (ESO) - Bassin Loire-Bretagne (source : Hub\'eau)"),
+  table = "hubeau_qualite_nappes_stations",
+  schema = "qualite_nappes_eau_souterraine",
+  db = "si_eau",
+  user = "admin"
+)
+```
+
+
+## Ajout des commentaires
+```{r add_comments}
+#| eval: no
+
+# Création d'une liste avec les noms des variables et leurs descriptions
+variables <- c(
+  "bss_id", "Nouveau code national de la station, cf plus d\'info ici http://infoterre.brgm.fr/nouveau-code-bss",
+  "code_bss", "Ancien code de la station (code BSS)",
+  "urn_bss", "URN de la station",
+  "date_debut_mesure", "Date de d\u00e9but des mesures qualit\u00e9 sur cette station",
+  "date_fin_mesure", "Derni\u00e8re date de mesure qualit\u00e9 connue pour sur cette station",
+  "precision_coordonnees", "Pr\u00e9cision des coordonn\u00e9es sur cette station",
+  "longitude", "Longitude la station (WGS84)",
+  "latitude", "Latitude la station (WGS84)",
+  "altitude", "Altitude NGF de la station",
+  "code_insee", "Code insee de la commune o\u00f9 se trouve la station",
+  "nom_commune", "Nom de la commune o\u00f9 se trouve la station",
+  "num_departement", "Code du d\u00e9partement o\u00f9 se trouve la station",
+  "nom_departement", "Nom du d\u00e9partement o\u00f9 se trouve la station",
+  "nom_region", "Nom nouvelle r\u00e9gion o\u00f9 se trouve la station",
+  "circonscriptions_administrative_bassin", "Circonscription administrative de bassin concern\u00e9e",
+  "bassin_dce", "Bassin DCE",
+  "urn_bassin_dce", "URN du bassin DCE",
+  "code_nature_pe", "Code de la nature du point d\'eau (forage, puits, source)",
+  "nom_nature_pe", "Nom de la nature du point d\'eau (forage, puits, source)",
+  "uri_nature_pe", "URI de la nature du point d\'eau (forage, puits, source)",
+  "libelle_pe", "Libell\u00e9 du point d\'eau",
+  "code_caracteristique_aquifere", "Code des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "nom_caracteristique_aquifere", "Nom des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "uri_caracteristique_aquifere", "URI des caract\u00e9ristiques de l\'aquif\u00e8re au droit du point d\'eau",
+  "code_etat_pe", "Code de l\'\u00e9tat du point d\'eau",
+  "nom_etat_pe", "Nom de l\'\u00e9tat du point d\'eau",
+  "uri_etat_pe", "URI de l\'\u00e9tat du point d\'eau",
+  "code_mode_gisement", "Code du mode de gisement du point d\'eau",
+  "nom_mode_gisement", "Nom du mode de gisement du point d\'eau",
+  "uri_mode_gisement", "URI du mode de gisement du point d\'eau",
+  "profondeur_investigation", "Profondeur d\'investigation (m)",
+  "commentaire_pe", "Commentaire sur le point d\'eau",
+  "codes_entite_hg_bdlisa1", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "codes_entite_hg_bdlisa2", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "codes_entite_hg_bdlisa3", "Entit\u00e9 hydrog\u00e9ologique dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa1", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa2", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "noms_entite_hg_bdlisa3", "Noms des entit\u00e9s hydrog\u00e9ologiques li\u00e9es au point d\'eau dans le r\u00e9f\u00e9rentiel bdlisa",
+  "urns_bdlisa1", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "urns_bdlisa2", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "urns_bdlisa3", "URN des entit\u00e9s hydrog\u00e9ologiques (BDLISA) actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes BDLISA, url  vers les fiches PDF BDLISA",
+  "codes_masse_eau_rap1", "Codes Masses d\'eau de type Rapportage",
+  "codes_masse_eau_rap2", "Codes Masses d\'eau de type Rapportage",
+  "noms_masse_eau_rap1", "Noms des masses d\'eau de type \'rapportage\' li\u00e9es au point d\'eau",
+  "noms_masse_eau_rap2", "Noms des masses d\'eau de type \'rapportage\' li\u00e9es au point d\'eau",
+  "urns_masse_eau_rap1", "URN des masse d\'eau RAP actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "urns_masse_eau_rap2", "URN des masse d\'eau RAP actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "codes_masse_eau_edl1", "Codes Masses d\'eau de type Etat des lieux",
+  "codes_masse_eau_edl2", "Codes Masses d\'eau de type Etat des lieux",
+  "noms_masse_eau_edl1", "Noms des masses d\'eau de type \'\u00e9tat des lieux\' li\u00e9es au point d\'eau",
+  "noms_masse_eau_edl2", "Noms des masses d\'eau de type \'\u00e9tat des lieux\' li\u00e9es au point d\'eau",
+  "urns_masse_eau_edl1", "URN des masse d\'eau EDL actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "urns_masse_eau_edl2", "URN des masse d\'eau EDL actuellement associ\u00e9s \u00e0 la station construit \u00e0 partir des codes masse d\'eau, url vers le SANDRE",
+  "codes_reseau1", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau2", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau3", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau4", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau5", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau6", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau7", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau8", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau9", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau10", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau11", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau12", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau13", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau14", "R\u00e9seaux de mesure concern\u00e9s",
+  "codes_reseau15", "R\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau1", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau2", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau3", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau4", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau5", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau6", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau7", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau8", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau9", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau10", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau11", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau12", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau13", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau14", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "noms_reseau15", "Noms des r\u00e9seaux de mesure concern\u00e9s",
+  "uris_reseau1", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau2", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau3", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau4", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau5", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau6", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau7", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau8", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau9", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau10", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau11", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau12", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau13", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau14", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "uris_reseau15", "URI des r\u00e9seaux associ\u00e9s \u00e0 la station construit \u00e0 partir des codes r\u00e9seau, url vers le SANDRE",
+  "geometry_type", "Type de g\u00e9om\u00e9trie",
+  "geometry_crs_type", "Type de valeur du syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "geometry_crs_properties_name", "Syst\u00e8me de r\u00e9f\u00e9rence spatial",
+  "the_geom", "G\u00e9om\u00e9trie de la station de mesure"
+)
+
+# Créer le dataframe avec les variables
+comments <- data.frame(
+  nom_variable = variables[seq(1, length(variables), by = 2)],
+  libelle_variable = variables[seq(2, length(variables), by = 2)],
+  stringsAsFactors = FALSE
+)
+
+# Publier le dictionnaire de données
+datalibaba::post_dico_attr(
+  dico = comments,
+  table = "hubeau_qualite_nappes_stations",
+  schema = "qualite_nappes_eau_souterraine",
+  db = "si_eau",
+  user = "admin"
+)
+```
+
+
+