Giter Club home page Giter Club logo

pdal's Introduction

pdal's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdal's Issues

Alternate implementations of PointBuffer?

Hobu suggested it might be nice to make an abstract base class for PointBuffer, so we can derive versions with different kinds of backing stores.

We might need to be careful about inner loop performance effect on the getField() calls, though?

Resolve the initialize() question

Need to establish how initialize works. OK to set some things between ctor and initialize()? If so, which things? Should you be able to change things during pipeline execution? After?

Need tiling writer

We need a mechanism that writes the output to a set of tiles, e.g. by number of points or spatial extent or something.

This might be a class that sort of wraps a given Writer driver.

Needs to be added to pc2pc as well.

FauxReader custom fields

The FauxReader? has the ability to support fields other than x,y,z,t. Need to finish making this work.

pcview improvements

Need to make pcview...

  • support progress metering
  • support all input file types, including pipe xm
  • work under unix
  • colorizer

Document supported configurations

We have a few build configurations now. You can build with or without at least these:

  • gdal
  • liblas
  • laszip
  • oracle

We need to document the formal list of what we support.

BUG lines

mpg has a whole bunch of lines marked "BUG".

Many of these are simple casting issues that aren't yet resolved.

All the BUG lines need to be addressed.

Update Notes files

The Notes files have fallen out of date and need to be updated to reflect the post-sprint architecture and decisions.

pc2pc support for mosaics

Need to provide ability on cmd line to accept multiple files as input. (pipeline xml works for this, but is not very convenient for quick things)

Clean up exception hierarchy

The exception hierarchy needs to be cleaned up and/or documented more clearly. For example:

is invalid_point_data still used? 

what is invalid_expression? 

what do I throw when doing parameters checks (e.g. checks for null arguments)? 

getField() type checking

One day, I wrote this:

double z = data.getField<boost::int32_t>(pointIndex, indexZ);

where of course I really meant this:

double z = data.getField<double>(pointIndex, indexZ);

Note the wrong template type. The problem here is that there's no way to typecheck the return type T is the type we want.

