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.
Four focused tracks: PDAL Pipelines for execution architecture, Point Cloud Standards for binary, classification, and CRS fundamentals, Ground & Terrain Models for SMRF/PMF filtering and DTM/DSM rasters, and Batch & Cloud Automation for containerised, S3-backed, orchestrated pipelines.
Newest here: streaming-mode execution for tiles larger than the machine, programmable Python filters when no stage does what you need, COPC and cloud-native formats, canopy height models, and tile indexing, buffering and merging.
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.
What you'll find here
Four 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.
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...
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:...
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...
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 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…
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,...
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…
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...
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,...
Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization
--- title: "Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization" description:...
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…
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...
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...
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…
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...
SMRF Ground Classification in PDAL
--- title: "SMRF Ground Classification in PDAL" description: "How the Simple Morphological Filter (filters.smrf) classifies ground returns in PDAL —...
PMF Ground Classification in PDAL
--- title: "PMF Ground Classification in PDAL" description: "Using the Progressive Morphological Filter (filters.pmf) in PDAL to classify ground...
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...
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...
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...