[pdal] Point cloud viewer in QGIS

Martin Dobias wonder.sk at gmail.com
Mon Jul 6 12:00:18 PDT 2020


Hi Howard

On Mon, Jul 6, 2020 at 6:22 PM Howard Butler <howard at hobu.co> wrote:
>
> > So far it looks like it would be a good idea to use the PDAL library
> > for I/O - it supports a variety of formats through a common
> > abstraction which would make our life much easier.
>
> I agree. You could also give users the ability to load PDAL Pipelines (search for the PipelineExecutor C++ class) that would enable them to directly load and process PDAL data much like a GDAL VRT. Another point that QGIS should worry about is streamable or bulk data processing with PDAL. Both are supported.

Good point - support for pipelines would add a lot of flexibility.

I have seen that some PDAL modules support streaming, but I have not
played with streamed reading of data yet.


> It has been my observation that point cloud rendering features radiate most quickly out of Potree into the other softwares. This includes implementations of EDL, dynamic sizing and fill approaches, and the frustum culling approach.

Cool - great to know. I have also found a new paper [1] and
implementation [2] from Markus Schütz that does not seem to require
building index beforehand, but it will be probably good to first focus
on a rendering approach already proven by time.


> I'm excited to see movement toward PDAL's usage in QGIS. As you embark on the process of its development, don't hesitate to ask questions and for things you might need.

Thanks!

> PDAL was not developed with support for a dynamic live GUI as a primary use case, and you are likely to run into a few friction points (Progress reporting is one thing I immediately know about. Threading situations would be another). We'll see what we can do.

Right, progress reporting and user-initiated cancellation of data I/O
would be important, and if not supported by PDAL yet, those would be
high on our wish list of features. If you have some thoughts on how
that should be architected, I would be interested in learning more -
and possibly I would try to work on that.

Regarding threading, what can be expected - is the library reentrant
(multiple threads may call PDAL at once, but not using the same data)
or are there some bits of code that would prohibit any parallel calls
(e.g. having a global library state (caches / error messages)
unprotected by mutexes) ?

One more question that comes to my mind is how PDAL deals with API /
ABI stability - is there any promise that the C++ API will not change
between versions? Or are there any plans for a stable C API like
provided in GDAL or GEOS?

Regards
Martin

[1] https://www.cg.tuwien.ac.at/research/publications/2020/schuetz-2020-PPC/
[2] https://github.com/m-schuetz/Skye


More information about the pdal mailing list