## Création de fichiers sur la pluviométrie dans le Golfe du Morbihan ## Auteur: Paul Cahu, Golfe en Transition, paul@golfeentransition.bzh ## Dernière version: 05/02/2026 # Package pour lire les données de type parquet mises à dispo sur data.gouv.fr #install.packages("arrow") # install.packages("writexl") library(arrow) library(dplyr) library(tidyr) library(writexl) ## Reading initial data and input path<-"/Users/Helloworld_lab/Documents/2024 - PAUL/GET/eau/" ## Il y a deux fichiers sources de données quotiennes: # 1950-2024: https://object.files.data.gouv.fr/hydra-parquet/hydra-parquet/570b8bec-5e45-4276-8738-bc0aa82f782a.parquet # 2025 : https://object.files.data.gouv.fr/hydra-parquet/hydra-parquet/74d2f82d-8f4f-4737-9c49-89645223d0cc.parquet meteo_56_5024<-read_parquet( paste(path,"570b8bec-5e45-4276-8738-bc0aa82f782a.parquet",sep=""), col_select = NULL, as_data_frame = TRUE, ) meteo_56_25<-read_parquet( paste(path,"74d2f82d-8f4f-4737-9c49-89645223d0cc.parquet",sep=""), col_select = NULL, as_data_frame = TRUE, ) # Selection des colonnes pluviometrie (RR) # Combinaison des deux fichiers pluvio_56<-meteo_56_5024[, (names(meteo_56_5024) %in% c("NOM_USUEL", "AAAAMMJJ","RR"))] pluvio_56_25<-meteo_56_25[,(names(meteo_56_25) %in% c("NOM_USUEL", "AAAAMMJJ","RR"))] pluvio_56<-rbind(pluvio_56,pluvio_56_25) rm(meteo_56_25,meteo_56_5024) # Les stations de mesure de Vannes ont changé avec le temps vannes<-c("VANNES-SENE","VANNES","VANNES PARGO","VANNES SA","VANNES KERDOGAN") pluie_vannes<-pluvio_56[pluvio_56$NOM_USUEL %in% vannes,] pluie_vannes$ANNEE=substr(pluie_vannes$AAAAMMJJ, 1, 4) pluie_vannes$MOIS=substr(pluie_vannes$AAAAMMJJ, 6, 7) # Affichage des années couvertes par chaque station: disp<-cbind(aggregate(pluie_vannes$ANNEE ~ pluie_vannes$NOM_USUEL, data = pluie_vannes, FUN = min),aggregate(pluie_vannes$ANNEE ~ pluie_vannes$NOM_USUEL, data = pluie_vannes, FUN = max)$`pluie_vannes$ANNEE`) names(disp)<-c("STATION","ANNEE DEBUT","ANNEE FIN") disp # Pour avoir une couverture sur longue période, il faut donc utiliser: # Vannes -> Vannes SA -> VANNES SENE pluie_vannes<-pluie_vannes[pluie_vannes$NOM_USUEL %in% c("VANNES SA","VANNES-SENE","VANNES"),] # Nous devons faire la moyenne lorsqu'il a plusieurs observations à la même date pluie_vannes<-aggregate(pluie_vannes$RR~pluie_vannes$AAAAMMJJ,data=pluie_vannes,FUN=mean,ra.rm=TRUE) names(pluie_vannes)<-c("Date","Cumul_pluie") pluie_vannes$ANNEE=substr(pluie_vannes$Date, 1, 4) pluie_vannes$MOIS=substr(pluie_vannes$Date, 6, 7) # Calcul des jours où les précipitations dépassent: 9,15,20 et 30mm pluie_vannes$mm9 <- ifelse(pluie_vannes$Cumul_pluie >9, 1, 0) pluie_vannes$mm15 <- ifelse(pluie_vannes$Cumul_pluie >15, 1, 0) pluie_vannes$mm20 <- ifelse(pluie_vannes$Cumul_pluie >20, 1, 0) pluie_vannes$mm30 <- ifelse(pluie_vannes$Cumul_pluie >30, 1, 0) ## Comptage du nombre de jours dans l'année où les précipitations dépassent les seuils counts9<- table(pluie_vannes$ANNEE[pluie_vannes$mm9 == 1]) barplot(counts9,main ="Nombre de jours avec plus de 9mm de pluie par année",xlab="Année",ylab="nombre de jours",col="steelblue") counts15<- table(pluie_vannes$ANNEE[pluie_vannes$mm15 == 1]) barplot(counts15,main ="Nombre de jours avec plus de 15mm de pluie par année",xlab="Année",ylab="nombre de jours",col="steelblue") counts20 <- table(pluie_vannes$ANNEE[pluie_vannes$mm20 == 1]) barplot(counts20,main ="Nombre de jours avec plus de 20mm de pluie par année",xlab="Année",ylab="nombre de jours",col="steelblue") counts30 <- table(pluie_vannes$ANNEE[pluie_vannes$mm30 == 1]) barplot(counts30,main ="Nombre de jours avec plus de 30mm de pluie par année",xlab="Année",ylab="nombre de jours",col="steelblue") countsP<- tapply(pluie_vannes$Cumul_pluie,pluie_vannes$ANNEE,sum) barplot(countsP,main ="Précipitations en mm par année",xlab="Année",ylab="Cumul précipitations",col="steelblue") ## comptons le nombre de jours moyen dans l'annee avec plus de 9mm de pluie table(pluie_vannes$mm9) 1/(1+table(pluie_vannes$mm9)["0"]/table(pluie_vannes$mm9)["1"]) ## Probabilité est de 8.1% # Création des données mensuelles de cumul de précipitations sur Vannes-Séné pluie_vannes$mois_annee=paste(pluie_vannes$MOIS,pluie_vannes$ANNEE,sep="-") pluie_vannes_mensuel<-aggregate(pluie_vannes$Cumul_pluie ~ pluie_vannes$mois_annee, data = pluie_vannes, FUN = sum) pluie_vannes_mensuel$MOIS<-substr(pluie_vannes_mensuel$`pluie_vannes$mois_annee`,1,2) pluie_vannes_mensuel$ANNEE<-substr(pluie_vannes_mensuel$`pluie_vannes$mois_annee`,4,7) pluie_vannes_mensuel <- pluie_vannes_mensuel[, !names(pluie_vannes_mensuel) %in% c("pluie_vannes$mois_annee")] pluie_vannes <- pluie_vannes[, !(names(pluie_vannes) %in% "mois_annee")] # Formatage en mode paysage pluie_vannes_mensuel_large<-pluie_vannes_mensuel %>% pivot_wider( names_from = MOIS, values_from = `pluie_vannes$Cumul_pluie` ) # Inversement du tableau df_t <- as.data.frame(t(pluie_vannes_mensuel_large)) names(df_t) <- df_t[1,] df_t<-df_t[2:nrow(df_t),] df_t<-df_t[,order(as.numeric(names(df_t)))] df_t[]<- lapply(df_t, function(x) as.numeric(as.character(x))) # Calcul des moyennes historiques annuelles sur 1970-2010 df_t$norme1980_2010=rowMeans(df_t[,as.numeric(names(df_t))>=1970 & as.numeric(names(df_t))<=2010],na.rm=TRUE) df_t$mois=seq(1,12) df_t<-df_t[,c(ncol(df_t),1:(ncol(df_t)-1))] # Exportation du fichier write_xlsx(df_t,paste(path,"pluvio_golfe_mensuel.xlsx",sep="")) write_xlsx(pluie_vannes,paste(path,"pluvio_golfe_journalier.xlsx",sep="")) # Nettoyage de l'environnement R rm(list=ls())