Getting Started ======================= How to guide on installing PCHandler Dependencies ------------ Core Libraries - `NumPy `_ — Fast N-dimensional arrays and numerical operations that power core point-cloud computations. - `GeoPandas `_ — High-level geospatial data structures used for GIS-style processing and analysis. - `Shapely `_ — Geometric predicates and operations for working with 2D geometry (buffers, intersections, etc.). - `alphashape `_ — Alpha-shape computation to derive concave hulls/outlines from point sets. Point Cloud I/O - `plyfile `_ — Read/write PLY files (ASCII/Binary) with attribute preservation. - `laspy `_ — Read/write LAS/LAZ lidar point cloud formats, including point attributes. Visualization / 3D Operations - `Open3D `_ — Visualization and selected 3D geometry utilities for point clouds and meshes. - `py4dgeo `_ - Library containing other geomonitoring algorithms from Heidelberg University. Utilities - `joblib `_ — Simple parallelism and caching for speeding up CPU-bound workflows. Optional GPU Acceleration - `cuDF `_ — GPU DataFrame operations to accelerate tabular point attributes and transforms. - `cuSpatial `_ — GPU-accelerated spatial/trajectory operations for large-scale geospatial workloads. - `cuML `_ — GPU-accelerated machine learning algorithms useful for clustering, outlier detection, and similar tasks. Install from GitHub ------------------- .. code-block:: bash # (optional) create and activate a virtual environment python -m venv .venv source .venv/bin/activate # on Windows: .venv\Scripts\activate # clone and install git clone https://github.com/your-org/pchandler.git cd pchandler python -m pip install -e . # editable install for development Quick Example ------------- To ensure PCHandler has been properly installed, you can try the following code: .. code-block:: python import numpy as np from pchandler import PointCloudData offset = [10_000_000, -500_000, 20_000] # Create an (N, 3) array of XYZ coordinates points = np.random.rand(10, 3) * 1000 - 500 + offset # Initialize the point cloud pcd = PointCloudData(points) # (Optional) confirm basic properties print(f"{points.shape=}") # (100, 3) print(f"{pcd.xyz=}") print(f"{pcd.numerical_optimization_shift=}")