Skip to content

Latest commit

 

History

History
210 lines (154 loc) · 7.89 KB

dependencies.rst

File metadata and controls

210 lines (154 loc) · 7.89 KB

Dependencies

Author

Howard Butler

Contact

howard@hobu.co

Date

11/15/2013

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 including:

Note

stage_index contains explicit usages of the various stage types available to PDAL.

Boost

PDAL attempts to constrain its code-love for Boost and not always try to use the latest and the greatest, but the instinct is hard to control. Specifically, PDAL takes advantage of a number of late-version features in boost::accumulators for statistics filtering, and as of this writing, it should be assumed that the minimum version required for Boost is 1.55. Other versions less than that may work with some minor modifications or #ifdef'ing, but the PDAL developers currently track rather late versions of Boost.

Boost Packages Used

An unexhaustive list includes:

  • Unittest
  • Accumulators
  • Filesystem
  • Program Options
  • Property Tree
  • Random
  • IO Streams
  • System
  • cstdint
  • String Algorithms
  • Endian
  • UUID

GDAL

PDAL uses GDAL for spatial reference system description manipulation, and image reading supporting for the NITF driver, and drivers.oci.writer 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 OSGeo4W platform.

  • GDAL 1.9+ is required.

Warning

If you are using OSGeo4W as your provider of GDAL, you must make sure to use the GDAL 1.9 package.

GeoTIFF

PDAL uses GeoTIFF in conjunction with GDAL for GeoTIFF key support in the LAS driver. Obtain GeoTIFF from the same place you got GDAL.

  • libgeotiff 1.3.0+ is required

Note

GDAL surreptitiously embeds a copy of GeoTIFF in its library build but there is no way for you to know this. In addition to embedding libgeotiff, it also strips away the library symbols that PDAL needs, meaning that PDAL can't simply link against GDAL. If you are building both of these libraries yourself, make sure you build GDAL using the "External libgeotiff" option, which will prevent the insanity that can ensue on some platforms. OSGeo4W users, including those using that platform to link and build PDAL themselves, do not need to worry about this issue.

Proj.4

Proj.4 is the projection engine that PDAL uses for the :cpppdal::filters::InPlaceReprojection and filters.inplacereprojection.

Note

Proj.4 4.9.0+ is required.

libxml2

libxml2 is used to serialize PDAL :cpppdal::Schema to and from to raw XML.

Note

libxml 2.7.0+ is required. Older versions may also work but are untested.

Obtain the Oracle Instant Client and install in a location on your system. 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 drivers.oci.writer and drivers.oci.reader 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

  • OCI 10g+ is required.

Note

MSVC should only require the oci.lib and oci.dll library and dlls.

Points2Grid

Points2Grid is a library with a simple CMake-based build system that provides simple, out-of-process interpolation of large point sets using Boost. It can be obtained via github.com at https://github.com/CRREL/points2grid It is used by drivers.p2g.writer to output point cloud interpolation.

Hexer

Hexer is a library with a simple CMake-based build system that provides simple hexagon gridding of large point sets for density surface generation and boundary approximation. It can be obtained via github.com at https://github.com/hobu/hexer It is used by filters.hexbin to output density surfaces and boundary approximations.

Nitro

Nitro is a library that provides NITF support for PDAL to write LAS-in-NITF files for drivers.nitf.writer. 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 drivers.las.writer and drivers.las.reader to provide compressed LAS support.

PCL

The Point Cloud Library (PCL) is used by the ground_command, pcl_command, drivers.pcd.writer, drivers.pcd.reader, and filters.pclblock to provide support for various PCL-related operations.

At the moment, PCL must be built from the pipeline branch, which is not maintained by PCL. We do our best to keep this up-to-date with PCL master.