wolfhece.lazviewer.laz_viewer

Module Contents

class wolfhece.lazviewer.laz_viewer.Colors_Lazviewer[source]

Bases: enum.Enum

Inheritance diagram of wolfhece.lazviewer.laz_viewer.Colors_Lazviewer

Generic enumeration.

Derive from this class to define new enumerations.

ORTHO_2012_2013 = 2013[source]
ORTHO_2015 = 2015[source]
ORTHO_2021 = 2021[source]
ORTHO_2023 = 2023[source]
ORTHO_2006_2007 = 2006[source]
CODE_2013 = 0[source]
CODE_2023 = 2[source]
CODE_2021_2022 = 3[source]
FROM_FILE = 1[source]
class wolfhece.lazviewer.laz_viewer.Classification_LAZ[source]
test_wx()[source]
init_2013()[source]
init_2021_2022()[source]
init_2023()[source]
callback_colors()[source]

Update from wx GUI

callback_destroy()[source]
interactive_update_colors()[source]

set GUI

wolfhece.lazviewer.laz_viewer.choices_laz_colormap() list[str][source]
class wolfhece.lazviewer.laz_viewer.xyz_laz(fn: str = '', format: Literal[las, numpy] = 'las', to_read: bool = True)[source]

Classe de gestion des fichiers XYZ+Class issus d’un gros fichier laz

property size[source]
split(dir_out: str, nbparts: int)[source]

Split file into ‘nb’ parts along X and Y

get_bounds()[source]
test_bounds(bounds: list[list[float, float], list[float, float]])[source]
read_bin_xyz()[source]

Lecture d’un fichier binaire de points XYZ+classification généré par la fonction sort_grid_np Le format est une succession de trame binaire de la forme :

nbpoints (np.int32) X[nbpoints] (np.float32) ou (np.float64) Y[nbpoints] (np.float32) ou (np.float64) Z[nbpoints] (np.float32) Classif[nbpoints] (np.int8)

Il est possible de récupérer une matrice numpy shape(nbtot,4) ou un objet laspy via l’argument ‘out’ (par défaut à ‘las’)

to_las()[source]
class wolfhece.lazviewer.laz_viewer.xyz_laz_grid(mydir: str)[source]

Gestion d’un grid de données LAZ

_read_gridinfo(gridinfo: str) list[source]
scan(bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]

Find all points in bounds

find_files_in_bounds(bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]

Find all files in bounds

_split_xyz(dirout: str, nbparts: int = 10)[source]

Split XYZ file into ‘nb’ parts along X and Y

_sort_grid_np(fn_in: str, fn_out: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]], gridsize: list[int], chunksize: int = 5000000, force_format=np.float64)[source]

Create .bin files from .laz

class wolfhece.lazviewer.laz_viewer.xyz_laz_grids(dir_grids: str, create: bool = False)[source]

Ensemble de grids

scan(bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]]) numpy.ndarray[source]

Scan all LAZ to find used data

Parameters:

bounds (Union[tuple[tuple[float,float],tuple[float,float]], list[list[float, float],list[float, float]]]) – [[xmin,xmax], [ymin,ymax]]

Returns:

np.ndarray

find_files_in_bounds(bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]
copy_files_in_bounds(bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]], dirout: str)[source]
read_dir(dir_grids)[source]
scan_around(xy: shapely.geometry.LineString | list[list[float], list[float]], length_buffer=5.0)[source]

Récupération de points LAZ autour de la section

plot_laz(xy: shapely.geometry.LineString | list[list[float], list[float]], length_buffer=5.0, figax: tuple[matplotlib.figure.Figure, matplotlib.axes.Axes] = None, show=False)[source]

Dessin des points LAZ sur un graphique Matplotlib

plot_laz_wx(xy: shapely.geometry.LineString | list[list[float], list[float]], length_buffer=5.0, show=True)[source]

Dessin des points LAZ sur un graphique Matplotlib

create_from_laz(dir_laz: str, shape: str = None, ds: float = 50, force_format=np.float64)[source]
create_bounds_shape(dir_laz: str, out_shape: str)[source]

Create shape from laz files

class wolfhece.lazviewer.laz_viewer.Wolf_LAZ_Data(idx: str = '', plotted: bool = False, mapviewer=None, need_for_wx: bool = False)[source]

Bases: wolfhece.drawing_obj.Element_To_Draw

Inheritance diagram of wolfhece.lazviewer.laz_viewer.Wolf_LAZ_Data

Base class for LAZ data which can be imported in Pydraw.Mapviewer.

property associated_color[source]
property selected[source]
property xyz_selected: numpy.ndarray[source]

Extract the selected points from the viewer.

Filter the selected points by codes if _select_only_codes is not empty.

property code_selected: numpy.ndarray[source]
property num_points[source]

Number of points

property nb_points[source]

Number of points - alias of num_points

property nb[source]

Number of points - alias of num_points

property right[source]

Camera Right vector

property mvp[source]

Model View Projection matrix

See https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93projection_matrix for details

property eye[source]

eye/camera position

property lookat[source]

Lookat position

property phi[source]

Azimuth angle (radians)

property theta[source]

Elevation angle (radians)

property r[source]

Distance from lookat

property point_size[source]

Point size in viewer – user units

property xyz[source]
property codes[source]
property xmin[source]
property xmax[source]
property ymin[source]
property ymax[source]
property data[source]

Full data array (x,y,z,code)

property bounds[source]
serialize()[source]

Serialize class : data and attributes

deserialize(data: dict)[source]

Deserialize class : data and attributes

saveas(fn: str)[source]

Save class : data and attributes

load(fn: str)[source]

Load class : data and attributes

merge(other: Wolf_LAZ_Data)[source]

Merge two Wolf_LAZ_Data objects

