[pdal] Point cloud viewer in QGIS

Howard Butler howard at hobu.co
Mon Jul 6 14:31:20 PDT 2020



> On Jul 6, 2020, at 2:29 PM, Martin Dobias <wonder.sk at gmail.com> wrote:
> 
> On Mon, Jul 6, 2020 at 9:07 PM Howard Butler <howard at hobu.co> wrote:
>> 
>> No plan for a PDAL C API. Just extra stuff to manage for little benefit. PDAL's C++ API has been quite stable since about 1.6 or 1.7 release. More specifically, if you use higher level APIs like the PipelineManager or PipelineExecutor, they will insulate you from API changes. We have done our best to preserve pipeline behavior and syntax throughout releases, as this is the real definition of PDAL activity. This also conveniently gives other language implementors (Python, Java, Julia, Matlab) a mechanism to drive PDAL without having to deeply implement a large API surface.
> 
> Is there a way for me to tell which APIs are high level and which
> aren't? For example, classes like LasReader, PointTable, PointViewSet?

The PyPipeline usage in https://github.com/PDAL/python/tree/master/pdal <https://github.com/PDAL/python/tree/master/pdal> is a good one to follow, along with the PyArray one that i/o's back and forth between Numpy. You don't need the Numpy bits, but this should show you the major items you should touch. We do need a tutorial on this topic too.

> 
> I am a bit worried that without guaranteed API stability we may run
> into trouble easily - even safely looking changes such as adding a new
> private member variable or a new virtual method may change ABI and
> then cause crashes if a newer version of PDAL would be released and
> dependent QGIS code would not get recompiled... For example Qt library
> has policies (like using d-pointers everywhere) and extensive tests to
> make sure the ABI does not get broken between releases...

Do you foresee users swapping in PDAL versions underneath you? Bas has been tracking our ABI stability with Debian's toolchain. That could be one place to see the history of how we have been changing.

As a C++ library user, it is your responsibility to encapsulate your usage of PDAL. If the C++ API never gets to change, nothing is going to improve. That said, we haven't changed it very much recently, as I've said, and as time goes on it is going to be harder to do so because of all of the PDAL Stages (and external plugins) that have implemented the API. 

We have removed stages as part of new version releases. Users should get a proper error that a stage is not found in that case. 

Howard

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20200706/c823cb24/attachment-0001.html>


More information about the pdal mailing list