
1.3.0:

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.

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.

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:

- Handle error with Pgpointcloud when pointcloud extension is not installed
  on postgres server.  Skip tests if extention is missing.
- Set precision on output of doubles to metadata.
- Fix a divide-by-zero error in readers.faux when the point count was 1.
  (https://github.com/PDAL/PDAL/issues/1015)
- Fix fatal error loading numpy library that occurred when running
  filters.predicate or filters.programmable.
  (https://github.com/PDAL/PDAL/issues/1010)
- Correct readers.las to properly check WKT bit when choosing spatial
  reference VLR.
  (https://github.com/PDAL/PDAL/issues/1040)
- Correct writer.las to emit only WKT or GeoTiff VLR, not both.
  (https://github.com/PDAL/PDAL/issues/1040)
- Check object ID against table column id (attrelid) to ensure correct PCID
  retrieval in readers.pgpointcloud.
  (https://github.com/PDAL/PDAL/pull/1051)

