[pdal] Surface modeling

Andreas Yankopolus andreas at yank.to
Thu Apr 29 14:00:43 PDT 2021


Bradley,

Thanks for your example pipeline. Running it here with pdal 2.2.0, it prints “Parser error = !” when sent a pipeline with these statements. I’ve tracked the error messages to the blocks with "Classification = 6 WHERE …” and "Classification = 4 WHERE  …”.

These blocks look valid based one the filters.assign description: https://pdal.io/stages/filters.assign.html

For generating the surface height raster, I’d think to write the point with the highest Z value for the raster pixel. For surface type, perhaps label the raster pixel with the most common point classification. I’ll post a first cut.

Cheers,

Andreas


> On Apr 28, 2021, at 11:44, Bradley Chambers <brad.chambers at gmail.com> wrote:
> 
> On Wed, Apr 28, 2021 at 9:34 AM Howard Butler <howard at hobu.co <mailto:howard at hobu.co>> wrote:
> 
> > On Apr 27, 2021, at 4:11 PM, Andreas Yankopolus <andreas at yank.to <mailto:andreas at yank.to>> wrote:
> 
> > 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.
> 
> Your mileage will certainly vary, but one pipeline that was derived from this notebook (https://github.com/rockestate/point-cloud-processing/blob/master/notebooks/point-cloud-processing.ipynb <https://github.com/rockestate/point-cloud-processing/blob/master/notebooks/point-cloud-processing.ipynb>) is shared below. It classifies noise, ground, vegetation, and building returns. In my experience, it does a reasonable job but can still require fine tuning of the parameters.
> 
> [
>     {
>         "type": "filters.assign",
>         "assignment": "Classification[:]=0"
>     },
>     {
>         "type": "filters.elm"
>     },
>     {
>         "type": "filters.smrf",
>         "where": "Classification != 7"
>     },
>     {
>         "type": "filters.hag_delaunay"
>     },
>     {
>         "type": "filters.outlier",
>         "multiplier": 16,
>         "class": 18,
>         "where": "!(Classification==2 || Classification==7)"
>     },
>     {
>         "type": "filters.approximatecoplanar",
>         "where": "HeightAboveGround >= 2 && !(Classification==2 || Classification==7 || Classification==18)"
>     },
>     {
>         "type": "filters.outlier",
>         "class": 18,
>         "where": "!(Classification==2 || Classification==7 || Classification==18) && Coplanar == 1"
>     },
>     {
>         "type": "filters.assign",
>         "value": "Classification=6 WHERE (Coplanar == 1 && !(Classification == 7 || Classification==18))"
>     },
>     {
>         "type": "filters.covariancefeatures",
>         "mode": "normalized",
>         "feature_set": "Dimensionality",
>         "knn": 45
>     },
>     {
>         "type": "filters.assign",
>         "value": "Classification=4 WHERE (!(Classification==2 || Classification==6) && HeightAboveGround >= 3.0 && Planarity < 0.8 && Scattering > 0.1 && Verticality > 0.1)"
>     }
> ]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20210429/65be3b52/attachment.html>


More information about the pdal mailing list