<div dir="auto">This may be an error. Do please open a ticket. Still, check your output. I think I saw this too and noted that it wasn’t actually a fatal error, and that I actually got the output I expected. Something that needs to be cleaned up regardless. </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 29, 2021 at 16:15 Andrew Bell <<a href="mailto:andrew.bell.ia@gmail.com">andrew.bell.ia@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr">Andreas,<div><br></div><div>You'd need to open a ticket and include your exact pipeline in order to debug this, but I suspect there is an error in your syntax. Still, the error you're getting seems odd.</div></div><br><div class="gmail_quote"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 29, 2021 at 5:01 PM Andreas Yankopolus <<a href="mailto:andreas@yank.to" target="_blank">andreas@yank.to</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div>Bradley,<br><div><br></div><div>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  …”.</div><div><br></div><div>These blocks look valid based one the filters.assign description: <a href="https://pdal.io/stages/filters.assign.html" target="_blank">https://pdal.io/stages/filters.assign.html</a></div><div><br></div><div>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.</div><div><br></div><div>Cheers,</div><div><br></div><div>Andreas</div><div><br></div><div><br><blockquote type="cite"><div>On Apr 28, 2021, at 11:44, Bradley Chambers <<a href="mailto:brad.chambers@gmail.com" target="_blank">brad.chambers@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><div dir="ltr">On Wed, Apr 28, 2021 at 9:34 AM Howard Butler <<a href="mailto:howard@hobu.co" target="_blank">howard@hobu.co</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><br>
> On Apr 27, 2021, at 4:11 PM, Andreas Yankopolus <<a href="mailto:andreas@yank.to" target="_blank">andreas@yank.to</a>> wrote:<br><br>
> 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.<br>
<br>
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. <br>
<br>
That said, once constructed, those workflows can be quite valuable. Fancy classification pipelines haven't typically been shared freely, however.</blockquote><div><br></div><div>Your mileage will certainly vary, but one pipeline that was derived from this notebook (<a href="https://github.com/rockestate/point-cloud-processing/blob/master/notebooks/point-cloud-processing.ipynb" target="_blank">https://github.com/rockestate/point-cloud-processing/blob/master/notebooks/point-cloud-processing.ipynb</a>) 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.</div><div><br></div><div>[<br>    {<br>        "type": "filters.assign",<br>        "assignment": "Classification[:]=0"<br>    },<br>    {<br>        "type": "filters.elm"<br>    },<br>    {<br>        "type": "filters.smrf",<br>        "where": "Classification != 7"<br>    },<br>    {<br>        "type": "filters.hag_delaunay"<br>    },<br>    {<br>        "type": "filters.outlier",<br>        "multiplier": 16,<br>        "class": 18,<br>        "where": "!(Classification==2 || Classification==7)"<br>    },<br>    {<br>        "type": "filters.approximatecoplanar",<br>        "where": "HeightAboveGround >= 2 && !(Classification==2 || Classification==7 || Classification==18)"<br>    },<br>    {<br>        "type": "filters.outlier",<br>        "class": 18,<br>        "where": "!(Classification==2 || Classification==7 || Classification==18) && Coplanar == 1"<br>    },<br>    {<br>        "type": "filters.assign",<br>        "value": "Classification=6 WHERE (Coplanar == 1 && !(Classification == 7 || Classification==18))"<br>    },<br>    {<br>        "type": "filters.covariancefeatures",<br>        "mode": "normalized",<br>        "feature_set": "Dimensionality",<br>        "knn": 45<br>    },<br>    {<br>        "type": "filters.assign",<br>        "value": "Classification=4 WHERE (!(Classification==2 || Classification==6) && HeightAboveGround >= 3.0 && Planarity < 0.8 && Scattering > 0.1 && Verticality > 0.1)"<br>    }<br>]<br></div></div></div>
</div></blockquote></div><br></div>_______________________________________________<br>
pdal mailing list<br>
<a href="mailto:pdal@lists.osgeo.org" target="_blank">pdal@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/pdal" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/pdal</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr">Andrew Bell<br><a href="mailto:andrew.bell.ia@gmail.com" target="_blank">andrew.bell.ia@gmail.com</a></div>
</blockquote></div></div>