12 Exploiter l’hydrologie future sur le territoire
Cette section du manuscrit est encore inachevée. Quelques éléments sont toutefois déjà mis à disposition ci-dessous.
12.2 Lire les fichiers netcdf
L’encadré suivant est une feuille volante qu’une précédente aventurière avait gribouillée lors d’un passage dans un monastère parisien. Cette aventurière avait ainsi retranscrit les prêches – aussi appelées Sesssion de formation du projet LIFE Eau&Climat – de plusieurs lettrés qui connaisaient les formules magiques dans le langage R pour ouvrir des fichiers netcdf. Cette simple feuille volante devrait vous apporter la clé pour accéder à l’ensemble des projections de débit Explore2.
Exemple de script R définissant et utilisant une fonction pour extraire la chronique d’une seule station d’un fichier netcdf.
#######################################################
# Installer le package ncdf4 (à faire une seule fois)
#install.packages('ncdf4')
#######################################################
#######################################################
# Définir les outils nécessaires (package et fonction)
#######################################################
# Charger le package ncdf4
library(ncdf4)
# Definir une fonction générant un fichier csv à partir du nom d'un fichier netcdf
# et d'un code station
ecrire_chronj_csv <- function(fichier, code) {
# Ouvrir la connexion au fichier netcdf
print(fichier)
nc <- nc_open(fichier)
# Afficher le contenu du fichier (optionnel mais conseillé)
print(nc)
# Extraire le numéro de la ligne qui correspond au code station
indice_code <- match(code, ncvar_get(nc, 'code'))
# Extraire la chronique de débit pour ce code station
debit <- ncvar_get(nc, 'debit', start = c(indice_code, 1), count = c(1, -1))
# Extraire la série correspondante de dates
date <- ncvar_get(nc, 'time') + as.Date('1950-01-01')
# Fermer la connexion au fichier netcdf
nc_close(nc)
# Faire un graphe de la chronique de débit en fonction de la date (optionnel)
#plot(x = date, y = debit, type = 'l')
# Ecrire un fichier .csv avec une colonne "date" et une colonne "debit"
# avec un nom composé du nom de fichier initial et du code station
write.csv(file = paste0(fichier, '_', code, '.csv'), data.frame(date, debit))
return(data.frame(date, debit))
}
#######################################################
# Utiliser la fonction sur un exemple
#######################################################
# Définir le répertoire du fichier netcdf (à modifier)
repertoire <- "/home/jean-philippe.vidal/work/projets/LIFE_Eau_et_Climat/actions/C5/formation_pratique/manipuler_chroniques_journalieres/series/"
# Définir le nom du fichier netcdf (à modifier)
fichier <- "debit_France_CNRM-CERFACS-CNRM-CM5_historical_r1i1p1_CNRM-ALADIN63_v2_MF-ADAMONT-SAFRAN-1980-2011_MF-SIM2_day_19510801-20050731.nc"
# Définir le code station (à modifier)
code <- "O200001001"
# Exécuter la fonction
ecrire_chronj_csv(paste0(repertoire, fichier), code)
12.3 Manipuler les données
12.3.2 Deuxième exemple : Sélectionner des projections hydrologiques
Si vous avez lu l’ensemble de ce livre, vous pouvez vous rendre à la section suivante