wolfhece.pyvertexvectors._zones
GUI-enabled Zones class with wx.Frame, OpenGL, and treelist UI.
Module Contents
- class wolfhece.pyvertexvectors._zones.Zones(filename: str | pathlib.Path = '', ox: float = 0.0, oy: float = 0.0, tx: float = 0.0, ty: float = 0.0, parent=None, is2D=True, idx: str = '', colname: str = None, plotted: bool = True, mapviewer=None, need_for_wx: bool = False, bbox: shapely.geometry.Polygon = None, find_minmax: bool = True, shared: bool = False, colors: dict = None)[source]
Bases:
wolfhece.pyvertexvectors._models.ZonesModel,wx.dataview.wx.Frame,wolfhece.drawing_obj.Element_To_Draw
Objet de gestion d’informations vectorielles
Une instance ‘Zones’ contient une liste de ‘zone’
Une instance ‘zone’ contient une listde de ‘vector’ (segment, ligne, polyligne, polygone…)
- myzones: list[wolfhece.pyvertexvectors._zone.zone][source]
- find_nearest_vertex(x: float, y: float) wolfhece.PyVertex.wolfvertex | None[source]
Return the nearest vertex across all GUI zones.
- find_nearest_vector(x: float, y: float) wolfhece.pyvertexvectors._vector.vector | None[source]
Return the nearest GUI vector across all GUI zones.
- import_gdb(fn: str, bbox: shapely.geometry.Polygon = None, layers: list[str] = None, colname: str = None, value_columns: str | list[str] | tuple[str, Ellipsis] | None = None, share_multipart_values: bool = False)[source]
Import a GDB file, showing a wx layer dialog when available.
- Parameters:
fn – Path to the GDB file.
bbox – Optional bounding box to filter features.
layers – Layer names to import (None = wx dialog or all).
colname – Column name used to build zone names.
value_columns – Columns to store into vector properties.
share_multipart_values – If True, multipart geometries share the same underlying
_valuesdictionary across split vectors.
- import_gpkg(fn: str, bbox: shapely.geometry.Polygon = None, layers: list[str] = None, colname: str = None, value_columns: str | list[str] | tuple[str, Ellipsis] | None = None, share_multipart_values: bool = False)[source]
Import a GeoPackage file, showing a wx layer dialog when available.
- Parameters:
fn – Path to the GPKG file.
bbox – Optional bounding box to filter features.
layers – Layer names to import (None = wx dialog or all).
colname – Column name used to build zone names.
value_columns – Columns to store into vector properties.
share_multipart_values – If True, multipart geometries share the same underlying
_valuesdictionary across split vectors.
- Onsaveimages(event: wx.dataview.wx.MouseEvent)[source]
Enregistrement d’une image pour tous les vecteurs
- save_images_fromvec(dir='')[source]
Sauvegarde d’images des vecteurs dans un répertoire
FIXME : pas encore vraiment au point
- change_gui(parent)[source]
Change the parent GUI object (e.g. mapviewer) and propagate to zones and vectors.
- Activate_vector(object: wolfhece.pyvertexvectors._vector.vector)[source]
Mémorise l’objet passé en argument comme vecteur actif
Pousse la même information dans l’objet parent s’il existe
- Activate_zone(object: wolfhece.pyvertexvectors._zone.zone)[source]
Mémorise l’objet passé en argument comme zone active
Pousse la même information dans l’objet parent s’il existe
- show_properties(parent=None, forceupdate=False)[source]
Affichage des propriétés des zones
- Parameters:
parent – soit une instance ‘WolfMapViewer’, soit une instance ‘Ops_Array’ –> est utile pour transférer la propriété ‘active_vector’ et obtenir diverses informations si parent est d’un autre type, il faut s’assurer que les options/actions sont consistantes
forceupdate – si True, on force la mise à jour de la structure
- _edit_all_properties()[source]
Show properties of the zone –> will be applied to all vectors int he zone
- plot_matplotlib(ax: matplotlib.axes.Axes | tuple[matplotlib.figure.Figure, matplotlib.axes.Axes] = None, background: Literal['ORTHO_1971', 'ORTHO_1994_2000', 'ORTHO_2006_2007', 'ORTHO_2009_2010', 'ORTHO_2012_2013', 'ORTHO_2015', 'ORTHO_2016', 'ORTHO_2017', 'ORTHO_2018', 'ORTHO_2019', 'ORTHO_2020', 'ORTHO_2021', 'ORTHO_2022_PRINTEMPS', 'ORTHO_2022_ETE', 'ORTHO_2023_ETE', 'ORTHO_LAST', 'orthoimage_coverage', 'orthoimage_coverage_2016', 'orthoimage_coverage_2017', 'orthoimage_coverage_2018', 'orthoimage_coverage_2019', 'orthoimage_coverage_2020', 'orthoimage_coverage_2021', 'orthoimage_coverage_2022', 'crossborder', 'crossborder_grey', 'overlay', 'topo', 'topo_grey'] = None, xlim: tuple[float] | None = None, ylim: tuple[float] | None = None) tuple[matplotlib.figure.Figure, matplotlib.axes.Axes][source]
Plot all zones using Matplotlib with optional WMS background.
- Parameters:
ax – Matplotlib Axes,
(Figure, Axes)tuple, or None.background – WMS background layer name (WalOnMap, IGN or Cartoweb).
xlim – Optional
(xmin, xmax)limits.ylim – Optional
(ymin, ymax)limits.
- Returns:
(Figure, Axes)tuple.
- Onplotmplsz(event: wx.dataview.wx.MouseEvent)[source]
Plot active vector in matplotlib with sz values
- showstructure(parent=None, forceupdate=False)[source]
Affichage de la structure des zones
- Parameters:
parent – soit une instance ‘WolfMapViewer’, soit une instance ‘Ops_Array’ –> est utile pour transférer la propriété ‘active_vector’ et obtenir diverses informations si parent est d’un autre type, il faut s’assurer que les options/actions sont consistantes
forceupdate – si True, on force la mise à jour de la structure
- expand_tree(objzone=None)[source]
Développe la structure pour un objet spécifique stocké dans la self.treelist.
L’objet peut être une ‘zone’ ou un ‘vector’ –> see more in ‘fill_structure’.
- OnEditLabel(event: wx.dataview.wx.MouseEvent)[source]
Edition de la clé/label de l’élément actif du treelist
- Ontest_interior(event: wx.dataview.wx.MouseEvent)[source]
Test if the active vector has interior portions
- delete_zone(zone_to_del: wolfhece.pyvertexvectors._zone.zone, update_ui: bool = True)[source]
Delete a zone from this Zones.
- Parameters:
zone – Zone to delete
update_ui – if True reflects the deleteion in the user interface.
- OnClickup_vector(event: wx.dataview.wx.MouseEvent)[source]
Remonte le vecteur actif dans la liste de la zone
- OnClickdown_vector(event: wx.dataview.wx.MouseEvent)[source]
Descend le vecteur actif dans la liste de la zone
- OnClickup_zone(event: wx.dataview.wx.MouseEvent)[source]
Remonte la zone active dans la liste de la zones self
- OnClickdown_zone(event: wx.dataview.wx.MouseEvent)[source]
Descend la zone active dans la liste de la zones self
- OnClickfindactivate_vector(event: wx.dataview.wx.MouseEvent)[source]
Recherche et activation d’un vecteur dans toutes les zones
- OnClickfindactivate_vector2(event: wx.dataview.wx.MouseEvent)[source]
Recherche et activation d’un vecteur dans la zone courante
- Oncapture(event: wx.dataview.wx.MouseEvent)[source]
Ajoute de nouveaux vertices au vecteur courant Fonctionne par clicks souris via le GUI wx de WolfMapViewer
- Onmodify(event: wx.dataview.wx.MouseEvent)[source]
Permet la modification interactive de vertex dans le vector actif
Premier click : recherche du vertex le plus proche Second click : figer la nouvelle position
–> action active jusqu’à sélectionne une autre action ou touche Entrée
- OncaptureandDynapar(event: wx.dataview.wx.MouseEvent)[source]
Ajoute des vertices au vecteur courant et crée des parallèles gauche-droite
- reverse(inplace: bool = True) Zones[source]
Reverse the order of vertices in all vectors.
- Parameters:
inplace – If True, modify in place; otherwise return a copy.
- Returns:
The reversed Zones object.
- Onsimplify(event: wx.dataview.wx.MouseEvent)[source]
Simplify the active vector using the Douglas-Peucker algorithm
- OnAddPar(event: wx.dataview.wx.MouseEvent)[source]
Ajout d’une parallèle au vecteur courant via le bouton adhoc
- Onsascending(e: wx.dataview.wx.MouseEvent)[source]
S’assure que les points sont ordonnés avec une distance 2D croissante
Retourne un message avec les valeurs modifiées le cas échéant
- Onbuffer(e: wx.dataview.wx.MouseEvent)[source]
Create a buffer around the currently activated vector. The buffer replaces the active vector in the same zone.
- Onsplit(event: wx.dataview.wx.MouseEvent)[source]
Split le vecteur courant selon un pas spatial déterminé
- Oncreatepolygons(event: wx.dataview.wx.MouseEvent)[source]
Création de polygones depuis des paralèles contenues dans la zone active
- _OnCreatePolygons(event: wx.dataview.wx.MouseEvent, ds_text: wx.dataview.wx.TextCtrl, nb_text: wx.dataview.wx.TextCtrl, option_dialog: wx.dataview.wx.Dialog)[source]
Handle the creation of polygons based on user input from the dialog.
- Oncreateslidingpoly(event: wx.dataview.wx.MouseEvent)[source]
Create sliding polygons from a support vector
- _OnCreateSlidingPolygon(event, ds_text, sliding_text, farthest_text, interval_text, inter_checkbox, offset_text, separate_checkbox, option_dialog: wx.dataview.wx.Dialog)[source]
Handle the creation of sliding polygons based on user input from the dialog.
- Oncreate_cs_from_active_zone(event: wx.dataview.wx.MouseEvent)[source]
Create a cross-section for each vector from the active zone.
- Oncreatemultibin(event: wx.dataview.wx.MouseEvent)[source]
Création d’une triangulation sur base de plusieurs vecteurs
- Oncreatetricrosssection(event: wx.dataview.wx.MouseEvent)[source]
Create a tringulation like cross-sections and support vectors
- OnconstrainedDelaunay(event: wx.dataview.wx.MouseEvent)[source]
Create a constrained Delaunay triangulation from the active zone
- Oncreatemultibin_project(event: wx.dataview.wx.MouseEvent)[source]
Création d’une triangulation sur base de plusieurs vecteurs Les sommets sont recherchés par projection d’un vecteur sur l’autre
- get_xy_from_sz(event: wx.dataview.wx.Event)[source]
- Add vertices and their respectives xy coordinates from s and Z entries in the xls grid:
NB: The coordinates of the initial point s= 0 and one other points should be explicitly given in the xls grid.
- Ongetvalues(e: wx.dataview.wx.MouseEvent)[source]
Récupère les valeurs dans une matrice
–> soit la matrice courante –> soit la matrice active de l’interface parent
- Ongetvalueslinked(e: wx.dataview.wx.MouseEvent)[source]
Récupération des valeurs sous toutes les matrices liées pour le vecteur actif
Crée une nouvelle zone contenant une copie du vecteur Le nombre de vertices est conservé
- Ongetvalueslinkedandref(e: wx.dataview.wx.MouseEvent)[source]
Récupération des valeurs sous toutes les matrices liées pour le vecteur actif
Crée une nouvelle zone contenant une copie du vecteur.
Le nombre de vertices est adapté pour correspondre au mieux à la matrice de liée et ne pas perdre, si possible, d’information.
- Onevaluates(event: wx.dataview.wx.MouseEvent)[source]
Calcule la position curviligne du vecteur courant
Le calcul peut être mené en 2D ou en 3D Remplissage du tableur dans la 5ème colonne
- Onupdate_from_sz_support(event: wx.dataview.wx.MouseEvent)[source]
Update the active vector from the sz values in the xls grid
- update_from_sz_support(vec: wolfhece.pyvertexvectors._vector.vector, sz: numpy.ndarray, dialog_box=True, method: Literal['2D', '3D'] = '3D')[source]
Update the coordinates from the support vector and a sz array.
The support vector is used to interpolate the z values, at the s values. It must long enough to cover the s values.
- Parameters:
vec – The vector to update. It is also the support vector.
sz – The sz array to use for the update
dialog_box – If True, a dialog box will be shown to choose the method
method – The method to use for the interpolation. ‘2D’ or ‘3D’
- evaluate_s(vec: wolfhece.pyvertexvectors._vector.vector = None, dialog_box=True)[source]
Compute the curvilinear abscissa for a vector.
- Parameters:
vec – The vector to evaluate.
dialog_box – If True, show a wx dialog for 2-D/3-D choice.
- Oninterpvec(event: wx.dataview.wx.MouseEvent)[source]
Interpole les valeurs Z de l’éditeur sur base des seules valeurs connues, càd autre que vide ou -99999