LiDAR & point clouds
LAS, LAZ and COPC files: returns, classes, density, and the surfaces you derive from them.
A point cloud is a few hundred million rows of x, y, z, intensity, return number and class. Almost nothing here is about the points themselves — it is about the surfaces you derive from them and the classification you inherited.
One pulse can produce several returns: the first strikes the canopy, the last reaches the ground. A digital surface model is built from the first returns, a terrain model from the returns somebody classified as ground, and the difference between the two is the canopy height. Which means the ground classification in the file is doing more work than any code you write, and it was made by a vendor whose parameters you do not have.
The concepts cover LAS and LAZ structure, returns, classes and density; the how-to guides read, filter, tile and rasterise; and the fixes cover the coordinate, scale and offset problems that make a cloud land in the wrong place.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Read a LAS or LAZ File in Python with laspy
- How to Filter a Point Cloud by Class and Return Number
- How to Clip and Tile a Point Cloud in Python
- How to Create a DTM from LiDAR Ground Points in Python
- How to Create a Canopy Height Model from LiDAR
- How to Rasterise a Point Cloud to a Grid in Python
Show every how-to guide in this topic
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
Related topics
Subjects that keep coming up alongside this one, most overlap first.