[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