[pdal] Surface modeling

Howard Butler howard at hobu.co
Wed Apr 28 07:34:26 PDT 2021



> On Apr 27, 2021, at 4:11 PM, Andreas Yankopolus <andreas at yank.to> wrote:
> 
> I’m trying to convert LPC data into surface-height and surface-type rasters, where the surface height captures building/tree height and surface type differentiates between natural and man-made surfaces (similar to the USGS NLCD, but higher resolution). The goal is to use these rasters for radio propagation prediction. I’m using USGS 3DEP LPC data, which has tagged ground returns.
> 
> I’m looking at the first return for surface height, but it clearly needs filtering to remove birds, power lines, and other spurious data. Perhaps there are metrics on return strength, covariance, etc. that could be a basis for removing initial returns.

There are multiple "noise" filters in PDAL that are sensitive to a bunch of different configurations. https://pdal.io/stages/filters.html#noise Combined with filters like filters.iqr, filters.mad,  filters.range and filters.covariancefeatures, you could construct some very sophisticated processing to suss out the kinds of noise that you care to be sensitive too.


> The dimensionality features seem a possibility for differentiating trees and buildings. Worst case, I can use NLCD data here.

One of the HAG filters combined the many neighborhood-type filters would be a good place to start here. 

> Is there previous work in these areas that I can build on with PDAL? I’m also looking at LAStools, which appears to have binaries that could be replicated with PDAL pipelines.

I like to say that "PDAL is something you can use to build LAStools" about its scope in relation to that product. PDAL isn't pre-canned workflows for attacking a few kinds of LiDAR processing challenges. It's a bunch of building blocks for processing point cloud data in the context of ETL pipelines. 

That said, once constructed, those workflows can be quite valuable. Fancy classification pipelines haven't typically been shared freely, however. 

> Ground detection with PDAL and void filling with gdal_fillnodata is giving me a reasonable terrain-height raster. That’s the easiest part of the problem.

filters.smrf is another way to give you a good ground surface if you don't believe the classifications in the 3DEP data. You shouldn't believe the classifications in older 3DEP data ;)

Howard


More information about the pdal mailing list