wolfhece.PyVertexvectors

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

class wolfhece.PyVertexvectors.Triangulation(fn='', pts=[], tri=[], idx: str = '', plotted: bool = True, mapviewer=None, need_for_wx: bool = False)[source]

Bases: wolfhece.drawing_obj.Element_To_Draw

Inheritance diagram of wolfhece.PyVertexvectors.Triangulation

Base class of element to add into WolfMapViewer or another GUI

valid_format()[source]
as_polydata() pyvista.PolyData[source]
from_polydata(poly: pyvista.PolyData)[source]
clip_surface(other, invert=True, subdivide=0)[source]
get_mask(eps=1e-10)[source]

Teste si la surface de tous les triangles est positive

Retire les triangles problématiques

import_from_gltf(fn='')[source]
export_to_gltf(fn='')[source]
saveas(fn='')[source]
Binary ‘.TRI’ format on disk is, little endian :
  • int32 for number of points

  • int32 as 64 ou 32 for float64 or float32

  • VEC3 (float64 or float32) for points

  • int32 for number of triangles

  • VEC3 uint32 for triangles

read(fn: str)[source]

Read a binary ‘.TRI’ file

reset_plot()[source]
plot(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

Plot data in OpenGL context

find_minmax(force)[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

import_dxf(fn)[source]
class wolfhece.PyVertexvectors.vectorproperties(lines: list[str] = [], parent: vector = None)[source]

Vector properties

used: bool[source]
color: int[source]
width: int[source]
style: int[source]
alpha: int[source]
closed[source]
filled: bool[source]
legendvisible: bool[source]
transparent: bool[source]
flash: bool[source]
legendtext: str[source]
legendrelpos: int[source]
legendx: float[source]
legendy: float[source]
legendbold: bool[source]
legenditalic: bool[source]
legendunderlined: bool[source]
legendfontname[source]
legendfontsize: int[source]
legendcolor: int[source]
extrude: bool = False[source]
myprops: wolfhece.PyParams.Wolf_Param[source]
init_extra()[source]

Init extra properties –> not compatible with VB6, Fortran codes

Useful for Python UI, OpenGL legend, etc.

get_extra() list[float, float, int, float, str, bool][source]

Return extra properties

set_extra(linesextra: list[float, float, int, float, str, bool] = None)[source]

Set extra properties

load_extra(lines: list[str]) int[source]

Load extra properties from lines

save_extra(f: io.TextIOWrapper)[source]

Save extra properties to opened file

save(f: io.TextIOWrapper)[source]

Save properties to opened file

Pay attention to the order of the lines and the format to be compatible with VB6, Fortran codes

load_unload_image()[source]

Load an attached image

fill_property(props: wolfhece.PyParams.Wolf_Param = None, updateOGL: bool = True)[source]

Callback for the properties UI

When the ‘Apply’ button is pressed, this function is called

_defaultprop()[source]

Create the default properties for the vector and the associated UI

destroyprop()[source]

Nullify the properties UI

Destroy has been called, so the UI is not visible anymore

show()[source]

Show the properties

Firstly, set default values Then, add the current properties to the UI

show_properties()[source]

Show the properties – alias of show()

hide_properties()[source]

Hide the properties

_convert_fontname2int(fontname: str) int[source]
_convert_int2fontname(id: int) str[source]
class wolfhece.PyVertexvectors.vector(lines: list = [], is2D=True, name='NoName', parentzone: zone = None, fromshapely=None)[source]

Objet de gestion d’informations vectorielles

Une instance ‘vector’ contient une liste de ‘wolfvertex’

property nbvertices: int[source]
property used: bool[source]
property has_interior[source]

Return True if the vector has an interior

myname: str[source]
parentzone: zone[source]
nbvertices: int[source]
myvertices: list[wolfhece.PyVertex.wolfvertex][source]
myprop: vectorproperties[source]
xmin: float[source]
ymin: float[source]
xmax: float[source]
ymax: float[source]
mytree: TreeListCtrl[source]
myitem: wx.core.TreeItemId[source]
get_mapviewer()[source]

Retourne l’instance de la mapviewer

show_properties()[source]

Show the properties

hide_properties()[source]

Hide the properties

get_normal_segments() numpy.ndarray[source]

Return the normals of each segment

The normals are oriented to the left

get_center_segments() numpy.ndarray[source]

Return the center of each segment

import_shapelyobj(obj)[source]

Importation d’un objet shapely

get_bounds(grid: float = None)[source]
Return tuple with :
  • (lower-left corner), (upper-right corner)

If you want [[xmin,xmax],[ymin,ymax]], use get_bounds_xx_yy() instead.

get_bounds_xx_yy(grid: float = None)[source]
Return tuple with :
  • (xmin,xmax), (ymin, ymax)

If you want [[lower-left corner],[upper-right corner]], use get_bounds() instead.

get_mean_vertex(asshapelyPoint=False)[source]

Return the mean vertex

highlighting(rgb=(255, 0, 0), linewidth=3)[source]

Mise en évidence

withdrawal()[source]

Mise en retrait

save(f)[source]

Sauvegarde sur disque

reverse()[source]

Renverse l’ordre des vertices

isinside(x, y)[source]

Teste si la coordonnée (x,y) est dans l’objet – en 2D

asshapely_pol() shapely.geometry.Polygon[source]

Conversion des coordonnées en Polygon Shapely

asshapely_pol3D() shapely.geometry.Polygon[source]

Conversion des coordonnées en Polygon Shapely

asshapely_ls3d() shapely.geometry.LineString[source]

Conversion des coordonnées en Linestring Shapely

asshapely_ls() shapely.geometry.LineString[source]

Conversion des coordonnées en Linestring Shapely

asshapely_mp() shapely.geometry.MultiPoint[source]

Conversion des coordonnées en Multipoint Shapely

asnparray()[source]

Conversion des coordonnées en Numpy array – en 2D

return : np.ndarray – shape = (nb_vert,2)

asnparray3d()[source]

Conversion des coordonnées en Numpy array – en 3D

return : np.ndarray – shape = (nb_vert,3)

prepare_shapely()[source]

Conversion Linestring Shapely et rétention de l’objet afin d’éviter de multiples appel par ex. dans une boucle

projectontrace(trace)[source]

Projection du vecteur sur une trace (type ‘vector’)

Return :

Nouveau vecteur contenant les infos de position sur la trace et d’altitude (s,z)

parallel_offset(distance=5.0, side='left')[source]

The distance parameter must be a positive float value.

The side parameter may be ‘left’ or ‘right’. Left and right are determined by following the direction of the given geometric points of the LineString.

intersection(vec2=None, eval_dist=False, norm=False, force_single=False)[source]

Calcul de l’intersection avec un autre vecteur

Return :
  • le point d’intersection

  • la distance (optional) le long de ‘self’

Utilisation de Shapely

reset()[source]

Remise à zéro

add_vertex(addedvert: list[wolfhece.PyVertex.wolfvertex] | wolfhece.PyVertex.wolfvertex)[source]

Ajout d’un wolfvertex Le compteur est automatqiuement incrémenté

add_vertices_from_array(xyz: numpy.ndarray)[source]

Ajout de vertices depuis une matrice numpy – shape = (nb_vert,2 ou 3)

count()[source]

Retroune le nombre de vertices

For compatibility with older version of the code –> use ‘nbvertices’ property instead Must be removed in the future

close_force()[source]

Force la fermeture du ‘vector’

Commence par vérifier si le premier point possède les mêmes coords que le dernier Si ce n’est pas le cas, on ajoute un wolfvertes

self.closed -> True

_nblines()[source]

routine utile pour l’initialisation sur base de ‘lines’

verify_s_ascending()[source]

Vérifie que les points d’un vecteur sont énumérés par distances 2D croissantes

Utile notamment pour le traitement d’interpolation de sections en travers afin d’éviter une triangulation non valable suite à des débords

find_nearest_vert(x, y)[source]

Trouve le vertex le plus proche de la coordonnée (x,y) – en 2D

insert_nearest_vert(x, y)[source]

Insertion d’un nouveau vertex au plus proche de la coordonnée (x,y) – en 2D

find_minmax(only_firstlast: bool = False)[source]

Recherche l’extension spatiale du vecteur

Parameters:

only_firstlast – si True, on ne recherche que les coordonnées du premier et du dernier vertex

get_subpolygons()[source]

Return a list of polygons from the vector

If the vector has no interior, the list contains the whole vector as a polygon

plot(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

Plot OpenGL

plot_legend(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

Plot OpenGL

Legend is an image texture

plot_image(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

plot attached images

_get_textfont()[source]

Retunr a ‘Text_Infos’ instance for the legend

add2tree(tree: TreeListCtrl, root)[source]

Ajout de l’objte à un TreeListCtrl wx

unuse()[source]

L’objet n’est plus à utiliser

use()[source]

L’objet n’est plus à utiliser

fillgrid(gridto: wolfhece.CpGrid.CpGrid)[source]

Remplissage d’un CpGrid

updatefromgrid(gridfrom: wolfhece.CpGrid.CpGrid)[source]

Mise à jour depuis un CpGrid

get_s2d()[source]

calcul et retour des positions curvilignes 2D

get_s3d()[source]

calcul et retour des positions curvilignes 3D

get_sz(cumul=True)[source]

Calcule et retourne la distance horizontale cumulée ou non de chaque point vis-à-vis du premier point

Utile pour le tracé de sections en travers ou des vérifications de position

update_lengths()[source]
Mise à jour de la longueur
  • en 2D

  • en 3D

Retient également les longueurs de chaque segment

get_segment(s, is3D, adim=True, frombegin=True)[source]

Retrouve le segment associé aux paramètres passés

_refine2D(ds)[source]

Raffine un vecteur selon un pas ‘ds’

Return :

Liste Python avec des Point Shapely

split(ds, new=True)[source]

Création d’un nouveau vecteur sur base du découpage d’un autre et d’un pas spatial à respecter Le nouveau vecteur contient tous les points de l’ancien et des nouveaux sur base d’un découpage 3D

interpolate(s, is3D=True, adim=True, frombegin=True)[source]

Interpolation linéaire à une abscisse curviligne ‘s’ donnée

Calcul par défaut :
  • en 3D

  • en adimensionnel

substring(s1, s2, is3D=True, adim=True, eps=0.01)[source]

Récupération d’une fraction de vector entre ‘s1’ et ‘s2’ Nom similaire à la même opération dans Shapely mais qui ne gère, elle, que le 2D

get_values_linked_polygon(linked_arrays: list, getxy=False) dict[source]

Retourne les valeurs contenue dans le polygone

linked_arrays : liste Python d’objet matriciels WolfArray (ou surcharge)

get_all_values_linked_polygon(linked_arrays, getxy=False) dict[source]

Retourne toutes les valeurs contenue dans le polygone –> utile au moins pour les résultats WOLF2D

linked_arrays : liste Python d’objet matriciels WolfArray (ou surcharge)

get_all_values_linked_polyline(linked_arrays, getxy=True) dict[source]

Retourne toutes les valeurs sous la polyligne –> utile au moins pour les résultats WOLF2D

linked_arrays : liste Python d’objet matriciels WolfArray (ou surcharge)

get_values_on_vertices(curarray)[source]

Récupération des valeurs sous les vertices et stockage dans la coordonnée ‘z’

get_values_linked(linked_arrays: dict, refine=True, filter_null=False)[source]

Récupération des valeurs dans les matrices liées sous les vertices et stockage dans la coordonnée ‘z’ Possibilité de raffiner la discrétisation pour obtenir au moins une valeur par maille

plot_linked(fig, ax, linked_arrays: dict)[source]

Graphique Matplolib de valeurs dans les matrices liées

plot_mpl(show=False, forceaspect=True, fig: matplotlib.figure.Figure = None, ax: matplotlib.axes.Axes = None, labels: dict = {})[source]

Graphique Matplolib du vecteur

deepcopy_vector(name: str = None, parentzone: str = None)[source]

Return a deep copy of the vector.

set_legend_to_centroid(text: str = '', visible: bool = True)[source]

Positionne la légende au centre du vecteur

class wolfhece.PyVertexvectors.zone(lines: list[str] = [], name: str = 'NoName', parent: Zones = None, is2D: bool = True, fromshapely: shapely.geometry.LineString | shapely.geometry.Polygon | shapely.geometry.MultiLineString | shapely.geometry.MultiPolygon = None)[source]

Objet de gestion d’informations vectorielles

Une instance ‘zone’ contient une listde de ‘vector’ (segment, ligne, polyligne, polygone…)

property nbvectors[source]
myname: str[source]
nbvectors: int[source]
myvectors: list[vector][source]
xmin: float[source]
ymin: float[source]
xmax: float[source]
ymax: float[source]
selected_vectors: list[tuple[vector, float]][source]
mytree: TreeListCtrl[source]
myitem: wx.core.TreeItemId[source]
get_mapviewer()[source]

Retourne l’instance de la mapviewer

import_shapelyobj(obj)[source]

Importation d’un objet shapely

get_vector(keyvector: int | str) vector[source]

Retrouve le vecteur sur base de son nom ou de sa position Si plusieurs vecteurs portent le même nom, seule le premier est retourné

export_shape(fn: str = '')[source]

Export to shapefile using GDAL/OGR

save(f: io.TextIOWrapper)[source]

Ecriture sur disque

save_extra(f: io.TextIOWrapper)[source]

Ecriture des options EXTRA

load_extra(lines: list[str]) int[source]

Lecture des options EXTRA

add_vector(addedvect: vector, index=-99999, forceparent=False)[source]

Ajout d’une instance ‘vector’

Parameters:
  • addedvect – instance ‘vector’ à ajouter

  • index – position d’insertion

  • forceparent – True = forcer le parent à être la zone dans lequel le vecteur est ajouté

count()[source]

Compte le nombre de vecteurs

For compatibility with older versions –> Must be removed in future version

_nblines()[source]

Utile pour init par ‘lines’

find_minmax(update=False, only_firstlast: bool = False)[source]

Recherche de l’emprise spatiale de toute la zone

Parameters:
  • update – True = mise à jour des valeurs ; False = utilisation des valeurs déjà calculées

  • only_firstlast – True = recherche uniquement sur les premiers et derniers points de chaque vecteur

prep_listogl()[source]

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

plot(prep: bool = False, sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

Graphique OpenGL

Parameters:

prep – True = préparation des listes OpenGL ; False = affichage direct

select_vectors_from_point(x: float, y: float, inside=True)[source]

Sélection du vecteur de la zone sur base d’une coordonnée (x,y) – en 2D

inside : True = le point est contenu ; False = le point le plus proche

add2tree(tree: TreeListCtrl, root)[source]

Ajout à un objet TreeListCtrl

unuse()[source]

Ne plus utiliser

use()[source]

A utiliser

asshapely_ls()[source]

Retroune la zone comme MultiLineString Shaely

prepare_shapely()[source]

Converti l’objet en MultiLineString Shapely et stocke dans self.multils

get_selected_vectors(all=False)[source]

Retourne la liste du/des vecteur(s) sélectionné(s)

add_parallel(distance)[source]

Ajoute une parallèle au vecteur actif

parallel_active(distance)[source]

Ajoute une parallèle ‘left’ et ‘right’ au vecteur actif

createmultibin(nb=None, nb2=0) Triangulation[source]

Création d’une triangulation sur base des vecteurs Tient compte de l’ordre

:param nb : nombre de points de découpe des vecteurs :param nb2 : nombre de points en perpendiculaire

return :
  • instance de ‘Triangulation’

createmultibin_proj(nb=None, nb2=0) Triangulation[source]

Création d’une triangulation sur base des vecteurs par projection au plus proche du veteur central Tient compte de l’ordre

:param nb : nombre de points de découpe des vecteurs :param nb2 : nombre de points en perpendiculaire

return :
  • instance de ‘Triangulation’

create_polygon_from_parallel(ds: float, howmanypoly=1) None[source]

Création de polygones depuis des vecteurs parallèles

La zone à traiter ne peut contenir que 3 vecteurs

Une zone de résultat est ajouté à l’objet

ds : desired size/length of the polygon, adjusted on the basis of a number of polygons rounded up to the nearest integer howmanypoly : Number of transversal polygons (1 = one large polygon, 2 = 2 polygons - one left and one right)

create_sliding_polygon_from_parallel(poly_length: float, ds_sliding: float, farthest_parallel: float, interval_parallel: float = None, intersect=None, howmanypoly=1, eps_offset: float = 0.25)[source]

Create sliding polygons from a support vector.

“poly_length” is the length of the polygons. “ds_sliding” is the sliding length.

If “ds_sliding” is lower than “ds”, the polygons are overlapping. If “ds_sliding” is greater than “ds”, the polygons are separated. If “ds_sliding” is equal to “ds”, the polygons are adjacent.

The zone to be processed can only contain 1 vector. A result zone is added to the object.

The sliding polygons are created on the basis of the left and right parallels of the central vector.

“farthest_parallel” is the farthest parallel. “interval_parallel” is the distance between each parallels. If not defined, it is equal to “farthest_parallel”.

Lateral sides of the polygons are defined by projecting the points/vertices of the support vector onto the parallels, from the nearest to the farthest.

The method first creates the parallels. Then, it intersects the parallels with the constraints defined in the “intersect” zone. The intersection is done with an offset defined by “eps_offset”.

Parameters:
  • poly_length – size/length of the polygon, adjusted on the basis of a number of polygons rounded up to the nearest integer

  • ds_sliding – sliding length

  • farthest_parallel – position of the parallels

  • interval_parallel – parallel intervals (internal computation)

  • intersect – zone class containing constraints

  • howmanypoly – number of transversal polygons (1 = one large polygon, 2 = 2 polygons - one left and one right)

  • eps_offset – space width impose to the “intersect”

get_values_linked_polygons(linked_arrays, stats=True) dict[source]

Récupération des valeurs contenues dans tous les polygones de la zone

Retourne un dictionnaire contenant les valeurs pour chaque polygone

Les valeurs de chaque entrée du dict peuvent contenir une ou plusieurs listes en fonction du retour de la fonction de l’objet matriciel appelé

get_all_values_linked_polygon(linked_arrays, stats=True, key_idx_names: Literal[idx, OpenGL.GL.name] = 'idx', getxy=False) dict[source]

Récupération des valeurs contenues dans tous les polygones de la zone

Retourne un dictionnaire contenant les valeurs pour chaque polygone

ATTENTION :

Il est possible de choisir comme clé soit l’index du vecteur dans la zone, soit non nom Si le nom est choisi, cela peut aboutir à une perte d’information car il n’y a pas de certitude que les noms de vecteur soient uniques –> il est nécessaire que l’utilisateur soit conscient de cette possibilité

Les valeurs de chaque entrée du dict peuvent contenir une ou plusieurs listes en fonction du retour de la fonction de l’objet matriciel appelé

_stats_values(vals: dict)[source]

Compute statistics on values dict resulting from ‘get_values_linked_polygons’

plot_linked_polygons(fig: matplotlib.figure.Figure, ax: matplotlib.axes.Axes, linked_arrays: dict, linked_vec: dict[str, Zones] = None, linestyle: str = '-', onlymedian: bool = False, withtopography: bool = True, ds: float = None)[source]

Création d’un graphique sur base des polygones

Chaque polygone se positionnera sur base de la valeur Z de ses vertices
  • façon conventionnelle de définir une longueur

  • ceci est normalement fait lors de l’appel à ‘create_polygon_from_parallel’

  • si les polygones sont créés manuellement, il faut donc prendre soin de fournir l’information adhoc ou alors utiliser l’rgument ‘ds’

ATTENTION : Les coordonnées Z ne sont sauvegardées sur disque que si le fichier est 3D, autrement dit au format ‘.vecz’

Parameters:
  • fig – Figure

  • ax – Axes

  • linked_arrays – dictionnaire contenant les matrices à lier – les clés sont les labels

  • linked_vec – dictionnaire contenant les instances Zones à lier – Besoin d’une zone et d’un vecteur ‘trace/trace’ pour convertir les positions en coordonnées curvilignes

  • linestyle – style de ligne

  • onlymedian – affiche uniquement la médiane

  • withtopography – affiche la topographie

  • ds – pas spatial le long de l’axe

reset_listogl()[source]

Reset OpenGL lists.

Force deletion of the OpenGL list. If the object is newly plotted, the lists will be recreated.

deepcopy_zone(name: str = None, parent: str = None)[source]

Return a deep copy of the zone

show_properties()[source]

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

hide_properties()[source]

Hide the properties window

_callback_destroy_props()[source]

Callback to destroy the properties window

_callback_prop()[source]

Callback to update properties

set_legend_to_centroid()[source]

Set the legend to the centroid of the zone

class wolfhece.PyVertexvectors.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 = '', plotted: bool = True, mapviewer=None, need_for_wx: bool = False, bbox: shapely.geometry.Polygon = None, find_minmax: bool = True, shared: bool = False)[source]

Bases: wx.dataview.wx.Frame, wolfhece.drawing_obj.Element_To_Draw

Inheritance diagram of wolfhece.PyVertexvectors.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…)

property nbzones[source]
tx: float[source]
ty: float[source]
myzones: list[zone][source]
treelist: TreeListCtrl[source]
xls: wolfhece.CpGrid.CpGrid[source]
force_unique_zone_name()[source]

Check if all zones have a unique id

If not, the id will be set to the index of the zone in the list

import_shapefile(fn: str, bbox: shapely.geometry.Polygon = None)[source]

Import shapefile by using geopandas

Shapefile == 1 zone

export_to_shapefile(filename: str)[source]

Export to shapefile.

The first vector of each zone will be exported.

If you want to export all vectors, you have to use “export_shape” of the zone object.

FIXME: Add support of data fields

export_active_zone_to_shapefile(filename: str)[source]

Export the active_zone to shapefile.

import_gdb(fn: str, bbox: shapely.geometry.Polygon = None)[source]

Import gdb by using geopandas and Fiona

import_gpkg(fn: str, bbox: shapely.geometry.Polygon = None)[source]

Import gdb by using geopandas and Fiona

set_mapviewer()[source]

Recherche d’une instance WolfMapViewer depuis le parent

colorize_data(colors: dict[str:list[int]]) None[source]

Colorize zones based on a dictionary of colors

Zone’s name must be the key of the dictionary

set_width(width: int) None[source]

Change with of all vectors in all zones

get_zone(keyzone: int | str) zone[source]

Retrouve la zone sur base de son nom ou de sa position Si plusieurs zones portent le même nom, seule la première est retournée

import_dxf(fn, imported_elts=['POLYLINE', 'LWPOLYLINE', 'LINE'])[source]

Import d’un fichier DXF en tant qu’objets WOLF

find_nearest_vector(x: float, y: float) vector[source]

Trouve le vecteur le plus proche de la coordonnée (x,y)

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

check_plot()[source]

L’objet doit être affiché

Fonction principalement utile pour l’objet WolfMapViewer et le GUI

uncheck_plot(unload=True)[source]

L’objet ne doit pas être affiché

Fonction principalement utile pour l’objet WolfMapViewer et le GUI

saveas(filename: str = '')[source]

Sauvegarde sur disque

filename : chemin d’accès potentiellement différent de self.filename

si c’est le cas, self.filename est modifié

OnClose(e)[source]

Fermeture de la fenêtre

add_zone(addedzone: zone, forceparent=False)[source]

Ajout d’une zone à la liste

find_minmax(update=False, only_firstlast: bool = False)[source]

Trouve les bornes des vertices pour toutes les zones et tous les vecteurs

:param update : si True, force la MAJ des minmax dans chaque zone; si False, compile les minmax déjà présents :param only_firstlast : si True, ne prend en compte que le premier et le dernier vertex de chaque vecteur

plot(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]

Dessine les zones

select_vectors_from_point(x: float, y: float, inside=True)[source]
Sélection de vecteurs dans chaque zones sur base d’une coordonnée

–> remplit la liste ‘selected_vectors’ de chaque zone

inside : si True, teste si le point est contenu dans le polygone; si False, sélectionne le vecteur le plus proche

show_properties(parent=None, forceupdate=False)[source]

Affichage des propriétés des zones

parentsoit 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

hide_properties()[source]

Hide the properties window

showstructure(parent=None, forceupdate=False)[source]

Affichage de la structure des zones

parentsoit 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

init_ui()[source]

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

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.

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.

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

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

Ajoute de nouveaux vertices au vecteur courant Fonctionne par clicks souris via le GUI wx de WolfMapViewer

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

Renverse le vecteur courant

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

Ajout d’une parallèle au vecteur courant via le bouton adhoc

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

Ajoute des vertices au vecteur courant et crée des parallèles gauche-droite

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

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

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

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.

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

Enregistrement d’une image pour tous les vecteurs

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

Création de polygones depuis des paralèles contenues dans la zone active

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

Create sliding polygons from a support vector

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

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

save_images_fromvec(dir='')[source]

Sauvegarde d’images des vecteurs dans un répertoire

FIXME : pas encore vraiment au point

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

Insertion de vertex dans le vecteur courant

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

Split le vecteur courant selon un pas spatial déterminé

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

evaluate_s(vec: vector = None, dialog_box=True)[source]

Calcule la position curviligne du vecteur encodé

Le calcul peut être mené en 2D ou en 3D Remplissage du tableur dans la 5ème colonne

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

Onupdatevertices(event)[source]

Mie à jour des vertices sur base du tableur

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

Ajout de lignes au tableur

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

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

Suppression de la zone courante

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

get_selected_vectors(all=False)[source]

all = True : Récupération et renvoi des vecteurs sélectionnés dans les zones all = False : Récupération et renvoi du vecteur le plus proche

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

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

Suppression du vecteur actif

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

unuse()[source]

Rend inutilisé l’ensemble des zones

use()[source]

Rend utilisé l’ensemble des zones

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

Coche/Décoche un ékement de la treelist

_callback_destroy_props()[source]
_callback_prop()[source]
_edit_all_properties()[source]

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

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

Activate_vector(object: 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: zone)[source]

Mémorise l’objet passé en argument comme zone active

Pousse la même information dans l’objet parent s’il existe

xls_active_vector()[source]

Remplit le tableur

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

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

deepcopy_zones(name: str = None)[source]

Return the deep copy of the current Zones (a new object).

class wolfhece.PyVertexvectors.Grid(size: float = 1000.0, ox: float = 0.0, oy: float = 0.0, ex: float = 1000.0, ey: float = 1000.0, parent=None)[source]

Bases: Zones

Inheritance diagram of wolfhece.PyVertexvectors.Grid

Grid to draw on the mapviewer.

Contains one zone and 3 vectors (gridx, gridy, contour).

Each gridx and gridy vector contains vertices forming a continuous line. Contour vector contains 4 vertices forming a closed polyline.

Drawing all the elements on the mapviewer allows to draw a grid.

Based on spatial extent and resolution.

creategrid(size: float = 100.0, ox: float = 0.0, oy: float = 0.0, ex: float = 1000.0, ey: float = 1000.0)[source]