[Liblas-devel] Squeeze me

Howard Butler hobu.inc at gmail.com
Mon Mar 8 13:29:03 EST 2010


All,

I would like to announce an upcoming development effort to bring Martin Isenburg's laszip [1] [2] [3] to libLAS.  I'll let Martin explain laszip algorithms, benefits, and performance in more detail, but this email is going to outline the development effort within libLAS and describe how the pieces are going to hook together.

Over the past couple of months, I have been laying the groundwork for this effort by internally refactoring a number of elements.  The first is the internal LAS reader and writers were reimplemented to behave as a few independent units rather than a monolithic class for each format file type (1.0 file, 1.1 file, etc).  Instead of liblas::detail::writer10, we now have something like liblas::detail::writer::Header and liblas::detail::writer::Point.  This decoupling allows a developer to implement their own point writer but still use our existing header writer.

The mechanism by which this will work in the upcoming release are the new ReaderI and WriterI interfaces.  We will implement ReaderI and WriterI classes that will work with the laszip code to compress and decompress LAS data through the regular libLAS interface.  A few of the details have yet to be worked out, and I would like to hear some feedback on our proposal.

First, a LAS file that has been compressed with laszip is much like a regular LAS file except the points have been compressed.  The header would be very much the same as a regular LAS file with a few exceptions.  Our current plan is to set the high bit on the point format id of the header so that instead of format 0, 1, 2, 3, ... we'd now have 128, 129, 130, ... as their compressed doppelgänger.  This would hopefully prevent any unaware client from attempting to read into the point data.  Second, we would add a few liblas.org VLR records that would describe some parameters of the compression (chunk size, verification bits, algorithm version, and so on).  The combination of the VLR records plus the point format high bit would trigger libLAS to use the laszip-enabled readers and writers.  

The laszip code has been released as LGPL, and this prevents inclusion of it directly in libLAS source tree unless we were to make that LGPL as well (I'm not in favor of this at all).  Our current thinking is to initially allow a user to include support for it at compile time.  We hope to have the integration work done soon, but I would like to get your feedback on the effort and hear if we're planning to do something really silly before we do it.  

Is seamless, lossless compression of LAS data through a libLAS interface very appealing?

Howard

[1] http://www.cs.unc.edu/~isenburg/lastools/download/laszip_README.txt
[2] https://lidarbb.cr.usgs.gov/index.php?showtopic=8455
[3] http://hg.liblas.org/zip


More information about the Liblas-devel mailing list