script.R 11.23 KiB
# \\\
# Copyright 2021-2022 Louis Héraut*1
# *1   INRAE, France
#      louis.heraut@inrae.fr
# This file is part of ash R toolbox.
# ash R toolbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# ash R toolbox is distributed in the hope that it will be useful, but 
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with ash R toolbox.  If not, see <https://www.gnu.org/licenses/>.
# ///
# script.R
# Script file to manage the trend analysis of the Adour-Garonne basin.
# Performs the necessary calls to processing and plotting functions in
# order to realise the hydrologic trend analysis of stations according
# to the input parameters. The nearest area belove is where you need to
# write your prefer parameters for the analysis. See the 'README.txt'
# file for more information.
############## START OF REGION TO MODIFY (without risk) ##############
# Path to the data
computer_data_path = 
    "/home/louis/Documents/bouleau/INRAE/CDD_stationnarite/data"
    # "C:\\Users\\louis.heraut\\Documents\\CDD_stationnarite\\data"
# Work path (it needs to end with '/ASH' directory)
computer_work_path = 
    "/home/louis/Documents/bouleau/INRAE/CDD_stationnarite/ASH"
    # "C:\\Users\\louis.heraut\\Documents\\CDD_stationnarite\\ASH"
## BANQUE HYDRO
# Path to the directory where Banque Hydro (BH) data is stored
# from the work path
filedir = 
    # ""
    "BanqueHydro_Export2021"