filter_data(codes: list[int])[source]

Filter data by codes

bg_color(value)[source]
bg_color_top(value)[source]
bg_color_bottom(value)[source]
floor_level(value)[source]
floor_color(value)[source]
show_grid(value: bool)[source]
show_axis(value: bool)[source]
show_info(value: bool)[source]
force_view(x, y, z=-1)[source]

Force lookat position

_eye_pos()[source]

Compute eye pos from lookat and r, phi, theta.

phi is the azimuth angle (radians) theta is the elevation angle (radians) r is the distance from lookat

codes_unique()[source]

Only unique codes

create_viewer(color_code: Colors_Lazviewer = None, classification: Classification_LAZ = None)[source]

Create a viewer for las data

interactive_update_colors()[source]

Create a frame to interactively update colors

set_colors()[source]

Set colors in viewer –> using attributes method (not colormap)

set_classification(classification: str = None)[source]

Set classification of LAZ data

TODO : Check if 2020-2022 SPW campaign is the same classification as 2013

find_minmax(update=False)[source]

Find min and max of data

from_grid(grid: xyz_laz_grids, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]

Create data from grid LAZ

from_file(fn: str)[source]

Create data from LAZ file

descimate(step: int)[source]

Descimate data.

Conserve only one point every ‘step’ points.

Parameters:

step – step of descimation

get_data_class(key: int)[source]

Get data with a specific code

add_pose_in_memory(key_time: float = 1.0)[source]

Add current pose in flight memory

play_flight(tlim=[-np.inf, np.inf], repeat=False, interp='cubic_natural')[source]

Play flight memory

set_times(times: numpy.ndarray)[source]

Set times for flight memory

set_times_increment(increment: float)[source]
get_times()[source]
record_flight(dirout: str, tlim=[-np.inf, np.inf], interp='cubic_natural', fps=24, prefix: str = 'laz_', ext: str = 'png')[source]

Record flight memory in multiple images

FIXME : FREEZE the app –> to debug

save_flight(fn: str)[source]

Write flight memory to file JSON

load_flight(fn: str)[source]

Load flight memory from file JSON

_callback_props()[source]
_callback_destroy_props()[source]
_create_props()[source]

Create properties Wolf_Param for LAZ data

_set_new_xls()[source]

Create a new Excel grid for selected data

OnPlot_histogram(event: wx.MouseEvent)[source]

Plot histogram of selected data

OnPlot_histogram_grid(event: wx.MouseEvent)[source]

Plot histogram of selected data

_plot_histogram_grid()[source]

Histogram ONLY of selected data in grid.

The data are extracted based on the first column of the grid untile an empty cell is found.

_plot_histogram()[source]
_selection2vector()[source]

FIXME: must use RANSAC to compute a segment from the selected points

_OnEdit_Selection(event: wx.MouseEvent)[source]

Get selection from viewer and create a XLS grid

_edit_selection()[source]
_update_viewer()[source]

Update the viewer with properties

_fill_props(full: bool = False)[source]

Fill properties from attributes

show_properties()[source]

Surcharged method (see Element_To_Draw) to show properties from MapViewer

wolfhece.lazviewer.laz_viewer.find_pointsXYZ(xyz: numpy.ndarray, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]]) numpy.ndarray[source]
wolfhece.lazviewer.laz_viewer.find_points(las: laspy.LasData, xb: list[float, float], yb: list[float, float]) laspy.LasData[source]

Get arrays which indicate invalid X, Y, or Z values

wolfhece.lazviewer.laz_viewer.read_laz(fn: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]] = None) numpy.ndarray | laspy.LasData[source]

Lecture d’un fichier LAZ, LAS ou NPZ

wolfhece.lazviewer.laz_viewer.xyzlaz_scandir(mydir: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]

Scan for XYZ files

wolfhece.lazviewer.laz_viewer.laz_scandir(mydir: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]]) list[laspy.LasData][source]

Scan directory and treat .laz files

wolfhece.lazviewer.laz_viewer.clip_data_xyz(dir_in: str, fn_out: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]])[source]

Get data and write zip numpy file

wolfhece.lazviewer.laz_viewer.clip_data_laz(fn_in: str, fn_out: str, bounds: tuple[tuple[float, float], tuple[float, float]] | list[list[float, float], list[float, float]], chunksize: int = 5000000)[source]
wolfhece.lazviewer.laz_viewer.get_concat_h(im1: PIL.Image.Image, im2: PIL.Image.Image)[source]

Concatenate 2 images horizontally

wolfhece.lazviewer.laz_viewer.get_concat_v(im1: PIL.Image.Image, im2: PIL.Image.Image)[source]

Concatenate 2 images vertically

wolfhece.lazviewer.laz_viewer.get_Orthos_Walonmap(bounds, fn, cat='IMAGERIE/ORTHO_2012_2013', size=3000)[source]

Récupération des orthos depuis Walonmap fn = filename sans extension –> .png sera ajouté automatiquement

catégories possibles :
  • ‘IMAGERIE/ORTHO_2012_2013’

  • ‘IMAGERIE/ORTHO_2015’

  • ‘IMAGERIE/ORTHO_2021’

  • ‘IMAGERIE/ORTHO_2006_2007’

wolfhece.lazviewer.laz_viewer.get_colors(las: laspy.LasData, which_colors: Colors_Lazviewer, imsize=2000, fname='', palette_classif: Classification_LAZ = None)[source]
wolfhece.lazviewer.laz_viewer.myviewer(las: numpy.ndarray | list[laspy.LasData] | laspy.LasData, which_colors: Colors_Lazviewer, fname='', palette_classif: Classification_LAZ = None)[source]

Get viewer for las data

wolfhece.lazviewer.laz_viewer.grids[source]