PDAL

PDAL is Point Data Abstraction Library. GDAL for point cloud data.

OTHER License

Stars
1.1K
Committers
157

Bot releases are visible (Hide)

PDAL - 2.0.1

Published by abellgithub about 5 years ago

Note

  • Version 2.0.0 has been retracted as it was mistagged.

Changes of Note

  • Python support now requires at least version 3.5+ of Python and version 1.13 of Numpy.
  • filters.icp is no longer a plugin and provides options not previously available.
  • Linear algebra that was using single-precision math is now using double-precision math.
  • Support was added for GDAL version 3+.
  • PCL support has been removed. PCD read/write and filters.icp is now natively supported. The PCL filters have been moved to the unsupported-plugins repository for those that might need functionality they provided.
  • PDAL now uses a JSON library that doesn't support comments. If your pipelines contain non-standard JSON, they will no longer be accepted.
  • PDAL now supports GCC 9.2, clang 8.0.1 and Visual Studio 17

New Stages

  • filters.covariancefeatures computes statistics about features of points in a neighborhood. (#2455 - Thanks Helix.re!)
  • readers.e57 reads the E57 format. (#2442 - Thanks Helix.re!)
  • writers.e57 writes the E57 format. (#2442 - Thanks Helix.re!)
  • writers.gltf provides simple glTF mesh output support. (#2643)
  • filters.reciprocity computes the percentage of points that are considered uni-directional. (#2504 - @chambbj)
  • filters.miniball computes a criterion for neighbors based on the miniball algorithm. (#2504 - @chambbj)
  • filters.planefit computes a deviation of a point from a manifold approximating its neighbors. (#2504 - @chambbj)
  • readers.memoryview provides an API interface for direct reading of row-oriented point data. (#2620)
  • filters.projpipeline processes point through a PROJ pipeline. (#2626 - Thanks @vilaa!)

Deprecated Stages

Removed Stages

  • filters.mongus
  • filters.kdistance
  • readers.greyhound

Enhancements

  • readers.mrsid now supports more recent versions of the Mr. Sid SDK. (#2460)
  • readers.tiledb and writers.tiledb now support stream mode processing. It also supports an append option.
  • readers.ept now accepts an optional \<spatial reference> after the bounds specification in the bounds option to indicate the SRS of the provided boundary. (#2295)
  • filters.hag now supports interpolation from a TIN (triangulated network) of points. (#2520 - Thanks James McClain!)
  • filters.poisson now properly applies an inverse transform to points it creates. (#1840)
  • pdal --drivers now shows the file extensions associated with each driver. It also shows when stages are streamable. (#2571, #2528)
  • Some threaded execution has been added to readers.ept.
  • Alternate dimension names have been added for "Red", "Green" and "Blue" to better support PLY input. (#2570)

Bug Fixes

  • Fixed a problem where data in a forwarded LAS VLR would be lost. (#2542)
  • Clear dimension list in filters.colorization to eliminate the possibility of writing invalid data. (#2487)
  • Delete code that removed control characters when converting to JSON. (#2355)
  • Fixed an issue where nested geometries were being written as invalid WKT in filter.hexbin. (#2507)
  • Fixed a segmentation fault in readers.bpf if the specified file didn't exist. (#2515)
  • Fixed an issue in writers.gdal where interpolation would terminate if the process hit the raster edge. (#2545)
  • Fixed an issue writing JSON when characters needed to be escaped. (#2558)
  • Delaunay triangulation no longer segfaults with fewer than three points. (#2513)
  • Issues with reading binary data with filters.ept have been fixed. (#2585)
  • pdal now errors if an option is provided that wasn't expected. (#2574)
  • Forwarding for scale with multiple LAS inputs was fixed. (#2663)
PDAL - 1.9.1

Published by abellgithub over 5 years ago

Version 1.9.1 is a bug fix release.

Bug Fixes

  • When writing numerous LAS files with the PDAL API, an internal list
    of fields to forward could grow excessively. This has been fixed.
    (#2452)
  • A computation in writers.gdal that could overflow with very large
    rasters has been fixed. (#2454)
  • A bug that could result in the same pipeline tag name being used for
    multiple stages of the same type has been fixed. (#2458)
  • A potential segmentation fault in pdal density has been fixed.
    (#2461)
  • A segmentation fault in filters.chipper when processing multiple
    inputs has been fixed. (#2479)
  • An issue with readers.ept overwriting temporary files before they
    weren’t needed has been fixed. (#2474)
  • Fixed an issue where filters.icp would create data that appeared
    invalid due to the precision of data when positions weren’t located
    near the origin. (#2492)
PDAL - 1.9.0

Published by abellgithub over 5 years ago

Important Functionality Note

  • The meaning of the precision option for filters.hexbin for WKT output has changed from "digits after the decimal point" to "total digits of precision". If you need text output as precise as possible, you should set the value to 17. This change is most obvious when using the boundary option with the pdal info command.

Changes of Note

  • PDAL now requires at least version 2.2 of GDAL.
  • Pipelines can optionally be specified as an array of stages (without an encapsulating "pipeline" object).
  • The location of installed cmake files has been changed to match the cmake convention.
  • filters.delaunay now uses the delaunator library instead of geogram.
  • PDAL no longer depends on the GEOS library. However, some polygon functions will not work if PDAL isn't built with a version of the GDAL library that has GEOS support.
  • PDAL now uses the standard cmake script to locate the necessary GDAL files when building.
  • readers.sbet now reads angles as degrees rather than radians. (#2354)
  • The tindex command now requires one of the subcommands create or merge. It no longer accepts the merge option, which has been replaced by the merge subcommand.
  • The argument for the function PipelineManager::executeStream is now of type StreamPointTable& instead of FixedPointTable&.

Enhancements

  • All readers now accept the default_srs and override_srs options. override_srs is an alias for the existing spatialreference option. default_srs applies only if no spatial reference exists in the source file. (#2194, #2195)
  • Added some dimension detection capability to readers.pts. (#2317)
  • The build system now has enhanced conflict detection of mixed python 2/3 installations. Make sure that you have header files/libraries/interpreter/numpy support for either python 2 or python 3.
  • Hardened API use of LASzip in writers.las for points with data format 6 and above and set the extended_point_type variable. (#2320, #2329)
  • Support the libgeotiff path suffix when searching for the geotiff library with cmake.
  • Added a resolution option to readers.ept to limit the number of points read. (#2331)
  • readers.rxp now supports stream mode.
  • Added the invert option to filters.head and filters.tail.
  • Added support for subcommands in kernels. (#2293)

New stages

  • filters.mongo - Filtering of points using the mongo expression language.
  • readers.tiledb - Reads points from the tileDB database.
  • writers.tiledb - Writes points to the tileDB database.
  • writers.ept_addon - Adds sidecar data to an existing EPT dataset.

Deprecated stages

  • filters.kdistance - Replaced by filters.nndistance. filters.kdistance will be removed in the next PDAL release.
  • filters.mongus - Replaces by filters.pmf and filters.smrf

Bug fixes

  • The tindex command now uses sufficient precision when using the fast_boundary option (#2271)
  • filters.smrf and filters.pmf now process all points if the NumberOfReturns or ReturnNumber dimension is missing. This fixes a regression introduced with PDAL 1.8. (#2275)
  • The density command is now found by pdal. This fixes a regression introduced with PDAL 1.8. (#2378)
  • The scale=auto and offset=auto options now work with writers.bpf in stream mode. (#1983)
  • Pipelines with diamond shapes now properly re-execute ancestor stages. This fixes a regression introduced with PDAL 1.8. (#2290)
  • filters.crop now uses the correct logic when the outside option is used in standard mode. (#2305)
  • A bug in writers.gdal with streaming mode that caused an improper location shift in some instances has been fixed. (#2292)
  • Added an explicit dependency on the arbiter library for curl. This fixes build issues on some Unix platforms. (#1822)
  • Fixed a bug in filters.icp introduced by a change in PCL (see: https://github.com/PointCloudLibrary/pcl/issues/2724) that improperly removed a function call. (#2319)
  • readers.tindex now provides a default of "EPSG:4326" for the filter_srs option. (#2316)
  • Points in buffer corners are now properly placed in tiles in filters.splitter. (#2372)
  • Fixed reference counting in filters.python that might have caused a crash in some circumstances.
  • Generalized the python library re-loaded by PDAL when being used as a python extension. This is only relevant on some Unix distributions.
  • Fixed a bug in writers.gdal that might access invalid memory in some situations. (#2448)
PDAL - 1.8.0

Published by abellgithub almost 6 years ago

Important Issue

  • Those using PDAL to compress to LAZ should be aware that we have found an issue with LASzip that may cause PDAL to create compressed data for LAS 1.4 point types 6 and greater that caused them to be unable to be fully read. See https://github.com/LASzip/LASzip/issues/50 for more information or to see if the issue has been resolved in LASzip.

Changes of Note

  • PointTableRef is now publicly accessible from PointView (#1926)
  • Minimum CMake version is now 3.5
  • filters.hexbin is now a built-in stage, rather than a plugin. (#2001)
  • Removed support for ght compression in writers.pgpointcloud. (#2148)
  • On OSX, plugins are now installed with ID of @rpath rather than @loader_path/../lib
  • The API for StreamPointTable::StreamPointTable() now requires the capacity of the table to be passed as an argument.

Enhancements

  • Added denoise and reset options to pdal ground. (#1579)
  • readers.gdal now supports stream mode and provides the header option to map dimensions. It also supports fetching bounds without reading the entire file. (#1819)
  • readers.mbio added datatype option to support reading sidescan data. (#1852)
  • filters.stats was computing expensive kurtosis and skewness statistics by default. These statistics are now available with the advanced option. (#1878)
  • Added backtrace support for alpine linux-based Docker containers. (#1904)
  • Added a condition option for filters.assign to limit assignment. (#1956)
  • Add access to artifact manager keys. (#2026)
  • Added support for LAZ compression in writers.pgpointcloud (#2050)
  • Replaced last option with returns to support more flexible segmentation in filters.smrf and filters.pmf. (#2053)
  • writers.text now supports stream mode. (#2064)
  • Added pdal tile kernel with streaming support to conveniently tile data. (#2065)
  • A KD-tree used in one filter will now be reused in subsequent filters when possible. (#2123)
  • writers.ply now has a precision option to specify output precision. (#2144)
  • filters.smrf and filters.pmf supports complete range syntax for the ignore option. (#2157)
  • filters.hexbin now supports stream mode. (#2170)
  • readers.numpy now has the order option, which replaces the previous x, y and z options. It also supports structured numpy arrays and maps values to the X, Y and Z dimensions accordingly.
  • All readers now support setting a spatial reference to override any in the data with the spatialreference option.
  • Add support for unicode filenames in pipelines on Windows platforms.
  • Added NumpyReader::setArray() to support direct setting of a numpy array into readers.numpy.
  • Added StreamPointTable::setNumPoints() and support in Streamable::execute() allowing custom point tables to know the number of points in each pass through the point table.
  • Added SpatialReference::isProjected() to allow callers to determine if a spatial reference specifies a projection. Also added SpatialReference::identifyHorizontalEPSG() and SpatialReference::identifyVerticalEPSG() to return an EPSG code from a spatial reference if possible.
  • Added support for reading BPF files stored remotely.

New stages

  • readers.rdb - Support reading RIEGL RDB data.
  • readers.i3s - Support reading of web service-style Esri I3S point clouds.
  • readers.slpk - Support reading of file-based I3S-style point clouds.
  • writers.fbx - Experimental Unity engine (SDK required) support. (#2127)
  • filters.nndistance - Replaces filters.kdistance and adds average distance support. (#2071)
  • filters.dem - Filter data based on bounds relative to a raster value. (#2090)
  • filters.delaunay - Create a delauany triangulation of a point cloud. (#1855)
  • filters.info - Generate metadata about an input point set. Used by pdal info.

Deprecated stages

  • filters.kdistance - Replaced by filters.nndistance.

Bug fixes

  • Fixed an incorrect error message suggesting there were multiple SRSs in some cases when reading multiple inputs. (#2009)
  • Fixed a problem in filters.reprojection in stream mode that would improperly reproject when there were multiple input sources with differing SRSs. (#2058)
  • Fixed a problem in stream mode where a stage with no SRS would override the active SRS during processing. (#2069)
  • Fixed a problem in writers.gdal where output would be aggregated if multiple inputs were provided. (#2074)
  • The count option was not respected in stream mode. It now properly limits the number of points read. (#2086)
  • Fixed an off-by-one error that could create improper values in writers.gdal. Most data differences were small and not usually problematic. (#2095)
  • Multiple option values can be specified on the command line by repeating the option assignment. (#2114)
  • Added a missing initialization in filters.returns that could cause more point views to be returned than requested. (#2115)
  • Emit an error if the count option isn't set for readers.faux. (#2128)
  • PipelineManager::getStage() now returns a proper leaf node. (#2149)
  • Fixed logic for filters.crop in streaming mode with multiple crop areas that could return too few points. (#2198)
  • Added the minimal option for readers.rxp that was documented but not fully implemented. (#2225)
  • Fixed an error in failing to read all points in readers.rxp exposed with a newer SDK. (#2226)
  • Fixed an error in fetching floating point data from a PointContainer when the value was NaN. (#2239)
PDAL - 1.7.2

Published by hobu over 6 years ago

Bug fixes

  • Don't write LAS GeoTIFF VLRs if they contain no data (#1914)
  • Centroid computation should use doubles instead of floats (#1919)
  • Fixup -Werror-related warnings (#1915)
  • Fix linking to libdl for dlopen (#1902)
  • BPF doesn't build with ZLIB (#1929)
  • Packaging improvements (#1942, #1976, #1980, #1943)
  • Explicitly allow underscores and capital letters in stage names (implicit pre-1.7, hardened to disallow in 1.7.1) (#1923)
  • Warn about auto scaling writers.las in stream mode (#1940)
  • Handle cr/lf endings in Windows for readers.text (#1939 )
  • Make pdal-config owner writeable for Conda packaging (#1964)
  • Allow replacement of artifacts (#1994)
  • Fixed problem with UTM calculation for southern zones (#1989)
  • Fixed issue with kernel plugins failing to load (#1971)
  • Fixed problem where filters.ferry would create dimensions with bad types (#1930)
PDAL - 1.7.1

Published by abellgithub over 6 years ago

Changes of Note

  • filter.ferry now creates output dimensions with the same type as the input dimension. It also takes an arrow '=>' in addition to '=' in the --dimension specification.
  • filters.hexbin now falls back to slow boundary creation if no bounds information exists to do fast boundary creation.
  • Dimension names can now contain the forward slash ('/') character.
  • readers.gdal and filters.colorization now attempt to create dimensions with the type of the associated raster.
  • The Python PDAL extension code was removed from the PDAL source tree to its own repository.
  • The JAVA PDAL interface was remove from the PDAL source tree to its own repository.
  • pdal pipelineand pdal translate now use stream mode if the operation being performed is streamable. An option --nostream has been added to both commands to prevent the use of stream mode. The --stream option of pdal pipeline is now obsolete and ignored.
  • A new interface has been provided for the creation of plugins requiring less boilerplate code. There has been no API change.
  • Stages and pipelines can now be tested to check whether they are streamable.

Enhancements

  • Added options --timegap and --speedmin to readers.mbio to allow configuration of which points should be read.
  • Added support for compression schemes (xz, lzma, zstd) and created a standardized interface (#1722).
  • writers.bpf now supports the option auto for the coord_id option to allow the UTM zone to be set from the spatial reference if possible (#1723).
  • Added the ability read stage-specific options from a file with the --option_file option (#1641).
  • Replace the GDAL point-in-polygon with a much faster implementation in filters.crop.
  • Add a --reverse option to filters.mortonorder to provide a point ordering for good dispersal.
  • readers.bpf now supports the TCR (ECEF - earth centered, earth fixed) coordinate system.
  • Added option --use_eb_vlr to allow readers.las to interpret an extra bytes VLR as if the file were version 1.4 even if it's using an earlier LAS version.
  • readers.text added options --header and --skip to provide an alternative header line and to allow skipping lines before reading the header, respectively.
  • writers.text now supports the ability to specify individual dimension precision using a colon (':') and integer following the dimension name in the --order option.
  • readers.numpy adds support for reading from Numpy (.npy) save files.
  • pdal info now provides the --enumerate option. See the documentation for filters.stats for details.
  • Added a general option --logtiming to cause log output to contain the elapsed time from the start of the program. (#1882)

Documentation

  • Added a description of the Alpine Linux environment used for Travis and Docker.
  • Updated the documentation for building PDAL on Windows.
  • Added an example of how to loop files with PowerShell.
  • Corrected output shown in the documentation for filters.hexbin.
  • Reorganized the stages landing page to make it easier to find. (#1880)

New stages

  • readers.greyhound - Allows reading points from a source using the greyhound protocol.
  • filters.neighborclassifier - Re-classifies points based on the classification of neighboring points.

Removed stages

  • filters.computerange - Use filters.python to simulate the functionality.

Bug fixes

  • filters.range now always rejects NaN values as out of range.
  • Changed the default --timegap value in readers.mbio from 0 to 1 second.
  • Fixed a bug when reading pointers from metadata on some OSX systems.
  • Fixed a problem in pdal translate where overriding a reader or writer from a pipeline wouldn't create the proper pipeline.
  • Fixed a problem where multiple LASzip VLRs would get written to LAS files (#1726).
  • Fixed an installation problem with the Python extension.
  • Fixed a bug in writers.tindex that could cause a crash if the output file wasn't LAS.
  • Fixed JSON output from filters.hexbin when density/area can't be calculated.
  • Fixed a problem where output might be tagged with the wrong SRS when using filters.reprojection in stream mode. (#1877)
  • PDAL_DRIVER_PATH would be improperly parsed on Windows systems when the path contained colons. Windows builds now use the semicolon as the path separator. (#1889)
  • Convert NaN and infinite double values to proper strings for output as JSON.
  • Synthetic, keypoint and withheld flags are now added to the classification dimension for version 1.0 - 1.3 files in readers.las.
  • Support missed case supporting points with color but no density in filters.poisson.
  • Throw an error if the input file can't be opened in readers.ply.
  • The --stdin option for kernels.tindex didn't work. Now it does. Various other fixes were made.
  • writers.gdal now throws an error if an attempt is made to write an output file with no points available.
  • A build error that would be generated if lazsip was not found, even if it was not requested, has been resolved.
  • A build error that would be generated if Python was found but not requested has been resolved.
  • PDAL defaults to using normal CMake interface linking (#1890)
  • Fixed an issue where dimensions from readers.pcd and writers.pcd could get confused with dimensions from readers.sbet and writers.sbet.
  • Fixed index computation in filters.voxelcentroidnearestneighbor and filters.voxelcenternearestneighbor #1901
  • Fixed libdl linking #1900
PDAL - 1.6.0

Published by abellgithub about 7 years ago

Changes of Note

  • PDAL's Travis CI configuration is now based on Alpine Linux.
  • PDAL is now built into containers with Alpine linux in addition to Ubuntu linux. Tags exist for each release, starting with 1.4, as well as the master branch.
  • Pipeline tag names can now contain capital letters. They can also contain underscores after the first character.
  • Replace filters.programmable and filters.predicate with the more general filters.python.
  • Add support for Matlab with filters.matlab(#1661).
  • Remove the approximate option from filters.pmf and add an exponential option.p
  • Placed base64 encoded VLR data in a subnode of the VLR itself with the key "data" rather than duplicate the VLR node itself (#1648).
  • XML pipelines are no longer supported (#1666).
  • The number of proprietary dimensions in readers.text was expanded from 255 to 4095 (#1657).
  • API hooks have been added to support the use of PDAL with JVM languages such as Java or Scala.
  • Added support for LASzip 1.4 and switch to use the new LASzip API. (#1205). LASzip support in PDAL will require LASzip.org release 3.1.1 or greater.
  • The cpd kernel has been replaced with filters.cpd.
  • No more warnings about ReturnNumber or NumberOfReturns for LAS permuations (#1682).
  • The KernelFactory class has been removed. Its functionality has been moved to StageFactory.
  • Built-in eigen support has changed from version 3.2.8 to 3.3.4 (#1681).

Enhancements

  • API users can now create synonyms for existing arguments to a stage.
  • filters.splitter can now create buffered tiles with the buffer option.
  • writers.plycan now be made to write faces of an existing mesh (created with filters.greedyprojection or filters.poisson) if the faces option is used. An option dims has also been added that allows specification of the dimensions to be written as PLY elements. The writer also now supports streaming mode.
  • readers.text is now automatically invoked for .csv files.
  • PDAL_PLUGIN_INSTALL_PATH can now be set via override when building PDAL from source.
  • Changed the use of null devices to eliminate potentially running out of file descriptors on Windows.
  • filters.randomize can now be created by the stage factory (#1598).
  • Provide the ability to specify a viewpoint and normal orientation in filters.normal (#1638).
  • readers.las now provides the ignore_vlr option to allow named VLRs to be dropped when read (#1651).
  • Allow writers.gdal to write output rasters of type other than double (#1497).
  • filters.sqlite is now invoked automatically for .gpkg files.
  • filters.colorinterp can now be used in streaming mode in some cases (#1675).
  • Pointers can now be stored as metadata.
  • filters.ferry can now create new dimensions without copying data (#1694).

Documentation

  • Remove some leftover references to the classify and extract options that were removed from filters.ground in the last release.
  • Add a note about running pgpointcloud tests.
  • Added a tutorial on filtering data with python.
  • Remove lingering XML pipeline examples and replace with JSON.
  • Many updates and corrections to the workshop.
  • Added to the FAQs and entry about why a stage might not be found.
  • Added information to stage docs to indicate whether or not they were buit-in rather than plugins (#1612).
  • Added information to stage docs to indicate when they are streamable (#1606).

New filters

  • filters.greedyprojection - Performs triangulation of points (surface reconstruction) based on the greedy projection algorithm.
  • filters.poisson - Performs triangulation of points (surface reconstruction) based on the algorithm of Kazhdan.
  • filters.head - Passes through only the first N points.
  • filters.tail - Passes through only the last N points.
  • filters.cpd - Calculates and applies a transformation to align two datasets using the Coherent Point Drift registration algorithm.
  • filters.icp - Calculates and applies a transformation to align two datasets using the Iterative Closest Point registration algorithm.
  • filters.voxelcenternearestneighbor - Finds points closest to the center of a voxel (#1597).
  • filters.voxelcentroidnearestneighbor - Finds points closest to the controid of points in a voxel (#1597).
  • filters.python - Replaces filters.predicate and filters.programmable.
  • filters.matlab - Provides support for matlab manipulation of PDAL points and metadata (#1661).

New readers

  • Add readers.osg to support Open Scene Graph format.
  • Add readers.matlab to support reading data from a user-defined Matlab array struct. The same structure is written by writers.matlab.

Bug fixes

  • Fixed a case wherekernels.tindex would unconditionally set the spatial reference on a feature from the a_srs option. The spatial reference stored in a_srs is now only used if explicitly set or no spatial reference was present.
  • Fixed a case where writers.gdal could fail to check for an out-of-bounds point, potentially leading to a crash.
  • Fix an error in filters.cluster where the points wouldn't properly be placed in the first cluster because the starting cluster number was incorrect.
  • Fixed an error in freeing OGR features that could cause a crash when running "pdal density".
  • Fix potential memory leaks when creating OGRSpatialReference objects.
  • Make sure the global_encoding option is initialized to 0 in writers.las (#1595).
  • Fix eigen::computeCovariance to compute the correct sample covariance.
  • In some cases, the filters.crop would attempt to treat a 2D bounding box as 3D, yeilding a NULL bounding box and an error in behavior (#1626).
  • Fixed potential crash when using PDAL with multiple threads by providing locking for gdal::ErrorHandler (#1637)
  • Made sure that an uncompressed LAS file would be properly read even if the compression option was provided.
  • Throw an exception instead of crash when attempting to access a non-existent color ramp. (#1688)
PDAL - 1.5.0

Published by hobu over 7 years ago

Changes of Note

  • PCL --visualize capability of the pdal command line application has been removed.
  • writer.derivative has been removed. Use gdaldem for faster and more featureful equivalent functionality.
  • GeoTIFF and Proj.4 are now required dependencies.
  • writers.p2g has been removed. It was replaced by writers.gdal in 1.4, but the P2G writer was essentially unmaintained and we will be using the GDAL one going forward.
  • filters.attribute was split into filters.assign and filters.overlay to separate their functionalities
  • filters.pmf and filters.outlier have dropped the classify and extract options. They now only classify points and leave it downstream filters to ignore/extract classifications as needed.
  • filters.outlier has changed the default classification for noise points from 18 to 7 to match the LAS classification code for "Low point (noise)".

Enhancements

  • pdal pipeline now supports a --stream option which will default to one-at-a-time or chunk-at-a-time point processing when all stages in the pipeline support it. You can use this option to control memory consumption -- for example when interpolating a very large file with writers.gdal
  • filters.crop was enhanced to support transformed filter polygons, streaming, and radius cropping.
  • readers.greyhound updated to support greyhound.io 1.0 release, with the most significant enhancement being support for passing downstream JSON filters.
  • user_data JSON object can be applied to any PDAL pipeline object and it will be carried through processing. You can use this mechanism for carrying your own information in PDAL pipelines without having to sidecar data. #1427
  • writers.las now can write pdal_metadata and pdal_pipeline VLRs for processing history tracking. #1509 #1525
  • metadata, schema, and spatialreference objects added to global module for filters.programmable and filters.predicate Python filters.
  • pdalargs option for filters.programmable and filters.predicate allow you to pass in a JSON dictionary to your Python module for override or modification of your script
  • Stage tags can be used in pipeline override scenarios
  • User-settable VLRs in writers.las #1542
  • filters.sort now supports descending order and uses std::stable_sort #1530 (Thanks to new contributor @wrenoud )
  • pdal tindex will now use data bounds if filters.hexbin cannot be loaded for boundaries #1533
  • filters.pmf and filters.smrf improved performance #1531 and #1541
  • filters.assign now supports Range-based filters
  • filters.outlier now accepts a user-specified class to override the default value of 7 for points deemed outliers. #1545
  • filters.pmf and filters.smrf now accept a Range via the ignore option to specify values that should be excluded from ground segmentation. #1545
  • filters.pmf and filters.smrf now consider only last returns (when return information is available) as the default behavior. The last option can be set to false to consider all returns. #1545

Documentation

New filters

  • filters.cluster - Perform Euclidean cluster extraction, and label each point by its cluster ID. By @chambbj.
  • filters.groupby - Split incoming PointView into individual PointViews categorically, e.g., by Classification. By @chambbj.
  • filters.locate - Locate and return the point with the minimum or maximum value for a given dimension. By @chambbj.
  • filters.emf - Extended Local Maximum filter. By @chambbj.

New readers

  • readers.mbio Bathymetric point cloud support for formats supported by the MB-System software library

Bug fixes

  • writers.pgpointcloud needed to treat table schema correctly https://github.com/PDAL/PDAL/pull/1540 (thanks @elemoine)
  • pdal density kernel now supports overriding filters.hexbin options #1487
  • Arbiter embedded library updated to support setting Curl options (certificate settings, etc).
  • Provided a default value for radius in writers.gdal #1475
  • writers.ply broken for non-standard dimensions #1556
  • No EVLRs for writers.las for files < LAS 1.4 #1551
  • LAS extra dims handling for standard PDAL dimension names #1555
  • LASzip defines #1549
PDAL - 1.4.0

Published by hobu almost 8 years ago

Changes of Note

  • GeoTIFF is now required to compile PDAL
  • --scale and --offset kernel options are no longer supported. Specify using stage-specific options as needed.
  • The --validate option of the pdal pipeline command now invokes the preparation portion of the pipeline to force validation of options.
  • The --verbose option to pdal now accepts log level names ("Error", "Warning", "Info", "Debug", "Debug1", "Debug2", "Debug3", "Debug4" and "Debug5") in addition to the corresponding numeric values (0 - 8).

Enhancements

New filters

New writers

New kernels

Improvements

  • Filename globbing is now supported in the JSON pipeline specification of reader input files. Note that tilde expansion is NOT supported.
  • Source tree reorganization https://lists.osgeo.org/pipermail/pdal/2016-December/001099.html
  • CMake updates to utilize target_include_directory and target_link_libraries.
  • JSON output for pdal --showjson --drivers and pdal --showjson --options to support application builders being able to fetch active lists of stages, kernels, and options. https://github.com/PDAL/PDAL/issues/1315
  • Stacktrace logging to stderr on Unix systems https://github.com/PDAL/PDAL/pull/1329
  • Geometry ingestion enhancements now support using GeoJSON or WKT in pipeline options https://github.com/PDAL/PDAL/pull/1339.
  • Significant Python extension refactor https://github.com/PDAL/PDAL/pull/1367 including ability to fetch data schema, log, and pipeline information. Common utility classes to support the Python extension were refactored in support of the Java extension.
  • Java extension by Azavea to support using PDAL in Spark and friends. https://github.com/PDAL/PDAL/pull/1371
  • kernels.density - Density kernel now supports writing into an existing OGR datasource https://github.com/PDAL/PDAL/pull/1396
  • readers.greyhound - Greyhound reader refactor.
    • Multi-threaded read support
    • Server-side filtering pass-through
  • writers.derivative - Derivative writer refactor.
  • filters.crop - Radial cropping https://github.com/PDAL/PDAL/issues/1387
  • filters.stats - Optional per-dimension median and MAD computation
  • Support was added for the recently added cartesian coordinate in BPF files.
  • writers.p2g now uses the InCoreInterp method of the points2grid code. This uses more memory but runs faster and doesn't crash.
  • The application now provides better error feedback on command-line errors by indicating the invoked kernel when an error is detected.
  • PDAL now searches by default in the following locations for plugins: "." "./lib", "../lib", "./bin", "../bin". Use PDAL_DRIVER_PATH to explicitly override the plugin search location.
  • Vector-based command-line arguments now accept default values in the API.
  • JSON parsing errors of pipeline files now provide more detailed messages.
  • Writers now add output filenames to metadata.
  • Stage names provided as input to other stages in pipelines can now be specified as strings or arrays of strings. The previous version required single input stage names to be placed in an array.
  • Added --smooth option to filters.hexbin to allow user control of boundary smoothing.

Bug fixes

  • Well-known text provided as a spatial reference isn't interpreted by GDAL unless necessary.
  • filters.hexbin now returns MULTIPOLYGON EMPTY when it is unable to compute a boundary.
  • Reading a not a number (nan) value from a text file now works properly.
  • The --compression option for writers.pcd has been fixed so that the writer actually compresses as requested.
  • The stage manager (and hence, pipelines) now properly recognizes the text reader as readers.text.
  • readers.text now detects the case when a dimension has been specified more than once in an input file.
  • Fixed a problem where filters.splitter could create cells larger than requested about the X and Y axes.
  • writers.nitf now errors if it attempts to write an FTITLE field that exceeds the allowable length.
  • If PDAL is build with LAZperf but without LASzip, the program now properly defaults to using LAZperf.
  • Fixed a problem where filters.sort could fail to properly order points depending on the implementation of the C++ sort algorithm.
  • Fixed a problem in pgpostgres readers and writers where a failure in a query could lead to a crash.
PDAL - 1.3.0

Published by hobu about 8 years ago

Changes of Note:

  • Command line parsing has been reworked to cause invalid options to emit
    an error message. Stage options specified in pipelines and on the command
    line are handled similarly.
  • The dimension PlatformHeading has been renamed to Azimuth. When looking
    up a dimension by name, the string "platformheading" is still accepted and
    returns Azimuth.
  • Errors detected by GDAL are no longer thrown as exceptions. A log message
    is emitted instead.
  • Well-known dimensions are now added to PDAL by editing a JSON file,
    Dimension.json.
  • Linking with PDAL using CMake no longer requires explicit linking with
    curl, jsoncpp or arbiter libraries.
  • PDAL now searches for plugins in the following locations and order by
    default: ./lib, ../lib, ../bin, the location where PDAL was installed.
  • The '--debug' and '--verbose' options are no longer supported as stage
    options. The '--verbose' option is accepted on the PDAL command line. The
    '--debug' option is deprecated, and if specified on the command line is
    equivalent to '--verbose=3'. One can enable logging programmatically by
    calling setLog() on a PipelineManager or a specific stage.
  • pdal::Dimension types are now C++11 enumeration classes. The change may
    require editing any Stage implementations you might have and removing the
    extraneous ::Enum type specification.

Enhancements:

  • Pipelines can now be read directly from standard input.
  • Files can now be read from Amazon S3 buckets by providing an appropriate
    URL.
  • Many new filters have been added: filters.approximatecoplanar,
    filters.eigenvalues, filters.estimaterank, filters.hag, filters.normal,
    filters.outlier, filters.pmf, filters.sample. Most of these are algorithm
    extractions from the PCL library, with the hope of eliminating the need
    for PCL in some future PDAL release.
  • The PLY reader now loads dimensions that aren't predefined PDAL dimensions.
  • A '--driver' option has been added to allow a specific driver to be loaded
    for a file without regard to its extension.
  • The PDAL_DRIVER_PATH environment variable now accepts a list of locations
    to search for drivers.
  • Beta release quality drivers improvements in readers.greyhound
  • Beta quality implementation of Mongus and Zalik ground filter
  • Experimental implementation of Pingel et al. ground filter
  • writers.pcd enhancements by Logan Byers (binary, compression) -- requires
    PCL
  • Docker images upgraded to Ubuntu Xenial
  • Cyclone PTS reader -- readers.pts
  • skewness, kurtosis, stddev, and variance added to filters.stats output
  • Python API now available https://pypi.python.org/pypi/pdal

Fixes:

  • A failure that may have resulted when using filters.hexbin to calculate
    density in the southern hemisphere has been corrected.
  • A failure to create the index file with 'pdal tindex' and GDAL 2.X has
    been fixed.
  • The '--tindex' option for the 'pdal tindex' command is now a positional
    option as specified in the documentation.
  • The icebridge reader now reads the X dimension as longitude and forces
    the value in the range (-180, 180]. It also properly uses the dimension
    Azimuth instead of ScanAngleRank.
  • An error in writers.pgpointcloud where it ignored SQL to be run at the end
    of the stage has been fixed.
  • An error that might incorrectly write values stored internally as bytes
    when written as a different data type has been fixed.
  • A problem where 'pdal info' wouldn't properly report dimension names not
    predefined by PDAL has been fixed.
  • A bug in filters.crop that wouldn't properly transform coordinates when
    provided the '--a_srs' option has been fixed.
PDAL -

Published by abellgithub about 8 years ago

1.2.0:

Changes of Note:

  • The GEOS library is now required to build PDAL. In earlier versions it was
    an optional component.
  • Boost is no longer a required component. Unless you are building plugins
    that require boost (notably PCL and Geowave), you no longer will need
    boost installed on your system to build or run PDAL.
  • PDAL now builds on Microsoft Visual Studio 2015.
  • The PipelineReader class has been removed and its functionality has been
    merged into PipelineManager.
  • Plugin libraries now support Linux versioning.
  • Naming changes have been made to allow packaging with the Debian release.
  • filters.height now uses the dimension 'HeightAboveGround' instead of a
    dimension named 'Height' to be compatible with the filters.heightaboveground.
  • Option names no longer contain lowercase characters.
  • PDAL now works with GDAL version 1.9 and later.
  • Stages created with the StageFactory are now owned by the factory.
  • filters.dartthrowing has been renamed filters.dartsample
  • 'pipeline-serialization' now produces JSON output instead of XML.

Enhancements:

  • Pipelines may now be specified using a JSON syntax. XML syntax is still
    supported but users should switch to JSON when possible as the XML support
    will be removed in a future version.
  • PDAL now can be built into a Docker container.
  • Many stages now support "streaming," which allows control of the number
    of points stored in memory during processing. See
    Stage::execute(StreamPointTable&) for more information.
  • A basic text reader has been added.
  • Added support for the dimension 'ClassFlags' in readers.las.
  • The derivative writer can now produce output for multiple primitive types
    with a single execution.
  • 'pdal info' now provides bounding box output instead of a more refined
    boundary when the hexbin plugin isn't found.
  • Added 'pdal density' to provide a command-line interface to the
    filters.hexbin density calcuations.
  • The icebridge reader can now load an associated metadata file. The reader
    also now marks the associated coordinate system as WGS84.
  • The stats filter now emits bounding box information in native and WGS84
    projections.
  • PDAL command-line programs now (generally) check their argument lists for
    correctness and report syntax errors.
  • 'pdal info' now provides spatial reference attributes in addition to
    the actual well-known text.
  • Geometry can now be specified as GeoJSON as well as well-known-text in
    most contexts. Geometry optionally provides Z-dimension output.
  • Stage and plugin creation is now thread-safe (NOTE: Most of PDAL is
    NOT thread-safe, so tread carefully).
  • Many, many documentation enhancements.

Fixes:

  • A bug in generating PCIDs when with multiple simultaneous PDAL executions
    to the same Postgres database has been fixed.
  • Fixed a bug in generated SQL delete statements when certain table names
    were used in the writers.postgres driver.
  • Properly escape quotes when generating JSON output.
  • Fix an off-by-one error when writing data with the derivative writer that
    could lead to a crash.
  • Fixed a dependency error during builds that could lead to a failure to
    properly load Python extensions on Linux.
  • Fixed a bug where passing certain options to 'pdal info' could be handled
    in ambiguous ways.
  • Fixed bugs in the reading of raster data using readers.gdal.
  • Fixed population of the AIMIDB and ACFTB attributes in writers.nitf.
  • Corrected the parsing of some dimension names in filters.colorization.
  • Fixed a potential truncation in the GlobalEncoding dimension of readers.las.
PDAL - PDAL 1.1.0

Published by abellgithub almost 9 years ago

1.1.0:

Enhancements:

  • Add support for the LAZperf LAS compressor in decoding/encoding LAS files.
    LAZperf can be enabled with the 'compression' option in readers.las and
    writers.las.
  • Add PCL functionality as filters (filters.greedyprojection,
    filters.gridprojection, filters.ground filters.movingleastsquares,
    filters.poisson, filters.radiusoutlier, filters.statisticaloutlier,
    filters.voxelgrid, filters.height, filters.dartsample)
  • Add readers.gdal to support reading raster sets as point clouds
  • Update writers.geowave and readers.geowave to work with the latest version
    of GeoWave software.
  • Add readers.ilvis2 to support the Icebridge ILVIS2 format.
  • Disallow nested options. Check stage documentation for changes in option
    names and handling. (filters.ferry, filters.colorization, filters.attribute,
    filters.crop). Change filters.attribute to handle only a single dimension.
  • Add 'output_dims' options in writers.bpf to allow control of the dimensions
    that should be written.
  • Add 'all' keyword in 'extra_dims' options of writers.las to cause all
    dimensions to be written to either the standard or extra dimensions of
    a LAS point.
  • Add filters.randomize to allow randomized order of points.
  • Add filters.divider to split a set of points into subsets of a fixed number
    or into subsets containing a specific number of points.
  • Update to version 1.1.4 of rply in readers.rply.
  • Change the logic of the range filter to allow multiple ranges for a single
    dimension and support a simple boolean logic.
  • Change the default scaling on writer.bpf to 'auto'.
  • Add support for smoothing boundaries generated by filters.hexbin.
  • Add readers.tindex to allow vector-filtered input of point cloud files.
  • Allow merging of datasets with non-matching spatial references.
  • Many, many documentation enhancements.

Fixes: