[Liblas-commits] libpc: attempt to answer some questions and fill
in more stuff
liblas-commits at liblas.org
liblas-commits at liblas.org
Fri Feb 4 12:02:00 EST 2011
details: http://hg.liblas.orglibpc/rev/114842894daf
changeset: 2:114842894daf
user: Howard Butler <hobu.inc at gmail.com>
date: Fri Feb 04 11:01:53 2011 -0600
description:
attempt to answer some questions and fill in more stuff
diffstat:
doc/notes/apps.txt | 24 ++++++++++++++++++++----
doc/notes/goals.txt | 2 +-
doc/notes/io.txt | 15 +++++++++++++++
doc/notes/misc.txt | 40 +++++++++++++++++++++++++++-------------
doc/notes/stages.txt | 13 +++++++++++--
5 files changed, 74 insertions(+), 20 deletions(-)
diffs (222 lines):
diff -r b909e7ef42a9 -r 114842894daf doc/notes/apps.txt
--- a/doc/notes/apps.txt Thu Feb 03 15:37:07 2011 -0800
+++ b/doc/notes/apps.txt Fri Feb 04 11:01:53 2011 -0600
@@ -14,6 +14,10 @@
Converts from one file format to another, optionally with some (relatively
simple) filtering or processing.
+Input format detection should reside in the app, not in the library. There
+will be no equivalent meta GDALOpen-like function to do this work for you.
+Too expensive and too easy to screw up.
+
pcinfo
======
@@ -28,10 +32,16 @@
* summary statistics about the points
+* the plain text format should be reStructured text if possible to allow
+ a user to retransform the output into whatever they want with ease
+
+* the xml format needs an XSD or XMLSchema for validation.
+
The dump should go the stdout, but options should be provided to dump to
XML or similar, where it makes sense to do so.
+
pcview
======
@@ -40,19 +50,25 @@
wants to do something too.
+
+
pcindex
=======
-Creates a spatial index for a point cloud. (Could be moved into pc2pc.)
+Creates a serialized spatial index for a point cloud. First pass at this
+is to repurpose liblas::Index which supports serialization.
pcmosaic
========
-Merges multiple files together. (Could be moved into pc2pc.)
+Merges multiple files together.
+Does mosaic imply something that merge doesn't?
-pcdemosaic
+
+pctile
==========
-Chops one file up into multiple files. (Could be moved into pc2pc.)
+Chops one file up into multiple files. This could be the liblas::Chipper,
+leaf nodes of an index like an R-tree, or a simple quadtree build.
diff -r b909e7ef42a9 -r 114842894daf doc/notes/goals.txt
--- a/doc/notes/goals.txt Thu Feb 03 15:37:07 2011 -0800
+++ b/doc/notes/goals.txt Fri Feb 04 11:01:53 2011 -0600
@@ -12,7 +12,7 @@
2. It is a library which provides APIs for reading, writing, and processing
point cloud data of various formats. As GDAL is to 2D pixels, libPC is
- to 3D points.
+ to xD points.
3. It has high performance, yet remains flexible. We recognize that
these two goals will conflict at times and will weigh the tradeoffs
diff -r b909e7ef42a9 -r 114842894daf doc/notes/io.txt
--- a/doc/notes/io.txt Thu Feb 03 15:37:07 2011 -0800
+++ b/doc/notes/io.txt Fri Feb 04 11:01:53 2011 -0600
@@ -9,12 +9,27 @@
* Is C's unix-style I/O generally faster/slower/same-as C++'s stream-style
I/O?
+
+ They should be equivalent if used "right". Mateusz did a bunch of work
+ on this last summer to check for comparison. std::fstream was found to be
+ sensitive to setting its buffer, but that was it.
* Are boost's streams any faster than the native compiler's streams?
+No. Boost's streams provide a consistent interface to the native compiler's
+streams. They also provide additional functionality like a gzip stream, etc.
+
* Is it worth providing our own simple unix-style binary stream interface,
which we use internally, and then letting the choice of underlying
implementation be made up at the app level? (LizardTech does this.
Maybe GDAL too sometimes?)
+
+ I'd rather offload this to boost's iostreams if we can. What do we
+ get for the extra pain of adding another layer here? Can we have the boost
+ take on the maintenance of this layer for us?
* Do we want to spend some time investigating this issue up front?
+
+ libLAS does not use boost's streams because it didn't have the boost
+ dependency until later in its life. To do it again, I would assume boost
+ was in the mix and would use boost's iostreams by default.
diff -r b909e7ef42a9 -r 114842894daf doc/notes/misc.txt
--- a/doc/notes/misc.txt Thu Feb 03 15:37:07 2011 -0800
+++ b/doc/notes/misc.txt Fri Feb 04 11:01:53 2011 -0600
@@ -41,20 +41,24 @@
libPC will use these libraries:
-* GDAL - for spatial reference support (and rasterization)
-* Boost - for C++ library needs, such as streams or parsers
+* Boost - for C++ library needs, such as streams or parsers (required)
-* laszip - for compressed LAS support
+* libxml2 - Schema description, validation, and serialization (required)
-* MrSID - for LizardTech's MG4 lidar format
+* GDAL - for spatial reference support (and rasterization) (optional)
-* Oracle - ...?
+* libLAS - for LAS (compressed if available to libLAS) support. (optional)
+
+* MrSID - for LizardTech's MG4 lidar format (optional)
+
+* Oracle - OCI (optional)
+
+* libspatialindex - Rtree support, maybe quadtree if someone implements it for libspatialindex (optional)
* *others?*
-Some of these libraries may be required (such as Boost); some may be
-configurable at build time, such as laszip.
+Some of these libraries may be required (such as Boost).
Project Dependencies - Builds/Infrastructure
@@ -95,11 +99,11 @@
We will support these platforms initially, corresponding to what the
developers are using regularly:
-* Windows - VS2010 (32- and 64-bit)
+* Windows - VS2010 (32- and 64-bit) - 2008 32-bit
-* Linux - *gcc x.y?*
+* Linux - gcc 4.x+
-* Mac - *stuff*
+* Mac - gcc 4.0.1+
By virtue of CMake, other platforms may be supported such as VS 2008 or
Solaris, but we aren't targeting those specifically.
@@ -123,10 +127,16 @@
* filenames must match class name
-* *layout/organization of source tree?*
+* *layout/organization of source tree?*
+
+ public headers in ./include
+ private headers alongside source files in src/
-* *use of namespaces?*
+* *use of namespaces?* (copy boost)
+ libpc::
+ libpc::detail::
+
libPC Position on (Non)conformance
==================================
@@ -152,6 +162,10 @@
option would never be the default behavior, however.
*We should also have a guiding principle about files that are conformant but
-which lie, such as the extents in the header being wrong. Specifically, is
+which lie, such as the extents in the header being wrong.
+
+Specifically, is
our default path to propagate the wrong info or to helpfully correct it on
the fly?*
+
+ Do both, but more often than not try to helpfully correct it.
diff -r b909e7ef42a9 -r 114842894daf doc/notes/stages.txt
--- a/doc/notes/stages.txt Thu Feb 03 15:37:07 2011 -0800
+++ b/doc/notes/stages.txt Fri Feb 04 11:01:53 2011 -0600
@@ -21,7 +21,11 @@
* MrSID/MG4
-* Oracle database
+* Oracle Point Cloud
+
+* BAG, Fledermaus, other bathy formats
+
+* Pointools?
* Auto - creates points randomly, or as a constant pattern; used only for
testing
@@ -40,7 +44,9 @@
* MrSID/MG4
-* Oracle database
+* Oracle Point Cloud
+
+* BAG, Fledermaus, other bathy formats
* Null - dumps output to /dev/null; used only for testing
@@ -59,6 +65,9 @@
* Cache - maintains points in memory, only reaching "behind" to the previous
stage if the point needed is not in the cache
+* Expression engine - "classification=3;0<=x<=100"
+
+* Transformation engine - "intensity=classification * 2; x = x*3.2808399"
Other
=====
More information about the Liblas-commits
mailing list