Codes


Software

RodeFox


A tool for point cloud visualization and processing.

Platform: Windows

Installer coming soon.


Open source projects

Individual tree delineation from 3D point clouds


This project implements a lightweight and easy-to-use point-based method for individual tree delineation from 3D point cloud data obtained by airborne laser scanning. It provides three implementations: pure C/C++, Python sequential, and Python parallel (multi-core) versions. Input: ASCII .xyz files of tree points. Output: ASCII .xyz files with per-point tree IDs and RGB colors.

Figures illustrate the input and output of individualization results of a patch of forest trees.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/TreeSeparation

Extracting ungulate trails in wetlands from airborne LiDAR point clouds


A four-stage C/C++ pipeline for detecting animal pathways in marsh ecosystems (Oostvaardersplassen) from AHN4 airborne laser scanning data. Stages: (1) pre-processing and tiling, (2) near-terrain point filtering, (3) Digital Terrain Model (DTM) generation, and (4) trail extraction. Built with CMake (Linux, macOS, Windows); depends on LAStools and nanoflann. Input: .las/.laz point cloud files. Output: clipped tiles, filtered datasets, DTMs, and extracted trail data.

Topology-cleaned trail graph of the Oostvaardersplassen marsh. Red nodes mark junctions and endpoints; blue lines are trail segments (edges) derived from the extracted trail point cloud.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/Extracting-ungulate-trails-in-wetlands-using-3D-point-clouds-obtained-from-airborne-laser-scanning

Vegetation metrics from 3D LiDAR point clouds


A set of lightweight, easy-to-use Jupyter Notebooks to compute key vegetation metrics from 3D point clouds obtained by airborne laser scanning (ALS). Supports both local Python environments and Google Colab cloud execution. Input: .las/.laz point cloud files. Output: computed vegetation metrics and visualizations.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/LiDAR_Vegetation_Metrics

Tree classification and individualization in marsh areas


Automated extraction and individualization of trees and shrubs from 3D point cloud data acquired by airborne laser scanning, targeting marsh ecosystems (e.g., Oostvaardersplassen). Implemented in C/C++ with CMake for cross-platform builds (Linux, macOS, Windows). Two modules: TreeClassification (classifies ALS points into trees/shrubs vs. other) and TreeIndividualization (delineates individual tree crowns via vertical slicing and spatial clustering). Input: .las/.laz point cloud files. Output: classified and individualized tree data in XYZ format.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/Tree_Classification_and_Individualization_In_Marsh_Area

Re-tiling and clipping of large-scale LiDAR point clouds


C/C++ utilities for two common pre-processing tasks on large LAS/LAZ point cloud datasets. Retiling: subdivides large files into smaller tiles either by tile count (X×Y grid) or by tile dimensions. Clipping: filters point clouds against ESRI shapefile polygon boundaries. Built with CMake (cross-platform) and depends on LAStools and shapelib. Input: .las/.laz files and .shp polygons. Output: retiled or clipped .las/.laz files.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/Retile_Clip_LAZ

Robustness of LiDAR vegetation metrics to varying point densities


A multi-language workflow for systematically testing how LiDAR vegetation metrics behave under varying point densities. Three stages: (1) R scripts generate polygons for randomly placed plots of different sizes; (2) C/C++ (VS2022) computes vegetation metrics from LiDAR point clouds; (3) Python produces boxplots comparing metrics across plot sizes and point densities. Datasets and results are available on Zenodo.

For detailed codes and more testing datasets, please refer to the below repository:

Jinhu-Wang/Testing-the-robustness-of-LiDAR-vegetation-metrics-to-varying-point-densities