Python LiDAR & Point Cloud Workflows
Design and chain PDAL pipelines, classify ground returns, generate DTMs and DSMs, and automate batch processing — backed by reproducible code patterns, standards-compliant data handling, and production-grade QC.
Five focused tracks: PDAL Pipelines for execution architecture, Point Cloud Standards for binary, classification, accuracy and CRS fundamentals, Ground & Terrain Models for SMRF, PMF and CSF filtering and DTM/DSM rasters, Batch & Cloud Automation for containerised, S3-backed, orchestrated pipelines, and Classification & Features for extracting buildings, trees, power lines and water.
Newest here: classification and feature extraction for buildings, power lines and individual trees, vertical accuracy assessment against survey checkpoints, cloth simulation ground filtering, parameterised pipeline templates, and Dask distributed tile processing.
Start here
The most-useful, code-first guides — copy-paste ready for production LiDAR pipelines.
Chaining PDAL Stages for Data Cleaning
Chain readers, filters, and writers in Python for noise removal, outlier rejection, and classification refinement — with a complete runnable example.
Reprojecting Point Clouds from UTM to WGS84
Reproject LAS/LAZ from UTM to WGS84 with PDAL filters.reprojection, datum handling, header sync, and round-trip validation.
How to Parse LAS Headers with Python
Extract LAS/LAZ header fields with laspy and Python's struct module — version detection, VLR inspection, coordinate scale/offset, and validation.
Optimizing PDAL for Multi-Core Processing
Tune OMP_NUM_THREADS and chunk_size, then orchestrate parallel tile pipelines with Python's ProcessPoolExecutor for maximum throughput.
Understanding ASPRS Classification Codes
Complete reference for LAS classification codes 0–255: schema versions, laspy validation, vectorized remapping, and QA automation.
Applying Statistical Outlier Filters in PDAL
Use filters.outlier (statistical and radius modes) to remove noise points from aerial and terrestrial LiDAR scans, with Python integration and parameter tuning.
Generating a DTM GeoTIFF with writers.gdal
Rasterize classified ground returns into a bare-earth DTM GeoTIFF with PDAL writers.gdal — resolution, interpolation window, and NoData handling explained.
Running PDAL Pipelines in Docker
Pin a reproducible PDAL toolchain in a container, mount tiles, and run pipeline JSON with the official image — the foundation for AWS Batch and Airflow fan-out.
Running a PDAL Pipeline in Streaming Mode
Bound peak memory by the chunk size instead of the file size, then prove it — the change that lets a 6 GB tile run on a 4 GB worker.
Computing Height Above Ground with filters.hag_nn
Per-point canopy heights from a classified cloud, the count and max_distance settings that matter, and the ground-at-zero check that catches a bad classification.
Converting LAZ Tiles to COPC with PDAL
Merge tiles into indexed cloud-native objects a browser can read over range requests — and the four checks to pass before deleting the source.
Buffered Tiling to Avoid Edge Artefacts
Read the tile plus its neighbours, process the buffered extent, write only the nominal one — the pattern behind every seamless tiled LiDAR product.
Extracting Building Footprints from LiDAR
Turn class-6 roof points into clean building polygons: rasterise a mask, polygonise, close gaps, regularise the outline and attach heights.
Segmenting Trees with a Watershed on a CHM
Find treetops with a variable window, grow crowns with a marker-controlled watershed on a canopy height model, and polygonise them with attributes.
Computing RMSEz Against Survey Checkpoints
Fix the sign convention, compute RMSEz, mean error and standard deviation, bootstrap a confidence interval and report accuracy per land-cover group.
Processing LiDAR Tiles with Dask Distributed
Run one PDAL image as scheduler and workers, submit a task per tile from the client, and collect small per-tile results instead of point arrays.
What you'll find here
Five tracks of practical, code-first material aimed at production teams working with airborne, terrestrial, and mobile LiDAR.
PDAL Pipelines
PDAL pipeline architecture, stage chaining, memory and parallel execution, attribute mapping, filtering, reprojection, and validation.
Point Cloud Standards
LAS/LAZ structure, ASPRS classification, coordinate reference systems, point density metrics, and metadata/header integrity.
Ground & Terrain Models
SMRF and PMF ground classification, DTM and DSM raster generation with writers.gdal, interpolation choices, void filling, and hillshade derivation.
Batch & Cloud Automation
Containerised PDAL, AWS Batch tile fan-out, streaming LAZ and COG I/O against S3, and Airflow DAG orchestration for production point cloud pipelines.
Classification & Features
Buildings, power lines, individual trees, water and bridges: segmenting point clouds and training classifiers to extract features from LiDAR.
PDAL Pipelines
PDAL pipeline architecture, stage chaining, memory and parallel execution, attribute mapping, filtering, reprojection, and validation.
Attribute Mapping in PDAL: Translate, Compute & Persist Point Cloud Dimensions
--- title: "Attribute Mapping in PDAL: Translate, Compute & Persist Point Cloud Dimensions" description: "How to translate, derive, and persist point...
Parallel Execution in PDAL: Multi-Core Point Cloud Processing with Python
--- title: "Parallel Execution in PDAL: Multi-Core Point Cloud Processing with Python" description: "Distribute PDAL-driven LiDAR workflows across all...
Memory Management in Python LiDAR & Point Cloud Processing Workflows
--- title: "Memory Management in Python LiDAR & Point Cloud Processing Workflows" description: "Control RAM usage in Python PDAL pipelines:...
PDAL Stage Chaining: Build Multi-Step Point Cloud Pipelines in Python
--- title: "PDAL Stage Chaining: Build Multi-Step Point Cloud Pipelines in Python" description: "How to chain PDAL readers, filters, and writers into…
Pipeline Filtering Logic in PDAL: Attribute, Spatial, and Statistical Filters
--- title: "Pipeline Filtering Logic in PDAL: Attribute, Spatial, and Statistical Filters" description: "Master PDAL pipeline filtering logic with...
PDAL Pipeline Validation: Catch Errors Before Processing Point Clouds
--- title: "PDAL Pipeline Validation: Catch Errors Before Processing Point Clouds" description: "A five-phase Python validation harness for PDAL...
PDAL Pipeline Templating and Parameterization
--- title: "PDAL Pipeline Templating and Parameterization" description: "Stop copying pipeline JSON per project: parameterize PDAL pipelines with...
Programmable Python Filters in PDAL
--- title: "Programmable Python Filters in PDAL" description: "How filters.python hands a PDAL point buffer to a NumPy function, the rules for adding…
Spatial Reprojection in PDAL: Coordinate Transformations for LiDAR Pipelines
--- title: "Spatial Reprojection in PDAL: Coordinate Transformations for LiDAR Pipelines" description: "How to reproject LAS/LAZ point clouds between…
Streaming Mode Execution in PDAL
--- title: "Streaming Mode Execution in PDAL" description: "How PDAL's streaming execution model moves points through a pipeline in fixed-size chunks,...
Point Cloud Standards
LAS/LAZ structure, ASPRS classification, coordinate reference systems, point density metrics, and metadata/header integrity.
COPC and Cloud-Native Point Cloud Formats
--- title: "COPC and Cloud-Native Point Cloud Formats" description: "What Cloud Optimized Point Cloud adds to a LAZ file, how a bounded query becomes...
Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization
--- title: "Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization" description:...
ASPRS Classification Codes: Python Workflows for Point Cloud Processing
--- title: "ASPRS Classification Codes: Python Workflows for Point Cloud Processing" description: "Complete guide to reading, validating,...
LAS/LAZ File Structure: Binary Layout, Python Parsing & Production Ingestion
--- title: "LAS/LAZ File Structure: Binary Layout, Python Parsing & Production Ingestion" description: "A practitioner's guide to the LAS/LAZ binary…
laspy and NumPy Workflows for LAS Data
--- title: "laspy and NumPy Workflows for LAS Data" description: "Work with LAS and LAZ directly in Python using laspy 2.x and NumPy: scaled...
Metadata & Header Sync in Python LiDAR Workflows
--- title: "Metadata & Header Sync in Python LiDAR Workflows" description: "How to validate, correct, and reconcile LAS/LAZ header fields, VLRs, and...
Vertical Accuracy Assessment for LiDAR
--- title: "Vertical Accuracy Assessment for LiDAR" description: "Measure and report LiDAR vertical accuracy in Python: surveyed checkpoints, TIN…
Point Density Metrics in Python LiDAR Workflows
--- title: "Point Density Metrics in Python LiDAR Workflows" description: "Compute, validate, and normalize point density metrics from LAS/LAZ files...
Ground & Terrain Models
SMRF and PMF ground classification, DTM and DSM raster generation with writers.gdal, interpolation choices, void filling, and hillshade derivation.
Canopy Height Models with filters.hag_nn
--- title: "Canopy Height Models with filters.hagnn" description: "Producing a canopy height model in the point domain: classify ground, compute...
CSF Cloth Simulation Ground Filtering
--- title: "CSF Cloth Simulation Ground Filtering" description: "Classify ground with PDAL filters.csf: how the cloth simulation filter drapes an...
Contour Generation from LiDAR DTMs
--- title: "Contour Generation from LiDAR DTMs" description: "Produce clean contour lines from a LiDAR terrain model in Python: choosing the interval...
DTM Raster Generation with PDAL
--- title: "DTM Raster Generation with PDAL" description: "Turning classified ground returns into a bare-earth Digital Terrain Model GeoTIFF with...
Hillshade, Slope and Aspect from LiDAR DTMs
--- title: "Hillshade, Slope and Aspect from LiDAR DTMs" description: "Deriving hillshade, slope, and aspect rasters from a LiDAR-derived DTM using...
DSM Generation from LiDAR with PDAL
--- title: "DSM Generation from LiDAR with PDAL" description: "Building a Digital Surface Model from LiDAR first returns with PDAL writers.gdal…
PMF Ground Classification in PDAL
--- title: "PMF Ground Classification in PDAL" description: "Using the Progressive Morphological Filter (filters.pmf) in PDAL to classify ground...
SMRF Ground Classification in PDAL
--- title: "SMRF Ground Classification in PDAL" description: "How the Simple Morphological Filter (filters.smrf) classifies ground returns in PDAL —...
Batch & Cloud Automation
Containerised PDAL, AWS Batch tile fan-out, streaming LAZ and COG I/O against S3, and Airflow DAG orchestration for production point cloud pipelines.
Airflow DAG Orchestration for PDAL Workflows
--- title: "Airflow DAG Orchestration for PDAL Workflows" description: "Orchestrating multi-stage LiDAR processing with Apache Airflow — modelling...
AWS Batch Processing for PDAL Point Clouds
--- title: "AWS Batch Processing for PDAL Point Clouds" description: "Running thousands of PDAL tile jobs on AWS Batch — job definitions, array jobs...
Dask Distributed Processing for LiDAR
--- title: "Dask Distributed Processing for LiDAR" description: "Scale PDAL tile processing from one machine to many with Dask distributed: one task...
S3 Cloud Storage I/O with PDAL
--- title: "S3 Cloud Storage I/O with PDAL" description: "Reading and writing LiDAR directly against Amazon S3 in PDAL — the GDAL /vsis3/ and...
PDAL Docker Containers for Reproducible Pipelines
--- title: "PDAL Docker Containers for Reproducible Pipelines" description: "Packaging PDAL, GDAL, PROJ, and the Python bindings into a pinned Docker...
Tile Indexing, Buffering and Merging
--- title: "Tile Indexing, Buffering and Merging" description: "Building a queryable tile index from LiDAR headers, using it to find neighbours for...
Classification & Features
Buildings, power lines, individual trees, water and bridges: segmenting point clouds and training classifiers to extract features from LiDAR.
Building Extraction from LiDAR Point Clouds
--- title: "Building Extraction from LiDAR Point Clouds" description: "Classify roof points to ASPRS class 6 and turn them into footprint polygons...
Machine Learning Point Classification for LiDAR
--- title: "Machine Learning Point Classification for LiDAR" description: "Train a per-point classifier on PDAL-computed geometric features: building...
Individual Tree Segmentation from LiDAR
--- title: "Individual Tree Segmentation from LiDAR" description: "Split a forest canopy into individual trees: local-maximum tree tops,...
Power Line Detection in LiDAR Point Clouds
--- title: "Power Line Detection in LiDAR Point Clouds" description: "Find conductor points with linearity and height, group them into spans, classify...
Water and Bridge Classification in LiDAR
--- title: "Water and Bridge Classification in LiDAR" description: "Classify water to ASPRS class 9 and bridge decks to class 17, then hydro-flatten...
Point Cloud Segmentation with PDAL
--- title: "Point Cloud Segmentation with PDAL" description: "Group points into objects with filters.cluster and filters.dbscan: how Euclidean and…