library(ondetools)
library(tidyverse)

Les communes littorales

url_com_lit <- "https://www.data.gouv.fr/fr/datasets/r/ae962af6-1e4b-4359-80f7-232cfedee57a"
fichier_zip <- "../raw_data/com_lit.zip"

download.file(url = url_com_lit,
              destfile = fichier_zip,
              mode = "wb")

unzip(zipfile = fichier_zip, exdir = "raw_data")

com_lit <- sf::read_sf("raw_data/communes_littorales.shp")

Les périmètres de ces communes sont téléchargées depuis https://www.data.gouv.fr/fr/datasets/r/ae962af6-1e4b-4359-80f7-232cfedee57a.

Les stations Onde

url_onde <- "https://onde.eaufrance.fr/content/t%C3%A9l%C3%A9charger-les-donn%C3%A9es-des-campagnes-par-ann%C3%A9e"
telecharger_fichiers_onde_annuels(url = url_onde, raw_data_dir = '../raw_data')

onde <- assembler_fichiers_onde_annuels_csv(annual_onde_files_dir = "../raw_data/fichiers_onde_annuels_zippes")

onde <- onde %>%
  mutate(Mois = lubridate::ymd(DtRealObservation) %>%
           lubridate::month() %>%
           str_pad(width = 2, side = "left", pad = "0")) %>%
  filter(TRUE)

stations_onde_geo <- creer_couche_geo_stations(onde_df = onde)

Indicateur de sécheresse littorale

Sélection des stations Onde qui sont sur des communes littorales

stations_onde_lit <- sf::st_join(x = stations_onde_geo, y = com_lit) %>%
  filter(!is.na(NOM_REG))

mapview::mapview(stations_onde_lit,
                 zcol = "LbRegion",
                 col.regions = cartography::carto.pal("multi.pal")[c(11:16, 20)])

Par rapport à l’idée initiale de régionaliser, compliqué car peu de stations par région.

Calcul du pourcentage d’assec par station

Ici à titre d’essai, on calcule le pourcentage d’assec de chaque station chaque année sur les campagnes usuelles.

Jeu de données Onde restreint au littoral :

id_stations_onde_lit <- stations_onde_lit %>% 
  pull(CdSiteHydro) %>% 
  unique()

onde_lit <- onde %>% 
  filter(CdSiteHydro %in% id_stations_onde_lit)

Calcul du pourcentage :

indicateur <- onde_lit %>% 
  group_by(CdSiteHydro, Annee) %>% 
    summarise(nb_assec = sum(LbRsObservationNat == "Assec" & TypeCampObservations == "usuelle"),
              nb_obs_usuelles = sum(TypeCampObservations == "usuelle"),
              pc_assec_usuelles = nb_assec / nb_obs_usuelles)

Tendance temporelle

indicateur_temp <- indicateur %>% 
  group_by(Annee) %>% 
    summarise(pc_assec_usuelles = mean(pc_assec_usuelles))

Représentation graphique

titre = paste0("ONDE, communes littorales (", length(id_stations_onde_lit), " stations)")

ggplot(data = indicateur_temp,
       aes(x = Annee, y = pc_assec_usuelles)) +
  geom_line(col = "red") +
  labs(x = "",
       y = "Pourcentage des observations en assec",
       title = titre) +
  scale_y_continuous(limits = c(0, NA),
                     labels = scales::percent_format(accuracy = 1))

Répartition spatiale

indicateur_spatial <- indicateur %>% 
  group_by(CdSiteHydro) %>% 
    summarise(pc_assec_usuelles = mean(pc_assec_usuelles))

Les cercles sont proportionnels au pourcentage des observations en assec pendant les campagnes usuelles.

stations_onde_lit <- stations_onde_lit %>% 
  left_join(y = indicateur_spatial)

mapview::mapview(stations_onde_lit,
                 cex = "pc_assec_usuelles",
                 col.regions = "red")