LiDAR ground filtering to a terrain model
A real IGN LiDAR HD tile goes in; ground points, a graded ground filter and a 0.5 m terrain model come out. laspy, Open3D and a Cloth Simulation Filter, checked against IGN’s own ground class. About 7 seconds on a laptop CPU.
The code
Public, no email needed. Read it, fork it, run it, break it.
lidar_ground_to_dtm.pyRead, thin, index, ground filter, grade, DTM, height above ground.
The data and the reference output
Too big to paste out of an article, so tell me where to send them.
lidar_hd_tile.laz300 x 300 m of IGN LiDAR HD, 3,830,133 points with IGN’s classes, 21 MB.dtm.tifThe 0.5 m terrain model (GeoTIFF, EPSG:2154) the script should reproduce.ground.lazThe 1,409,542 points the filter called ground, IGN’s class kept on each.
Data: IGN, LiDAR HD point cloud, tile LHD_FXX_0584_6264 (Lambert-93, IGN69), cropped to 300 x 300 m. Licence Ouverte / Open Licence 2.0 (Etalab).
Where should I send them?
One email, and the download links appear right here. You also get them in your inbox so you can come back to this any time.
Here they are
Yours to keep. Run the pipeline on this scene first to reproduce every number in the article, then point it at something of your own.
The same links are in your inbox. If nothing arrives, check spam, then mail me and I will send them by hand.
3D Data Science with Python
Building Accurate Digital Environments with 3D Point Cloud Workflows
This kit is one pipeline. The book is the discipline underneath them: 690 pages from the Python foundations through point cloud processing, meshing and the engineering that keeps a 3D workflow standing up in production. If the script above makes sense and you want the structure they came from, that is where it lives.
See the book or buy it on O’ReillyThese are the materials for LiDAR ground filtering to a terrain model, one of the tutorials I publish on Medium and on learngeodata.eu. Every kit lives at learngeodata.eu/materials/.