wolfhece.irm_qdf
Author: HECE - University of Liege, Pierre Archambeau Date: 2024
Copyright (c) 2024 University of Liege. All rights reserved.
This script and its content are protected by copyright law. Unauthorized copying or distribution of this file, via any medium, is strictly prohibited.
Module Contents
- class wolfhece.irm_qdf.MontanaIRM(coeff: pandas.DataFrame, time_bounds=None)[source]
Classe pour la gestion des relations de Montana pour les précipitations
- get_ab(dur, T)[source]
Get the Montana coefficients for a given duration and return period
- Parameters:
dur – the duration
T – the return period
- get_meanrain(dur, T, ab=None)[source]
Get the mean rain for a given duration and return period
- Parameters:
dur – the duration
T – the return period
ab – the Montana coefficients
- get_instantrain(dur, T, ab=None)[source]
Get the instantaneous rain for a given duration and return period
- Parameters:
dur – the duration
T – the return period
ab – the Montana coefficients
- get_Q(dur, T)[source]
Get the quantity of rain for a given duration and return period
- Parameters:
dur – the duration
T – the return period
- get_hyeto(durmax, T, r=0.5)[source]
Get the hyetogram for a given return period
- Parameters:
durmax – the maximum duration of the hyetogram
T – the return period
r – Decentration coefficient
- class wolfhece.irm_qdf.Qdf_IRM(store_path='irm', code: int = 0, name='', force_import=False, ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018, localities: wolfhece.ins.Localities = None, dataframe: pandas.DataFrame = None)[source]
Gestion des relations QDF calculées par l’IRM
Exemple d’utilisation :
Pour importer les fichiers depuis le site web de l’IRM meteo.be from wolfhece.irm_qdf import Qdf_IRM qdf = Qdf_IRM(force_import=True) qdf =
Il est possible de spécifier le répertoire de stockage des fichiers Excel Par défaut, il s’agit d’un sous-répertoire ‘irm’ du répertoire courant qui sera créé s’il n’exsiste pas
Une fois importé/téléchargé, il est possible de charger une commune sur base de l’INS ou de son nom
myqdf = Qdf_IRM(name=’Jalhay’)
Les données sont ensuite disponibles dans les propriétés, qui sont des “dataframes” pandas (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) :
qdf : les relation Quantité/durée/fréquence
standarddev : l’écart-type de l’erreur
confintlow : la valeur inférieure de l’intervalle de confiance (-2*stddev)
confintup : la valeur supérieure de l’intervalle de confiance (+2*stddev)
montanacoeff : les coeffciients de Montana
L’index est le temps (dur10min, dur30min, dur1h, … – durationstext) et les colonnes sont les périodes de retour (RT2, RT5, RT10, … – RT).
Il est par exemple possible d’accéder aux coefficients de Montana via l’une de ces lignes ou une combinaison :
display(myqdf.montanacoeff) rt = myqdf.montanacoeff.index display(myqdf.montanacoeff.loc[rt[0]]) display(myqdf.montanacoeff.iloc[0]) display(myqdf.get_Montanacoeff(qdf.RT2))
- has_data_for_locality() bool [source]
Has this instance been initialized with data from a locality ?
- classmethod importfromwebsite(store_path: pathlib.Path = 'irm', verbose: bool = False, waitingtime: float = 0.01, ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018, ins_code: int = None)[source]
Import Excel files for one or all municipalities from the IRM website
- Parameters:
store_path – Where to store the downloaded data. Directory will be created if it doesn’t exists.
verbose – If True, will print some progress information. If False, will do nothing. If a callable, then will call it with a float in [0, 1]. 0 means nothing downloaded, 1 means everything downloaded.
waitingtime – How long to wait (in seconds) betwenn the download of each station (will make sure we don’t overwhelm IRM’s website).
ins – The year of the INS codes to use.
code – Restricts the data download to a specific NIS code. None means full download.
- _read_csv_or_excel(code='', name='')[source]
Lecture des caractéristiques d’une commune depuis le fichier CSV ou Excel associé au code INS
- Parameters:
code – le code INS de la commune
name – le nom de la commune
- _read_csv_or_excel_Montana_only(code='', name='')[source]
Lecture des caractéristiques d’une commune depuis le fichier CSV Excel associé au code INS
- Parameters:
code – le code INS de la commune
name – le nom de la commune
- classmethod convert_xls2csv(store_path='irm', ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018)[source]
Convert all Excel files to CSV files
- Parameters:
store_path – Where to store the downloaded data. Directory will be created if it doesn’t exists.
ins – The year of the INS codes to use.
- plot_idf(T=None, which: Literal['All', 'Montana', 'QDFTable'] = 'All', color=[27.0 / 255.0, 136.0 / 255.0, 245.0 / 255.0])[source]
Plot IDF relations on a new figure
:param T : the return period (based on RT constants) :param which : information to plot
‘Montana’
‘QDFTable’
‘All’
- plot_qdf(T=None, which: Literal['All', 'Montana', 'QDFTable'] = 'All', color=[27.0 / 255.0, 136.0 / 255.0, 245.0 / 255.0])[source]
Plot QDF relations on a new figure :param T : the return period (based on RT constants) :param which : information to plot
‘Montana’
‘QDFTable’
‘All’
- fit_cdf(dur=None, plot=False)[source]
Fit the cdf of the QDF data with a Generalized Extreme Value distribution
- Parameters:
dur – the duration to fit
plot – if True, will plot the cdf with the fit
- get_Tfromrain(Q, dur=dur1h)[source]
Get the return period for a given quantity of rain
- Parameters:
Q – the quantity of rain
dur – the duration
- get_rainfromT(T, dur=dur1h)[source]
Get the quantity of rain for a given return period and duration
- Parameters:
T – the return period
dur – the duration
- get_MontanacoeffforT(return_period)[source]
Get the Montana coefficients for a given return period
- Parameters:
return_period – the return period
- plot_hyeto(durmax, T, r=0.5)[source]
Plot the hyetogram for a given return period
- Parameters:
durmax – the maximum duration of the hyetogram
T – the return period
r – the decentration coefficient
- plot_hyetos(durmax, r=0.5)[source]
Plot the hyetograms for all return periods
- Parameters:
durmax – the maximum duration of the hyetograms
r – the decentration coefficient
- make_image_qdf_plot(T=None, which: Literal['All', 'Montana', 'QDFTable'] = 'All', color=[27.0 / 255.0, 136.0 / 255.0, 245.0 / 255.0])[source]
Create an image of the QDF plot.
We use the matplotlib library to create a PNG image of the QDF data. The image will be saved in the store path with the name <code>_qdf_plot.png.
- Parameters:
durmax – the maximum duration of the hyetograms
r – Decentration coefficient
- Returns:
a PNG image
- class wolfhece.irm_qdf.QDF_Belgium(store_path='irm', ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018, force_import: bool = False)[source]
Class to manage all QDF data for Belgium
- class wolfhece.irm_qdf.Climate_IRM(store_path='irm', ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018)[source]
-
- classmethod importfromwebsite(store_path='irm', verbose: bool = False, waitingtime: float = 0.01, ins: Literal['2018', '2019', '2025', 2018, 2019, 2025] = 2018, ins_code: int = None, convert=False)[source]
Import Excel files for one or all municipalities from the IRM website
- Parameters:
store_path – Where to store the downloaded data. Directory will be created if it doesn’t exists.
verbose – If True, will print some progress information. If False, will do nothing. If a callable, then will call it with a float in [0, 1]. 0 means nothing downloaded, 1 means everything downloaded.
waitingtime – How long to wait (in seconds) betwenn the download of each station (will make sure we don’t overwhelm IRM’s website).
ins – The year of the INS codes to use.
code – Restricts the data download to a specific NIS code. None means full download.
convert – Converts the downloaded PDF to Excel files.
- wolfhece.irm_qdf.MATCH_NUM_ZONE_SHAPEFILE_INS_INDEX = 'Match_num_zone_shapefile_INS_index.txt'[source]
- class wolfhece.irm_qdf.QDF_Hydrology(store_path=DATADIR / 'irm_qdf', ini_file: str = PLUVIO_INI, ins: Literal['2018', 2018] = 2018, geometry: str = GEOMETRY_MUNICIPALITIES)[source]
Prepare data from IRM website for WOLF hydrology calculations.
We need : - pluvio.ini - Match_num_zone_shapefile_INS_index.txt
“pluvio.ini” contains the path to the rainfall data files for each locality: - Extreme_precip_communes.txt
- download_municipalities_2018(force: bool = False)[source]
Download the municipalities shapefile from HECE.
- Parameters:
force – If True, will download the file even if it already exists.
- create_match_num_zone_shapefile()[source]
Create the Match_num_zone_shapefile_INS_index.txt file.
This file contains the mapping between the INS codes and the shapefile indices.
- class wolfhece.irm_qdf.QDF_Hydrology_Draw(store_path=DATADIR / 'irm_qdf', ins: Literal['2018', 2018] = 2018, idx: str = '', plotted: bool = True, mapviewer=None)[source]
Bases:
wolfhece.drawing_obj.Element_To_Draw
Class to draw the QDF hydrology data on a map.
This class is used to draw the QDF hydrology data on a map using the WOLF hydrology calculations.
- _get_vector_tables(ins: str | int) wolfhece.PyVertexvectors.vector [source]
Get the vector for a given INS code.
- _get_vector_plots(ins: str | int) wolfhece.PyVertexvectors.vector [source]
Get the vector for a given INS code.
- set_images_as_legend(plot_or_table: Literal['plot', 'table'] = 'plot', which: list = None)[source]
Set all images in the collection as legend images.
- find_nearest_centroid(x: float, y: float, bounds: tuple[float, float, float, float])[source]
Pick the municipality at the given coordinates.
- Parameters:
x – The x coordinate.
y – The y coordinate.
- Returns:
The name of the municipality or an empty string if not found.
- pick_municipality(x: float, y: float, bounds: tuple[float, float, float, float])[source]
Activate plot for the nearest municipality to the given coordinates.
- find_centroids_in_polygon(polygon: wolfhece.PyVertexvectors.Polygon) list[tuple[wolfhece.PyVertexvectors.vector, str]] [source]
Find all centroids in a given polygon.
- Parameters:
polygon – A shapely Polygon object defining the area to search.
- find_centroid_in_bounds(bounds: tuple[float, float, float, float]) list[tuple[wolfhece.PyVertexvectors.vector, str]] [source]
Find all centroids within the given bounds.
- Parameters:
bounds – A tuple of (minx, miny, maxx, maxy) defining the bounding box.