What is PDAL?

  • PDAL = Point Data Abstraction Library
  • Open-source toolkit for working with point cloud data
  • Like GDAL, but for point clouds
  • Focused on flexibility and scalability

Challenges Working with LiDAR

  • Large file sizes
  • Complex formats (LAS, LAZ)
  • Need for efficient and reproducible workflows

What Can PDAL Do?

  • Read and write point cloud formats (LAS, LAZ,COCPC, E57, etc.)
  • Filter, transform, and analyze data
  • Pipeline-based workflows
  • Integrate with GIS and other tools

How PDAL Fits into a Workflow

  • Data acquisition –> PDAL processing –> Analysis
  • Emphasis on batch processing and automation
  • For example: reprojecting, filtering out noise and classifying ground points in 500 tiles of USGG 3DEP Lidar.

Basic Anatomy of PDAL

  • Command-line interface (pdal translate, pdal pipeline, pdal info)
  • Pipelines (JSON files that define processing steps)
  • Plugins (filters, readers, writers)
  • python-pdal

PDAL Command-line interface

Examples

Try some of the following

pdal info -h
pdal info --summary your.laz

To parse that mess you can use jq in bash (on linux or mac). If you want to find the bounds for instance.

pdal info --summary your.laz | jq .summary.bounds

I think in Powershell that would be

pdal info --summary bird.laz | ConvertFrom-Json | Select-Object -ExpandProperty summary | Select-Object -ExpandProperty bounds

Reproject something …

pdal translate your.laz your_26911.laz filters.reprojection --filters.reprojection.out_srs="EPSG:26911"

Translate an entire directory of laz files in parallel using the amazing and nearly infallible GNU Parallel (Linux and Mac only, also possible using Windows Subsystem for Linux (WSL)),

ls your_lidar_directory | parallel 'pdal translate your_lidar_directory/{} your_output_directory/{.}_26911.laz filters.reprojection --filters.reprojection.out_srs="EPSG:26911"'

I am not going to discuss pipelines at the moment. We will use them shortly in python-pdal though. Its worth noting that using the pdal pipeline utility is often desirable for simplicity (or to us GNU Parallel with it).