Hobu suggests decltype might help ( http://en.wikipedia.org/wiki/Decltype).

mpg alternatively suggests changing the function from this:

T getField(std::size_t ptIdx, boost::int32_t fieldIdx)

to this:

void getField(std::size_t ptIdx, boost::int32_t fieldIdx, T& ret)

Neither suggestion is very palatable, though.

OStreamManager -- cryptic error message when unable to open output file

Current, if LasWriter is unable to create its output file (e.g. the file is in a directory that doesn't exist), pcpipeline will exit with a non-descriptive std::std_exception.

I've attached a patch containing a test that illustrates the problem.

I think the problem is in FileUtils::createFile(), but I was spinning my wheels trying to figure out how to check if a file_sink iostream could write.

Think about in-place updates

libLAS supported (I think) the ability to update an existing file -- such as to modify the extents.

How does an in-place-update sort of workflow fit into the libPC model?

E57 support

Need to add an E57 driver, probably just using the simple API.

Think about spatial indexing

We need to have a means of doing spatial indexing, and we need to exercise our (as yet unused) ability to put a spatial bounds on the PointBuffer? being requested.

We need a filter/writer/something that creates an octtree. How similar to the Chipper is that?

drivers.las.writer does not write time values

When reading data with 'drivers.oci.reader', 'drivers.las.writer' does not write the time value. hobu thinks this is:

probably because of drivers.las.writer doing its init without a time pointformat

MrSID/MG4 support

The MrSID/MG4 format support has been started, but not completed.

FauxReader for infinite/unknown point counts

We currently have no code in place which demonstrates the unknown-number-of-points feature.

The FauxReader? should offer the ability to have a point count of 0 (zero) and have the point count type set to Unknown.

Make MosaicFilter scalable

It would be nice if, eventually, the MosaicFilter? was designed so as to be scalable, e.g. to be able to attach a viewer to 1000 tiles.

This will require some magic code to do things like make the mosaic filter instantiate only the readers needed, so as to minimize memory footprint and open file handles.

Where does CL output go?

Need to extend Application framework to put errors to stderr, output to stdout or to a specified file, logging to stderr(?), etc.

Readme

Looks interesting. Not sure how to install it though...

Any chance some rudimentary install notes could be put together somewhere?

Need BAG driver

We need to have a driver for the BAG (Bathymetry Attributed Grid) file format.

FieldChooserFilter

Readers often produce fields one doesn't want or care about, so It Would Be Nice to have a filter that removes them for you. But you often don't know the name of the field you want to remove -- maybe you only know you want to preserve a few known fields.

So how about a filter that takes a list of strings in its ctor to give instructions as to how to do this. Consider the following syntax:

=name       - means "preserve" field 'name', if present
-name       - means "remove" field 'name', if present
-*      - means "remove" any fields not previously mentioned
=*      - means "preserve" any fields not previously mentioned

(I added the '=*' operator for completeness; it is always the "implicit" last operator in the sequence. Note that a '+' operator doesn't make sense: can't specify the datatype, description, etc.)

This would be very easily to implement in the initialize() routine, using a simple mark/sweep pass over the fields
given by the previous stage.

Example: "remove everything but the X,Y,Z fields"

=x, =y, =z, -*

Document oper== for Swig usage

We need to warn in our Notes that the function "operator==" isn't swig-friendly.

For classes likely to be swig'd, an equals() function should be provided (which forwards to oper==, or vice versa).

Can't read generated .laz files

The following fails:

pc2pc -i test/data/simple.las -o foo.laz
pcinfo -a foo.laz

I think something is wrong such that PDAL can't read in the .laz files it generates.

Support back to Boost 1.41

We need to support back to Boost 1.41 because my client demands it :)

Boost 1.41 gets us all the way back to RHEL 6.0/CentOS 6.0 and Ubuntu Natty Narwhal without users having to build their own Boost. This is a Good Thing, because building Boost is an unyielding bitch of a job.

How to handle VLR differences?

[reported 4 months ago, may be OBE by now]

Several tests are currently commented out because mpg and hobu get slightly different answers, because (presumably) different variants of GDAL et al return slightly different WKTs.

/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/LasWriterTest.cpp:164: error in "test_different_formats": check filesSame failed
/Users/hobu/hg/libpc/test/unit/SpatialReferenceTest.cpp:218: error in "test_vertical_datum_notcompound": check vlrs_compound[2].getLength() == 21 failed
/Users/hobu/hg/libpc/test/unit/SpatialReferenceTest.cpp:222: error in "test_vertical_datum_notcompound": check vlrs_horizonly[2].getLength() == 7 failed

Need dump routines

All the major classes should have dump routines, both of the "operator<<" type (nonmember function) and of the dump() type (member function).

Build swig bindings from cmake

CMake needs to have the ability to build both the C# and the Python bindings, perhaps under HAVE_SWIG_CSHARP or some such.

Implement Signaller support

The Signaller class is complete and tested, but not actually being used within the Stage framework yet. Need to make that happen.

Better resource reporting for the apps

The Application framework has the ability to report wall clock running time (--timer).

It would be nice to also report CPU time, peak mem usage, etc.

Quarantine all the strings

All the strings in the library should be moved into one common file -- not so much for future I18N work as for the ability to spell-check them all, vet them for consistency of phrasing, etc.

CMake to build C# DLL

CMake doesn't support C# files directly, but something can be manually kludged to compile the .cs files into their DLL.

Logging system?

It has been suggested that it might be nice to have a logging system of some sort -- enabled, perhaps, with -v on the CL apps.

Remeber to delete your iterators

The Stage::createIterator() function returns an Iterator*, which the caller is responsible for deleting.

The caller (read: mpg) is likely to forget to do the deletion, leading to a memleak.

We should probably return a shared_ptr, and let boost do the mem mgmt for us.

(Note: I think this is the only place in libPC where we do this sort of thing.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.