For LiDAR analysts, Python GIS devs, surveying teams

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.

stage chainingdata cleaning

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.

reprojectionCRS

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.

LAS headerslaspy

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.

parallelperformance

Understanding ASPRS Classification Codes

Complete reference for LAS classification codes 0–255: schema versions, laspy validation, vectorized remapping, and QA automation.

ASPRSclassification

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.

outlier removalfilters

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.

DTMwriters.gdal

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.

Dockerreproducible

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.

streamingmemory

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.

canopy heighthag_nn

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.

COPCcloud-native

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.

tilingseams

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.

Attribute Mapping in PDAL:... Memory Management in Python LiDAR... Parallel Execution in PDAL:... Pipeline Filtering Logic in PDAL:... PDAL Pipeline Validation: Catch... PDAL Stage Chaining: Build... Streaming Mode Execution in PDAL Programmable Python Filters in... Spatial Reprojection in PDAL:...

Point Cloud Standards

LAS/LAZ structure, ASPRS classification, coordinate reference systems, point density metrics, and metadata/header integrity.

COPC and Cloud-Native Point Cloud... ASPRS Classification Codes: Python... Coordinate Reference Systems in... LAS/LAZ File Structure: Binary... Metadata & Header Sync in Python... Point Density Metrics in Python...

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... DSM Generation from LiDAR with... DTM Raster Generation with PDAL Hillshade, Slope and Aspect from... SMRF Ground Classification in PDAL PMF Ground Classification 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... S3 Cloud Storage I/O with PDAL PDAL Docker Containers for... Tile Indexing, Buffering and... AWS Batch Processing for PDAL...

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...

Mapping Custom Attributes in PDAL...

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:...

LAZ vs Uncompressed LAS for Iterative... Diagnosing PDAL Out-of-Memory Failures

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...

Optimizing PDAL for Multi-Core... Parallel Tile Processing with...

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...

Applying Statistical Outlier Filters in...

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...

Validating PDAL Pipelines in CI

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…

Reordering PDAL Stages for Speed Chaining PDAL Stages for Data Cleaning

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,...

Running a PDAL Pipeline in Streaming... Splitting a Blocking Pipeline into Two... Which PDAL Filters Break Streaming Mode

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…

Adding a New Dimension from a Python... Debugging and Profiling filters.python Writing a filters.python Stage with...

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…

Handling Vertical Datum Transforms in... Reprojecting Point Clouds from UTM to...

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...

Converting LAZ Tiles to COPC with PDAL COPC vs EPT for Web Delivery Querying a COPC File by Bounds and...

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,...

Remapping Vendor Classification Codes to... Understanding ASPRS Classification Codes...

Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization

--- title: "Coordinate Reference Systems in Python LiDAR Workflows: Validation, Transformation & Header Synchronization" description:...

Fixing CRS Mismatches in Point Clouds... Setting a Vertical CRS on a Point Cloud

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…

How to Parse LAS Headers with Python Reading and Writing LAS VLRs with PDAL Converting LAS to LAZ with PDAL

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...

Syncing Metadata Between LAS 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...

Calculating Point Density for Drone... Measuring Ground Point Density Under...

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...

Computing Height Above Ground with... Rasterizing a Canopy Height Model from... Extracting Individual Tree Heights from...

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…

Building a DSM from First Returns DTM vs DSM: Which Surface Model to...

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...

Building a Seamless DTM Mosaic from... Filling NoData Voids in DTM Rasters Generating a DTM GeoTIFF with... IDW vs Mean Interpolation for DTM Gaps

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...

Exporting Hillshade from a LiDAR DTM Generating Slope and Aspect Rasters with...

SMRF Ground Classification in PDAL

--- title: "SMRF Ground Classification in PDAL" description: "How the Simple Morphological Filter (filters.smrf) classifies ground returns in PDAL —...

Benchmarking SMRF Against Reference... Tuning SMRF for Forested Terrain SMRF vs PMF for Dense Urban LiDAR

PMF Ground Classification in PDAL

--- title: "PMF Ground Classification in PDAL" description: "Using the Progressive Morphological Filter (filters.pmf) in PDAL to classify ground...

Classifying Ground with the Progressive... Tuning PMF Window and Slope Parameters

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.