## MANUAL SELECTION
# Name of the file that will be analysed from the BH directory
# (if 'all', all the file of the directory will be chosen)
filename =
    # c(
        # "S2235610_HYDRO_QJM.txt",
        # "P1712910_HYDRO_QJM.txt",
        # "P0885010_HYDRO_QJM.txt",
        # "O5055010_HYDRO_QJM.txt",
        # "O0384010_HYDRO_QJM.txt",
        # "S4214010_HYDRO_QJM.txt",
        # "Q7002910_HYDRO_QJM.txt"
        # "O3035210_HYDRO_QJM.txt"
        # "O0554010_HYDRO_QJM.txt",
        # "O1584610_HYDRO_QJM.txt"
    # )
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
## AGENCE EAU ADOUR GARONNE SELECTION # Path to the 'docx' list file of station from the Agence de l'eau # Adour-Garonne that will be analysed AGlistdir = "" AGlistname = # "" "Liste-station_RRSE.docx" ## NIVALE SELECTION # Path to the 'txt' list file of station from INRAE that will be analysed INlistdir = "" INlistname = "" # "INRAE_selection.txt" ## TREND ANALYSIS # Time period to analyse periodAll = c("1800-01-01", "2020-12-31") periodSub = c("1968-01-01", "2020-12-31") trend_period = list(periodAll, periodSub) # Time period to mean period1 = c("1968-01-01", "1988-12-31") period2 = c("2000-01-01", "2020-12-31") mean_period = list(period1, period2) # alpha the risk alpha = 0.1 # Sampling span of the data sampleSpan = c('05-01', '11-30') ## MAP # Path to the shapefile for france contour from 'computer_data_path' fr_shpdir = 'map/france' fr_shpname = 'gadm36_FRA_0.shp' # Path to the shapefile for basin shape from 'computer_data_path' bs_shpdir = 'map/bassin' bs_shpname = 'BassinHydrographique.shp' # Path to the shapefile for sub-basin shape from 'computer_data_path' sbs_shpdir = 'map/sous_bassin' sbs_shpname = 'SousBassinHydrographique.shp' # Path to the shapefile for river shape from 'computer_data_path' rv_shpdir = 'map/river' rv_shpname = 'CoursEau_FXX.shp' ############### END OF REGION TO MODIFY (without risk) ############### ## 1. FILE STRUCTURE # Set working directory setwd(computer_work_path) # Sourcing R file source('processing/extract.R', encoding='UTF-8') source('processing/format.R', encoding='UTF-8') source('processing/analyse.R', encoding='UTF-8') source('plotting/layout.R', encoding='UTF-8') source('processing/results_manager.R', encoding='UTF-8')
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
# Result directory resdir = file.path(computer_work_path, 'results') if (!(file.exists(resdir))) { dir.create(resdir) } print(paste('resdir :', resdir)) # Figure directory figdir = file.path(computer_work_path, 'figures') if (!(file.exists(figdir))) { dir.create(figdir) } print(paste('figdir :', figdir)) # Resources directory resources_path = file.path(computer_work_path, 'resources') if (!(file.exists(resources_path))) { dir.create(resources_path) } print(paste('resources_path :', resources_path)) # Logo filename AEAGlogo_file = 'agence-de-leau-adour-garonne_logo.png' INRAElogo_file = 'Logo-INRAE_Transparent.png' FRlogo_file = 'Republique_Francaise_RVB.png' ## 2. SELECTION OF STATION # Initialization of null data frame if there is no data selected df_data_AG = NULL df_data_IN = NULL df_meta_AG = NULL df_meta_IN = NULL ### 2.1. Selection of the Agence de l'eau Adour-Garonne if (AGlistname != ""){ # Get only the selected station from a list station file df_selec_AG = get_selection_AG(computer_data_path, AGlistdir, AGlistname, cnames=c('code', 'station', 'BV_km2', 'axe_principal_concerne', 'longueur_serie', 'commentaires', 'choix'), c_num=c('BV_km2', 'longueur_serie')) # Get filenames of the selection filename = df_selec_AG[df_selec_AG$ok,]$filename # Extract metadata about selected stations df_meta_AG = extract_meta(computer_data_path, filedir, filename) # Extract data about selected stations df_data_AG = extract_data(computer_data_path, filedir, filename) } ### 2.2. INRAE selection if (INlistname != ""){ # Get only the selected station from a list station file df_selec_IN = get_selection_IN(computer_data_path, INlistdir, INlistname) # Get filenames of the selection filename = df_selec_IN[df_selec_IN$ok,]$filename
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
# Extract metadata about selected stations df_meta_IN = extract_meta(computer_data_path, filedir, filename) # Extract data about selected stations df_data_IN = extract_data(computer_data_path, filedir, filename) } ### 2.3. Manual selection if (AGlistname == "" & INlistname == "") { # Extract metadata about selected stations df_meta_AG = extract_meta(computer_data_path, filedir, filename) # Extract data about selected stations df_data_AG = extract_data(computer_data_path, filedir, filename) } ### 2.4. Data join df_join = join(df_data_AG, df_data_IN, df_meta_AG, df_meta_IN) df_data = df_join$data df_meta = df_join$meta ## 3. ANALYSE ### 3.1. Compute other parameters for stations # Time gap df_meta = get_lacune(df_data, df_meta) # Hydrograph df_meta = get_hydrograph(df_data, df_meta, period=mean_period[[1]])$meta ### 3.2. Trend analysis # # QA trend # res_QAtrend = get_QAtrend(df_data, df_meta, # period=trend_period, # alpha=alpha) # # QMNA tend # res_QMNAtrend = get_QMNAtrend(df_data, df_meta, # period=trend_period, # alpha=alpha, # sampleSpan=sampleSpan) # # VCN10 trend # res_VCN10trend = get_VCN10trend(df_data, df_meta, # period=trend_period, # alpha=alpha, # sampleSpan=sampleSpan) # # Start date for low water trend # res_DEBtrend = get_DEBtrend(df_data, df_meta, # period=trend_period, # alpha=alpha, # sampleSpan=sampleSpan, # thresold_type='VCN10', # select_longest=TRUE) # # res_DEBtrend = read_listofdf(resdir, 'res_DEBtrend') # # Center date for low water trend # res_CENtrend = get_CENtrend(df_data, df_meta, # period=trend_period, # alpha=alpha, # sampleSpan=sampleSpan) ### 3.3. Break analysis # df_break = get_break(res_QAtrend$data, df_meta) # df_break = get_break(res_QMNAtrend$data, df_meta) # df_break = get_break(res_VCN10trend$data, df_meta) # histogram(df_break$Date, df_meta, # figdir=figdir) # cumulative(df_break$Date, df_meta, dyear=8, # figdir=figdir)
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
## 4. PLOTTING # Shapefile importation in order to it only once time df_shapefile = ini_shapefile(computer_data_path, fr_shpdir, fr_shpname, bs_shpdir, bs_shpname, sbs_shpdir, sbs_shpname, rv_shpdir, rv_shpname, riv=TRUE) ### 4.1. Simple time panel to criticize station data # Plot time panel of debit by stations # datasheet_layout(list(df_data, df_data), # layout_matrix=c(1, 2), # df_meta=df_meta, # missRect=list(TRUE, TRUE), # var=list('Q', 'sqrt(Q)'), # info_header=TRUE, # time_header=NULL, # var_ratio=3, # figdir=figdir, # filename_opt='time') ### 4.2. Analysis layout datasheet_layout(toplot=c( 'datasheet', 'matrix', 'map' ), df_meta=df_meta, df_data=list(res_QAtrend$data, res_QMNAtrend$data, res_VCN10trend$data, res_DEBtrend$data, res_CENtrend$data), df_trend=list(res_QAtrend$trend, res_QMNAtrend$trend, res_VCN10trend$trend, res_DEBtrend$trend, res_CENtrend$trend), var=list('QA', 'QMNA', 'VCN10', 'DEB', 'CEN'), type=list('sévérité', 'sévérité', 'sévérité', 'saisonnalité', 'saisonnalité'), layout_matrix=matrix(c(1, 2, 3, 4, 5), ncol=1), missRect=TRUE, trend_period=trend_period, mean_period=mean_period, info_header=TRUE, time_header=df_data, foot_note=TRUE, info_ratio=2, time_ratio=2, var_ratio=3, foot_height=1, df_shapefile=df_shapefile, figdir=figdir, filename_opt='',
351352353354355
resources_path=resources_path, AEAGlogo_file=AEAGlogo_file, INRAElogo_file=INRAElogo_file, FRlogo_file=FRlogo_file)