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

Inheritance diagram of wolfhece.pyvertexvectors._zones.Zones

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…)

tx: float[source]
ty: float[source]
myzones: list[wolfhece.pyvertexvectors._zone.zone][source]
treelist: TreeListCtrl[source]
xls: wolfhece.CpGrid.CpGrid[source]
shared = False[source]
parent = None[source]
labelactvect = None[source]
labelactzone = None[source]
_wx_frame_initialized = False[source]
_rendering_machine = None[source]
_make_zone(**kwargs)[source]

Factory: create a new GUI-enabled zone.

_make_zones(**kwargs)[source]

Factory: create a new GUI-enabled Zones collection.

_make_vector(**kwargs)[source]

Factory: create a new GUI-enabled vector.

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 _values dictionary 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 _values dictionary 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.

set_mapviewer()[source]

Recherche d’une instance WolfMapViewer depuis le parent

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

hide_properties()[source]

Hide the properties window

_callback_prop()[source]

Callback invoked when global properties are applied to all vectors.

_callback_destroy_props()[source]

Callback to release the global properties dialog reference.

_edit_all_properties()[source]

Show properties of the zone –> will be applied to all vectors int he zone

property rendering_machine[source]

Current rendering backend for all zones.

Return type:

VectorOGLRenderer

reset_listogl()[source]

Reset des listes OpenGL pour toutes les zones

prep_listogl()[source]

Préparation des listes OpenGL pour augmenter la vitesse d’affichage

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.

Onplotmpl(event: wx.dataview.wx.MouseEvent)[source]

Plot active vector in matplotlib

Onplotmplsz(event: wx.dataview.wx.MouseEvent)[source]

Plot active vector in matplotlib with sz values

OnClose(e)[source]

Fermeture de la fenêtre

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

init_ui()[source]

Création de l’interface wx de gestion de l’objet

fill_structure()[source]

Remplissage de la structure wx

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’.

OnCheckItem(event: wx.dataview.wx.MouseEvent)[source]

Coche/Décoche un ékement de la treelist

OnRDown(event: TreeListEvent)[source]

Affiche les propriétés du vecteur courant Clicl-droit

OnActivateItem(event: TreeListEvent)[source]

Activation d’un élément dans le treelist

OnEditLabel(event: wx.dataview.wx.MouseEvent)[source]

Edition de la clé/label de l’élément actif du treelist

xls_active_vector()[source]

Remplit le tableur

Onaddrows(event: wx.dataview.wx.MouseEvent)[source]

Ajout de lignes au tableur

Onupdatevertices(event)[source]

Mie à jour des vertices sur base du tableur

Ontest_interior(event: wx.dataview.wx.MouseEvent)[source]

Test if the active vector has interior portions

OnClickadd_zone(event: wx.dataview.wx.MouseEvent)[source]

Ajout d’une zone au GUI

OnClickadd_vector(event: wx.dataview.wx.MouseEvent)[source]

Ajout d’un vecteur à la zone courante

OnClickduplicate_zone(event: wx.dataview.wx.MouseEvent)[source]

Duplication de la zone active

OnClickduplicate_vector(event: wx.dataview.wx.MouseEvent)[source]

Duplication du vecteur actif

OnClickdelete_zone(event: wx.dataview.wx.MouseEvent)[source]

Suppression de la zone courante

OnClickdelete_vector(event: wx.dataview.wx.MouseEvent)[source]

Suppression du vecteur actif

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.

delete_all_zones()[source]

Delete all zone’s from this Zones.

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

Oninsert(event: wx.dataview.wx.MouseEvent)[source]

Insertion de vertex dans le vecteur courant

Onzoom(event: wx.dataview.wx.MouseEvent)[source]

Zoom sur le vecteur actif dans le mapviewer

Onzoomvertex(event: wx.dataview.wx.MouseEvent)[source]

Zoom sur le vertex actif dans le mapviewer

OnMove(event: wx.dataview.wx.MouseEvent)[source]

Déplacement du vecteur actif

OnMoveZone(event: wx.dataview.wx.MouseEvent)[source]

Déplacement de la zone active

OnRotate(event: wx.dataview.wx.MouseEvent)[source]

Rotation du vecteur actif

OnRotateZone(event: wx.dataview.wx.MouseEvent)[source]

Rotation de la zone active

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.

OnReverse(event: wx.dataview.wx.MouseEvent)[source]

Renverse le vecteur courant

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é

Onsurface(e: wx.dataview.wx.MouseEvent)[source]

Calcul de la surface du vecteur actif

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.

Oncreatebin(event: wx.dataview.wx.MouseEvent)[source]

Création d’un canal sur base de 3 parallèles

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

verify_activevec()[source]

Vérifie si un vecteur actif est défini, si ‘None’ affiche un message

Return :

True if self.active_vector is None False otherwise

verify_activezone()[source]

Vérifie si une zone active est définie, si ‘None’ affiche un message

Return :

True if self.active_zone is None False otherwise