Skip to content
Commits on Source (7)
......@@ -15,7 +15,7 @@ script:
after_success: |
if [[ "$TRAVIS_SECURE_ENV_VARS" == "true" &&
"$TRAVIS_BRANCH" == "1.8-maintenance" &&
"$TRAVIS_BRANCH" == "1.9-maintenance" &&
-n "$encrypted_6a5172b96922_key" ]]
then
cd scripts/ci
......
......@@ -33,6 +33,46 @@ Enhancements
``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)
- 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)
- .. rubric:: Changes of Note
:name: changes-of-note-1
- 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-1:
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)
......@@ -91,7 +131,69 @@ Bug fixes
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.
- 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)
- Fixed a bug in ``writers.gdal`` that might access invalid memory in
some situations. (#2448)
.. _new-stages-1:
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-1:
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-1:
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.
================================================================================
1.8.0
================================================================================
......
pdal (1.9.0+ds-1~exp1) experimental; urgency=medium
* New upstream release.
* Update 1.9~rc3 symbols for other architectures.
* Strip pre-releases from symbols version.
* Update 1.9.0 symbols for amd64.
-- Bas Couwenberg <sebastic@debian.org> Tue, 09 Apr 2019 18:16:12 +0200
pdal (1.9~rc3+ds-1~exp1) experimental; urgency=medium
* New upstream release candidate.
......
This diff is collapsed.
......@@ -4,43 +4,38 @@
Dependencies
==============================================================================
:Author: Howard Butler
:Contact: howard@hobu.co
:Date: 11/03/2015
PDAL explicitly stands on the shoulders of giants that have come before it.
Specifically, PDAL depends on a number of libraries to do its work. Most are
not required. For optional dependencies, PDAL utilizes a dynamically-linked
plugin architecture that loads them at runtime.
PDAL depends on a number of libraries to do its work. You should make sure
those dependencies are installed on your system before installing PDAL
or use a packaging system that will automatically ensure that prerequisites
are satisified. Packaging system such as `apt`_ or `Conda`_ can
be used to install dependencies on your system.
.. _`apt`: https://help.ubuntu.com/lts/serverguide/apt.html
.. _`Conda`: https://conda.io/en/latest/
Required Dependencies
------------------------------------------------------------------------------
GDAL
GDAL (2.2+)
..............................................................................
PDAL uses GDAL for spatial reference system description manipulation, and image
reading supporting for the NITF driver, and :ref:`writers.oci` support. In
conjunction with GeoTIFF_, GDAL is used to convert GeoTIFF keys and OGC WKT SRS
description strings into formats required by specific drivers. While PDAL can
be built without GDAL support, if you want SRS manipulation and description
ability, you must have GDAL (and GeoTIFF_) linked in at compile time.
Obtain `GDAL`_ via whatever method is convenient. Linux platforms such as
`Debian`_ have `DebianGIS`_, Mac OS X has the `KyngChaos`_ software frameworks,
and Windows has the `Conda Forge`_ platform.
* GDAL 2.2+ is required.
description strings into formats required by specific drivers. ::
Source: https://github.com/OSGeo/gdal
Conda: https://anaconda.org/conda-forge/gdal
GeoTIFF
GeoTIFF (1.3+)
..............................................................................
PDAL uses GeoTIFF in conjunction with GDAL for GeoTIFF key support in the
LAS driver. Obtain `GeoTIFF`_ from the same place you got `GDAL`_.
LAS driver. GeoTIFF is typically a dependency of GDAL, so installing GDAL
from a package will generally install GeoTIFF as well. ::
* libgeotiff 1.3.0+ is required
Source: https://github.com/OSGeo/libgeotiff
Conda: https://anaconda.org/conda-forge/geotiff
.. note::
`GDAL` surreptitiously embeds a copy of `GeoTIFF`_ in its library build
......@@ -53,33 +48,49 @@ LAS driver. Obtain `GeoTIFF`_ from the same place you got `GDAL`_.
those using that platform to link and build PDAL themselves, do
not need to worry about this issue.
Proj.4
Optional Dependencies
------------------------------------------------------------------------------
LASzip (Latest package/source recommended)
..............................................................................
Proj.4_ is the projection engine that PDAL uses for the
:ref:`filters.reprojection` filter. It is used by GDAL.
`LASzip`_ is a library with a `CMake`-based build system that
provides periodic compression of `ASPRS LAS`_ data. It is used by the
:ref:`writers.las` and :ref:`readers.las` to provide
compressed LAS support.::
.. note::
Source: https://github.com/LASzip/LASzip
Conda: https://anaconda.org/conda-forge/laszip
Proj.4 4.9.0+ is required if you need vertical datum
transformation support. Otherwise, older versions should be
sufficient.
laz-perf (Latest package/source recommended)
..............................................................................
Optional Dependencies
------------------------------------------------------------------------------
laz-perf provides an alternative LAS compression/decompression engine that
may be slightly faster in some circumstances. laz-perf supports fewer LAS
point types and versions than does LASzip. It is also used as a
compression type for :ref:`writers.oci` and :ref:`writers.sqlite`::
libxml2
Source: https://github.com/verma/laz-perf/
Conda: https://anaconda.org/conda-forge/laz-perf
libxml2 (2.7+)
..............................................................................
libxml2_ is used to serialize PDAL dimension descriptions into XML for the
database drivers such as :ref:`writers.oci`, :ref:`readers.sqlite`, or
:ref:`readers.pgpointcloud`
:ref:`readers.pgpointcloud`.::
.. note::
Source: http://www.xmlsoft.org/
Conda: https://anaconda.org/conda-forge/libxml2
libxml 2.7.0+ is required. Older versions may also work but are untested.
Plugin Dependencies
------------------------------------------------------------------------------
PDAL comes with optional plugin stages that require other libraries in order
to run. Many of these libraries are licensed in a way incompatible with
the PDAL license or they may be commercial products that require purchase.
`OCI`_
OCI (10g+)
..............................................................................
Obtain the `Oracle Instant Client`_ and install in a location on your system.
......@@ -87,82 +98,41 @@ Be sure to install both the "Basic" and the "SDK" modules. Set your
``ORACLE_HOME`` environment variable system- or user-wide to point to this
location so the CMake configuration can find your install. OCI is used by
both :ref:`writers.oci` and :ref:`readers.oci` for Oracle
Point Cloud read/write support.
.. warning::
`OCI`_'s libraries are inconsistently named. You may need to create
symbolic links for some library names in order for the `CMake`_ to find
them::
cd $ORACLE_HOME
ln -s libocci.so.11.1 libocci.so
ln -s libclntsh.so.11.1 libclntsh.so
ln -s libociei.so.11.1 libociei.so
Point Cloud read/write support. In order to obtain the OCI libraries
you must register with Oracle.::
* OCI 10g+ is required.
Libraries: https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html
.. note::
MSVC should only require the oci.lib and oci.dll library and dlls.
Nitro
Nitro (Requires specific source package)
..............................................................................
Nitro is a library that provides `NITF`_ support for PDAL to write LAS-in-NITF
files for :ref:`writers.nitf`. PDAL can only use a fork of Nitro located at
http://github.com/hobu/nitro instead of the mainline tree for two reasons:
1) The fork contains a simple `CMake`-based build system
2) The fork properly dynamically links on Windows to maintain LGPL compliance.
It is expected that the fork will go away once these items are incorporated into
the main source tree.
LASzip
..............................................................................
`LASzip`_ is a library with a simple `CMake`-based build system that
provides periodic compression of `ASPRS LAS`_ data. It is used by the
:ref:`writers.las` and :ref:`readers.las` to provide
compressed LAS support.
laz-perf
..............................................................................
files for :ref:`writers.nitf`. You must use the specific version of Nitro
referenced below for licensing and compatibility reasons.::
In addition to `LASzip`_, you can use the alternative `laz-perf`_ library.
`laz-perf`_ provides slightly faster decompression capability for typical
LAS files. It is also used as a compression type for :ref:`writers.oci` and
:ref:`writers.sqlite`
Source: http://github.com/hobu/nitro
.. _`laz-perf`: https://github.com/verma/laz-perf/
PCL
PCL (1.7.2+)
..............................................................................
The `Point Cloud Library (PCL)`_ is used by the :ref:`pcl_command`,
:ref:`writers.pcd`, :ref:`readers.pcd`, and :ref:`filters.pclblock` to provide
support for various PCL-related operations.
support for various PCL-related operations.::
PCL must be 1.7.2+. We do our best to keep this up-to-date with PCL master.
Source: https://github.com/PointCloudLibrary/pcl
Conda: https://anaconda.org/conda-forge/pcl
.. note::
`Homebrew`_-based OSX builds use PCL 1.7.2, but you may need to switch
off `VTK`_ support depending on the configuration.
TileDB
TileDB (1.4.1+)
..............................................................................
`TileDB`_ is an efficient multi-dimensional array management system which
introduces a novel on-disk format that can effectively store dense and sparse
array data with support for fast updates and reads. It features excellent
compression, and an efficient parallel I/O system with high scalability. It is
used by :ref:`writers.tiledb` and :ref:`readers.tiledb`.
.. note::
`TileDB`_ must be 1.4.1+.
used by :ref:`writers.tiledb` and :ref:`readers.tiledb`.::
.. _`Homebrew`: http://brew.sh
.. _`VTK`: http://vtk.org
Source: https://github.com/TileDB-Inc/TileDB
Conda: https://anaconda.org/conda-forge/tiledb
.. _`ASPRS LAS`: http://www.asprs.org/Committee-General/LASer-LAS-File-Format-Exchange-Activities.html
.. _`LASzip`: http://laszip.org
......@@ -174,15 +144,11 @@ used by :ref:`writers.tiledb` and :ref:`readers.tiledb`.
.. _`Oracle Point Cloud`: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28400/sdo_pc_pkg_ref.htm
.. _`DebianGIS`: http://wiki.debian.org/DebianGis
.. _`Debian`: http://www.debian.org
.. _`KyngChaos`: http://www.kyngchaos.com/software/unixport
.. _`Conda Forge`: https://anaconda.org/conda-forge/pdal
.. _GDAL: http://www.gdal.org
.. _Proj.4: http://trac.osgeo.org/proj
.. _GeoTIFF: http://trac.osgeo.org/geotiff
.. _libxml2: http://xmlsoft.org
.. _CMake: http://www.cmake.org
.. _`libpq`: http://www.postgresql.org/docs/9.3/static/libpq.html
.. _`Point Cloud Library (PCL)`: http://pointclouds.org
.. _`TileDB`: https://www.tiledb.io
......@@ -4,9 +4,8 @@
Compilation
******************************************************************************
This section describes how to build and install PDAL under Windows, Linux, and Mac.
PDAL's numerous :ref:`dependencies` can make it a challenge to build a fully-featured
build.
This section describes how to build and install PDAL under Windows, Linux,
and Mac.
.. seealso::
:ref:`download` contains links to installable binaries for Windows, OSX, and
......
......@@ -4,308 +4,204 @@
Unix Compilation
******************************************************************************
:Author: Howard Butler
:Contact: howard@hobu.co
:Date: 10/27/2015
`CMake`_ 2.8.11+ is the prescribed tool for building from source, with `CMake`_
3.0+ being desired. `CMake`_ is a cross-platform build system that provides a
number of benefits, and its usage ensures a single, up-to-date build system for
all PDAL-supported operating systems and compiler platforms.
Like a combination of autoconf/autotools, except that it works on Windows with
minimal eye-stabbing pain, `CMake`_ is somewhat of a meta-building tool. It can
be used to generate MSVC project files, GNU Makefiles, NMake files for MSVC,
XCode projects on Mac OS X, and Eclipse projects (as well as many others).
This functionality allows the PDAL project to avoid maintaining these build
options by hand and target a single configuration and build platform.
This tutorial will describe how to build PDAL using CMake on a Unix platform.
PDAL is known to compile on Linux 2.6's of various flavors and OSX with XCode.
.. note::
:ref:`dependencies` contains more information about specific library
version requirements and notes about building or acquiring them.
Using "Unix Makefiles" on Linux
..............................................................................
Get the source code
PDAL comes with support for building with `CMake`_. PDAL requires at
least version 3.5 of CMake.
CMake is a cross-platform meta-build system that provides a unified system
for building applications on multiple platforms with various build tools.
CMake has `generators`_ for many build tools, though PDAL has been tested
only with `Ninja`_ and `GNU Makefiles`_ on Unix/OSX. Ninja builds PDAL faster,
so the following instructions use that build tool, though building with
GNU Makefiles works similarly (simply replace "ninja" with "make" when
running the build tool).
.. _`generators`: https://cmake.org/cmake/help/v3.5/manual/cmake-generators.7.html
.. _`Ninja`: https://ninja-build.org/
.. _`GNU Makefiles`: https://www.gnu.org/software/make/manual/make.html
Dependencies
------------------------------------------------------------------------------
See :ref:`source` for how to obtain the latest development version or visit
:ref:`download` to get the latest released version.
Prepare a build directory
------------------------------------------------------------------------------
CMake allows you to generate different builders for a project, and in this
example, we are going to generate a "Unix Makefiles" builder
for PDAL on Mac OS X.
Building PDAL successfully depends on having other libraries configured
and installed. These :ref:`dependencies <dependencies>` can be built
from source or
can be installed via a packaging system (`apt`_ works well on Ubuntu and
Debian-based Linux systems. `Conda`_ works well on most systems. Some have
had success with `brew`_ on OSX systems.)
Often, the only package that
needs to be installed prior to building PDAL is GDAL. Installing a GDAL
package will normally install other PDAL dependencies automatically.
::
$ cd PDAL
$ mkdir makefiles
$ cd makefiles
$ apt install libgdal-dev
Configure base library
------------------------------------------------------------------------------
OR
Configure the basic core library for the "Unix Makefiles" target:
$ conda install gdal
::
$ cmake -G "Unix Makefiles" ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Enable PDAL utilities to build - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hobu/dev/git/PDAL-cmake/makefiles
OR
$ brew install gdal
.. note::
.. _`apt`: https://help.ubuntu.com/lts/serverguide/apt.html
.. _`Conda`: https://conda.io/en/latest/
.. _`brew`: https://brew.sh/
The ``./cmake/examples/hobu-config.sh`` shell script contains a number of common
settings that I use to configure my `Homebrew`-based Macintosh
system.
.. _`Homebrew`: http://brew.sh/
Issue the `make` command
------------------------------------------------------------------------------
This will build a base build of the library, with no extra libraries being
configured.
.. _make_install:
Run ``make install`` and test your installation with a :ref:`pdal_test` command
-------------------------------------------------------------------------------
``make install`` will install the :ref:`utilities <apps>` in the location that
was specified for 'CMAKE_INSTALL_PREFIX'. Once installed, ensure that you can
run `pdal info`.
.. _configure_optional_libraries:
Configure your :ref:`Optional Libraries <dependencies>`.
Using Ninja on Linux or OSX
------------------------------------------------------------------------------
By checking the "on" button for each, CMake may find your installations of
these libraries, but in case it does not, set the following variables,
substituting accordingly, to values that match your system layout.
.. csv-table::
"`GDAL`_","GDAL_CONFIG", "/usr/local/bin/gdal-config"
"","GDAL_INCLUDE_DIR", "/usr/local/include"
"","GDAL_LIBRARY", "/usr/local/lib/libgdal.so"
"`GeoTIFF`_","GEOTIFF_INCLUDE_DIR","/usr/local/include"
"","GEOTIFF_LIBRARY","/usr/local/lib/libgeotiff.so"
"`OCI`_","ORACLE_INCLUDE_DIR","/home/oracle/sdk/include"
"","ORACLE_NNZ_LIBRARY","/home/oracle/libnnz10.so"
"","ORACLE_OCCI_LIBRARY","/home/oracle/libocci.so"
"","ORACLE_OCIEI_LIBRARY","/home/oracle/libociei.so"
"","ORACLE_OCI_LIBRARY","/home/oracle/libclntsh.so"
.. _GDAL: http://www.gdal.org
.. _Proj.4: http://trac.osgeo.org/proj
.. _GeoTIFF: http://trac.osgeo.org/geotiff
.. _libxml2: http://xmlsoft.org
.. _`OCI`: http://www.oracle.com/technology/tech/oci/index.html
.. _`Oracle Instant Client`: http://www.oracle.com/technology/tech/oci/instantclient/index.html
.. _`Oracle Point Cloud`: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28400/sdo_pc_pkg_ref.htm
.. _`DebianGIS`: http://wiki.debian.org/DebianGis
.. _`Debian`: http://www.debian.org
.. _`KyngChaos`: http://www.kyngchaos.com/software/unixport
CCMake and cmake-gui
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. warning::
The following was just swiped from the libLAS compilation document
and it has not been updated for PDAL. The basics should be the same, however.
Please ask on the :ref:`mailing list<community>` if you run into any issues.
While `CMake`_ can be run from the command-line, and this is the preferred
way for many individuals, it can be much easier to run CMake from a GUI.
Now that we have a basic library building, we will use CMake's GUIs to
help us configure the rest of the optional components of the library. Run
``ccmake ../`` for the `Curses`_ interface or ``cmake-gui ../`` for a GUI
version.
.. figure:: media/ccmake-osx-start.png
:alt: Running CCMake in OS X
Running the `Curses`_ `CMake`_ interface. This interface is available to
all unix-like operating systems.
.. note::
If your arrow keys are not working with in CCMake, use CTRL-N and
CTRL-P to move back and forth between the options.
.. figure:: media/cmake-gui-osx-start.png
:alt: Running cmake-gui in OS X
Get the source code
..............................................................................
Running the cmake-gui `CMake`_ interface. This interface is available
on Linux, Windows, and Mac OS X.
PDAL can be cloned from :ref:`GitHub <source>` or you can download a
:ref:`release bundle <download>`
Build and install
------------------------------------------------------------------------------
Once you have configured your additional libraries, you can install the
software. The main pieces that will be installed are:
Prepare a build directory
..............................................................................
* PDAL headers (typically in a location ./include/pdal/...)
* PDAL C++ (PDAL.a or PDAL.so) library
* PDAL C (PDAL_c.a or PDAL_c.so) library
* :ref:`Utility <apps>` programs
CMake allows you to generate different builders for a project. Here we're
using Mac OSX, but the procedure and output are nearly identical on Linux
distributions.
::
make install
$ cd PDAL
$ mkdir build
$ cd build
Using "XCode" on OS X
Run CMake
..............................................................................
Running CMake uses the specified generator to create
an environment suitable for building PDAL with the requested tool.
(Ninja in this case).
Get the source code
------------------------------------------------------------------------------
::
See :ref:`source` for how to obtain the latest development version or visit
:ref:`download` to get the latest released version.
$ cmake -G Ninja ..
-- Could NOT find JSONCPP (missing: JSONCPP_LIBRARY JSONCPP_INCLUDE_DIR) (Required is at least version "1.6.2")
-- Numpy output: /usr/lib/python2.7/dist-packages/numpy/core/include
1.13.3
Prepare a build directory
------------------------------------------------------------------------------
-- Could NOT find LIBEXECINFO (missing: LIBEXECINFO_LIBRARY)
-- Could NOT find LIBUNWIND (missing: LIBUNWIND_LIBRARY LIBUNWIND_INCLUDE_DIR)
-- The following features have been enabled:
CMake allows you to generate different builders for a project, and in this
example, we are going to generate an "Xcode" builder for PDAL on Mac OS X.
Additionally, we're going to use an alternative compiler -- `LLVM`_ -- which
under certain situations can produce much faster code on Mac OS X.
* PostgreSQL PointCloud plugin, read/write PostgreSQL PointCloud objects
* Python plugin, add features that depend on python
* Unit tests, PDAL unit tests
::
-- The following OPTIONAL packages have been found:
$ export CC=/usr/bin/llvm-gcc
$ export CXX=/usr/bin/llvm-g++
$ cd PDAL
$ mkdir xcode
$ cd xcode/
* PkgConfig
* LibXml2
* Curl
Configure base library
------------------------------------------------------------------------------
-- The following REQUIRED packages have been found:
Configure the basic core library for the Xcode build:
* GDAL (required version >= 2.2.0)
Provides general purpose raster, vector, and reference system support
...
-- The following RECOMMENDED packages have not been found:
::
* LASzip (required version >= 3.1)
Provides LASzip compression
$ cmake -G "Xcode" ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Check for working C compiler: /usr/bin/llvm-gcc
-- Check for working C compiler: /usr/bin/llvm-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Check for working CXX compiler: /usr/bin/llvm-g++
-- Check for working CXX compiler: /usr/bin/llvm-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Enable PDAL utilities to build - done
-- Enable PDAL unit tests to build - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hobu/hg/PDAL-cmake/xcode
-- Build files have been written to: /home/foo/pdal/build
Issue the `ninja` command
..............................................................................
Alternatively, if you have `KyngChaos`_ frameworks for `GDAL`_ and `GeoTIFF`_
installed, you can provide locations for those as part of your ``cmake``
invocation:
If cmake runs to completion (reports that build files have been written),
you can run Ninja to build PDAL.
::
$ cmake -G "Xcode" \
-D GDAL_CONFIG=/Library/Frameworks/GDAL.framework/Programs/gdal-config \
-D GEOTIFF_INCLUDE_DIR=/Library/Frameworks/UnixImageIO.framework/unix/include \
-D GEOTIFF_LIBRARY=/Library/Frameworks/UnixImageIO.framework/unix/lib/libgeotiff.dylib \
..
$ ninja
.. note::
I recommend that you use in `Homebrew`_ for `GDAL`_ and friends. Its configuration
is featureful and up-to-date.
If no errors are reported, Ninja will have created the ``pdal`` program
in the ``bin`` directory. A set of necessary support libraries will have
been created in the ``lib`` directory.
::
$ open PDAL.xcodeproj/
.. figure:: media/xcode-start.png
:alt: Building PDAL using the XCode project
Set default command for XCode
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the default executable for the project to be ``lasinfo`` by opening the
"Executables" tree, choosing "lasinfo," and clicking the bubble next to
the "Executable name" in the right-hand panel.
$ ls bin/pdal
bin/pdal
.. figure:: media/xcode-set-default-executable.png
:alt: Setting the default executable
Set arguments for :ref:`pdal_test`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the arguments for :ref:`pdal_test` so it can be run from within XCode. We
use the ${PROJECT_DIR} environment variable to be able to tell pdal_test the
location of our test file. This is similar to the :ref:`same command
<make_install>` above in the "Unix Makefiles" section.
.. figure:: media/xcode-lasinfo-arguments.png
:alt: Setting the arguments for lasinfo
$ ls lib/libpdalcpp*
lib/libpdalcpp.8.dylib
lib/libpdalcpp.dylib
lib/libpdalcpp.9.0.0.dylib
Checking the build and running PDAL tests
..............................................................................
You can quickly check that PDAL has built properly by running the `pdal info`
command.
Configure :ref:`Optional Libraries <dependencies>`
------------------------------------------------------------------------------
::
As :ref:`before <configure_optional_libraries>`, use ``ccmake ../`` or ``cmake-gui ../`` to
configure your :ref:`dependencies`.
$ bin/pdal info ../test/data/las/autzen_trim.las
{
"filename": "../test/data/las/autzen_trim.las",
"pdal_version": "1.8.0 (git-version: c39e62)",
"stats":
{
"bbox":
{
"EPSG:4326":
{
"bbox":
{
"maxx": -123.0689038,
"maxy": 44.0515451,
"maxz": 158.651448,
"minx": -123.0734481,
"miny": 44.04990077,
"minz": 123.828048
},
...
CMake will normally build a set of tests that can be used to verify that PDAL
executes most functions properly. You can run these tests yourself if
desired, though it's not typically necessary.
::
.. figure:: media/cmake-gui-osx-configured.png
:alt: Configuring optional libraries with CMake GUI
$ ctest
Test project /Users/foo/pdal.master/build
Start 1: pdal_filters_pcl_block_test
1/97 Test #1: pdal_filters_pcl_block_test ............ Passed 0.23 sec
Start 2: pdal_filters_icp_test
2/97 Test #2: pdal_filters_icp_test .................. Passed 0.12 sec
Start 3: pdal_filters_python_test
3/97 Test #3: pdal_filters_python_test ............... Passed 3.52 sec
Start 4: pdal_io_numpy_test
4/97 Test #4: pdal_io_numpy_test ..................... Passed 0.31 sec
...
93/96 Test #93: pdal_io_ilvis2_metadata_test ........... Passed 0.03 sec
Start 94: pdal_io_ilvis2_reader_metadata_test
94/96 Test #94: pdal_io_ilvis2_reader_metadata_test .... Passed 0.05 sec
Start 95: xml_schema_test
95/96 Test #95: xml_schema_test ........................ Passed 0.04 sec
Start 96: pdal_io_ilvis2_test
96/96 Test #96: pdal_io_ilvis2_test .................... Passed 0.04 sec
100% tests passed, 0 tests failed out of 96
Total Test time (real) = 39.54 sec
Failed tests may not indicate problems other than a lack of support for some
feature on your system. For example, tests for database drivers will fail if
the database isn't installed or configured properly.
Install PDAL
..............................................................................
PDAL can be installed to the default location (usually subdirectories of
/usr/local) using Ninja.
.. _`CMake`: http://www.cmake.org/
.. _`CTest`: http://cmake.org/cmake/help/ctest-2-8-docs.html
.. _`CMake 2.8.0+`: http://www.cmake.org/cmake/help/cmake-2-8-docs.html
.. _`CDash`: http://www.cdash.org/
.. _`continuous integration`: http://en.wikipedia.org/wiki/Continuous_integration
.. _`PDAL CDash`: http://my.cdash.org/index.php?project=PDAL
.. _`Curses`: http://en.wikipedia.org/wiki/Curses_%28programming_library%29
.. _`Autoconf`: http://www.gnu.org/software/autoconf/
.. _`LLVM`: http://llvm.org/
::
......@@ -19,7 +19,7 @@ the JSON-formatted metadata created by PDAL to be written to a file.
Metadata Nodes
------------------------------------------------------------------------------
Each item of metadata is stored in an object known as a MetadataNode.
Each item of metadata is stored in an object known as a ``MetadataNode``.
Metadata nodes are reference types that can be copied cheaply. Metadata nodes
are annotated with the original data type to allow better interpretation of
the data.
......
# 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)
- 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)
-
# Changes of Note
- PDAL now requires at least version 2.2 of GDAL.
......@@ -15,6 +32,7 @@
- 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)
......@@ -49,3 +67,37 @@
- 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.
- 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)
- Fixed a bug in `writers.gdal` that might access invalid memory in some situations. (#2448)
# 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.
......@@ -48,7 +48,7 @@ command
::
git clone https://github.com/PDAL/PDAL.git pdal
git clone https://github.com/PDAL/PDAL.git
Binaries
......
......@@ -487,7 +487,7 @@ private:
int partialRowElts = m_xBlockSize * x;
auto si = sourceBegin + (wholeRowElts + partialRowElts);
std::transform(si, si + m_xBlockSize, di,
std::transform(si, si + xWidth, di,
[srcNoData, dstNoData](ITER_VAL<SOURCE_ITER> s){
T t;
......
......@@ -50,6 +50,8 @@ cd $BUILDDIR
CC=$CC CXX=$CXX cmake -G "$CONFIG" \
-DCMAKE_LIBRARY_PATH:FILEPATH="$CONDA_PREFIX/lib" \
-DCMAKE_INCLUDE_PATH:FILEPATH="$CONDA_PREFIX/include" \
-DPython3_ROOT_DIR:FILEPATH="$CONDA_PREFIX" \
-DCMAKE_FIND_FRAMEWORK="NEVER" \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=${CONDA_PREFIX} \
-DBUILD_PLUGIN_SQLITE=ON \
......