wolfhece.PyCrosssections
Author: HECE - University of Liege, Pierre Archambeau, Utashi Ciraane Docile 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
- wolfhece.PyCrosssections.example_largesect = Multiline-String[source]
Show Value
"""-138 100 -114 90 -70 80 -45 70 -32 62 0 61.5 32 62 60 70 80 80 98 84 120 87"""
- wolfhece.PyCrosssections.example_smallsect = Multiline-String[source]
Show Value
"""0 68 10 67 12 65 15 63 20 62 24 61.5 30 62 35 64 40 66 42 66.5 50 68"""
- wolfhece.PyCrosssections.example_diffsect1 = Multiline-String[source]
Show Value
"""0 10 10 5 12 5 15 6 16 6 17 5 20 3 25 3 30 5 42 7 50 10"""
- wolfhece.PyCrosssections.INTERSEC(x1, y1, x2, y2, el)[source]
Procédure de calcul de l’abscisse d’intersection d’une altitude donnée el dans un segment défini par ses coordonnées (x1,y1) et (x2,y2)
- class wolfhece.PyCrosssections.postype[source]
Bases:
enum.Enum
Mode de stockage des points de référence (berges, fond lit)
- class wolfhece.PyCrosssections.profile(name, data_sect='', parent=None)[source]
Bases:
wolfhece.PyVertexvectors.vector
Surcharge d’un vecteur en vue de définir un profil de rivière
Les coordonnées attendues sont en 3D (x,y,z)
- triangulation_gltf(zmin)[source]
Génération d’un info de triangulation pour sortie au format GLTF –> Blender :zmin : position d’altitude minimale de la triangulation
- get_xy_from_s(s) tuple[float, float] [source]
Récupération d’un tuple (x,y) sur base d’une distance 2D ‘s’ orientée dans l’axe de la section
- set_vertices_sz_orient(sz: numpy.ndarray, xy1: numpy.ndarray, xy2: numpy.ndarray)[source]
- Ajout de vertices depuis :
une matrice numpy (s,z) – shape = (nb_vert,2)
d’un point source [x,y]_1
d’un point visé [x,y]_2
- plot_laz(length_buffer=5.0, fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, show=False)[source]
Dessin des points LAZ sur le graphique Matplotlib
- movebankbed_index(which, orientation)[source]
Déplacement des points de référence sur base d’un index Le cas échéant, adaptation du mode de stockage
- update_banksbed_from_s3d(which, s: float)[source]
MAJ des points de référence depuis une coordonnée curvi 3D
- get_s_from_xy(xy: wolfhece.PyVertex.wolfvertex) float [source]
Retourne la coordonnér curvi sur base d’un vertex
- get_sz(cumul=True) tuple[numpy.ndarray, numpy.ndarray] [source]
Retourne 2 vecteurs avec la position curvi 2D et l’altitude des points
- set_sz(sz, trace)[source]
- Calcule les positions des vertices sur base d’une matrice sz et d’une trace
s : colonne 0 z : colonne 1 trace : liste de 2 couples xy -> [[x1,y1], [x2,y2]]
- get_sz_banksbed(cumul=True, force: bool = False) tuple[float, float, float, float, float, float] [source]
- Retourne les positions des points de référence mais avec la coordonnée curvi 2D
(sleft, sbed, sright, zleft, zbed, zright)
- get_s3d_banksbed(force: bool = False) tuple[float, float, float] [source]
- Retourne les coordonnée curvi 3D des points de référence
(sleft, sbed, sright)
- asshapely_sz() shapely.geometry.LineString [source]
Retroune la section comme objet shapely - polyligne selon la trace avec altitudes
- asshapely_s3dz() shapely.geometry.LineString [source]
Retroune la section comme objet shapely - polyligne selon la trace 3D avec altitudes
- plot_linked(fig, ax, linked_arrays: dict)[source]
Graphique Matplolib de valeurs dans les matrices liées
- _plot_only_cs(fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, label='', alpha=0.8, lw=1.0, style: str = 'dashed', centerx=0.0, centery=0.0, grid=True, col_ax: str = 'black')[source]
- plot_cs(fwl=None, show=False, forceaspect=True, fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, plotlaz=True, clear=True, linked_arrays: dict = {})[source]
- relations(discretize: int = 100, plot=True)[source]
This method returns 6 numpy arrays each containing the evolution of a specific hydraulic characteristic with respect to the water depth in the profile (wetted area, wetted perimeter, top width, water detph, hydraulic radius, critical discharge).
- ManningStrickler_Q(slope=0.001, nManning=0.0, KStrickler=0.0)[source]
Procédure générique pour obtenir une relation uniforme Q-H sur base - nManning : un coefficient de frottement - slope : une pente
- ManningStrickler_oneQ(slope=0.001, nManning=0.0, KStrickler=0.0, cury=0.0)[source]
Procédure générique pour obtenir une relation uniforme Q-H sur base - nManning : un coefficient de frottement - slope : une pente
- deepcopy_profile(name: str = None)[source]
This method returns a deepcopy of the active profile. The profile features are individually transferred, therefore, only the necessary features are copied.
- color_active_profile(width: float = 3.0, color: list = [255, 0, 0], plot_opengl=True)[source]
This method colors and thickens the active profile (default width : 3, default color: red).
- highlightning(width: float = 3.0, color: list = [255, 0, 0], plot_opengl=True)[source]
Alias for color_active_profile
- uncolor_active_profile(plot_opengl=True)[source]
This method resets the width and the color of the active profile to 1 and black.
- ManningStrickler_profile(slope: float = 0.001, nManning: float = 0.0, KStrickler: float = 0.0)[source]
- Procédure générique pour obtenir une relation uniforme Q-H d’un profile sur base:
nManning ou KStrickler: un coefficient de frottement,
slope : une pente fournie (default: 0.001),
ainsi que les relations correspondant aux pentes aval(slope down), amont(slopeup), et amont-aval (centered).
- plotcs_profile(fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, compare=None, vecs: list = [], col_structure: str = 'none', fwl: float = None, fwd: float = None, simuls: list = None, show=False, forceaspect=True, plotlaz=True, clear=True, redraw=True)[source]
This method plots the physical geometry of the current cross section (profile).
If a reference profile (compare) is given, the method hatchs the differences with resepect to cuts and fills.
If forceaspect is activated, the x and y axes are plotted using the same scale, otherwise, the figure is anamorphosed.
fwl (for water level) and fwd (for water depth) allow the visualisation of a specific water level on the graph.
idsimul: list of available numerical simulations containing this profile,
zsimul: list of water level in the simulations.
col_structure colors the structure displayed.
- plotcs_discharges(fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, fwl: float = None, fwd: float = None, fwq: float = None, simuls: list = None, show=False, clear=True, labels=True, redraw=True)[source]
This method plots the discharges relationship computed with the methods: relations and ManningStrcikler_profile.
fwl: for water level,
fwd: for water depth,
fwq: for water discharge,
idsimul: list of available numerical models.
qsimul: list of discharges in the available numerical models,
hsimul: list of water depth in the available numerical models.
- plotcs_hspw(fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, fwl: float = None, fwd: float = None, fwq: float = None, show=False, clear=True, labels=True, redraw=True)[source]
This method plots the hydraulic geometries computed by the relations method (Hydraulic radius, wetted area, wetted perimeter, Top width).
fwl: for water level,
fwd: for water depth,
fwq: for water discharge.
- class wolfhece.PyCrosssections.crosssections(myfile, format: Literal[2000, 2022, vecz, sxy] = '2022', dirlaz: str | wolfhece.lazviewer.laz_viewer.xyz_laz_grids = 'D:\\OneDrive\\OneDrive - Universite de Liege\\Crues\\2021-07 Vesdre\\CSC - Convention - ARNE\\Data\\LAZ_Vesdre\\2023', mapviewer=None, idx='', plotted=True)[source]
Bases:
wolfhece.drawing_obj.Element_To_Draw
- Gestion de sections en travers pour différents formats
SPW 2000 –> format =’2000’
SPW 2022 –> format =’2022’
WOLF vecz –> format =’vecz’
WOLF sxy –> format =’sxy’
L’objet stocke ses informations dans un dictionnaire : self.myprofiles Les clés de chaque entrée sont:
[‘index’] : integer [‘left’] : wolfvertex [‘bed’] : wolfvertex [‘right’] : wolfvertex [‘cs’] : profile (surcharge de vector)
Pour le moment, il est possible de lire les fichiers et d’effectuer cerrains traitements (tri selon vecteur, export gltf…).
Une instance de cet objet peut être ajouté à une instance graphique WOLF pour affichage. Pour ce faire:
une propriété “myzones” de type “Zones” est présente pour stocker les sections sous forme WOLF “ZONES/ZONE/VECTOR/VERTICES”. –> “crosssections” n’est donc pas une extension de “Zones” !!
- deux instances de “cloud_vertices” contiennent les vertices des sections :
cloud
cloud_all
:remark !! La classe n’est pas encore prévue pour créer des sections en travers!!
- get_profile(which_prof, which_dict: str = None)[source]
Recherche et renvoi d’un profil sur base du nom ou de son index et éventuellement de la liste triée
- link_external_zones(mylink: wolfhece.PyVertexvectors.Zones)[source]
- verif_bed()[source]
Verification de l’existence du point lit mineur sinon attribution de l’altitude minimale
- sort_along(vecsupport: shapely.geometry.LineString, name: str, downfirst=True)[source]
Sélectionne les sections qui intersectent un vecteur support et les trie selon l’abscisse curviligne
- find_minmax(update: bool = False)[source]
Generic function to find min and max spatial extent in data
- examplea WolfMapViewer instance needs spatial extent to zoom or test if
element must be plotted
- class wolfhece.PyCrosssections.Interpolator(vec1: wolfhece.PyVertexvectors.vector, vec2: wolfhece.PyVertexvectors.vector, supports: list, ds=1.0)[source]
Objet d’interpolation sur sections en travers
self.interpolants est une liste de listes
chaque élément de self.interpolants est également une liste de listes
chaque liste de self.interpolants[k] contient les wolfvertex de la section discrétisée
- add_triangles_to_zone(myzone: wolfhece.PyVertexvectors.zone)[source]
- class wolfhece.PyCrosssections.Interpolators(banks: wolfhece.PyVertexvectors.Zones, cs: crosssections, ds=1.0)[source]
Classe de gestion des interpolations sur sections en travers