From 36b3d49cea670d41a97ee07e0da7f2c89c0b1c07 Mon Sep 17 00:00:00 2001 From: Howard Butler Date: Wed, 24 Sep 2014 16:55:27 -0500 Subject: [PATCH] ferry filter scaffolding #435 --- include/pdal/filters/Ferry.hpp | 67 +++++++++++++ src/CMakeLists.txt | 6 +- src/filters/Ferry.cpp | 138 ++++++++++++++++++++++++++ test/unit/CMakeLists.txt | 2 +- test/unit/filters/FerryFilterTest.cpp | 89 +++++++++++++++++ 5 files changed, 299 insertions(+), 3 deletions(-) create mode 100644 include/pdal/filters/Ferry.hpp create mode 100644 src/filters/Ferry.cpp create mode 100644 test/unit/filters/FerryFilterTest.cpp diff --git a/include/pdal/filters/Ferry.hpp b/include/pdal/filters/Ferry.hpp new file mode 100644 index 0000000000..b5b3323a2c --- /dev/null +++ b/include/pdal/filters/Ferry.hpp @@ -0,0 +1,67 @@ +/****************************************************************************** +* Copyright (c) 2014, Howard Butler +* +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following +* conditions are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided +* with the distribution. +* * Neither the name of Hobu, Inc. or Flaxen Geo Consulting nor the +* names of its contributors may be used to endorse or promote +* products derived from this software without specific prior +* written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +* OF SUCH DAMAGE. +****************************************************************************/ + +#pragma once + +#include + +namespace pdal +{ +namespace filters +{ + +class PDAL_DLL Ferry : public Filter +{ +public: + SET_STAGE_NAME("filters.ferry", "Data ferrying filter") + SET_STAGE_LINK("http://pdal.io/stages/filters.ferry.html") + SET_STAGE_ENABLED(true) + + Ferry(const Options& options) : Filter(options) {}; + static Options getDefaultOptions(); + +private: + virtual void initialize(); + virtual void processOptions(const Options&); + virtual void ready(PointContext ctx); + virtual void filter(PointBuffer& buffer); + virtual void done(PointContext ctx); + + Ferry& operator=(const Ferry&); // not implemented + Ferry(const Ferry&); // not implemented +}; + +} // namespace filters +} // namespace pdal + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6a92cbecc9..3179a133ef 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -349,7 +349,7 @@ set(PDAL_DRIVERS_P2G_HPP "${PDAL_P2G_HEADERS}/P2gWriter.hpp" ) -set (PDAL_DRIVERS_P2G_CPP +set (PDAL_DRIVERS_P2G_CPP "${PDAL_P2G_SRC}/P2gWriter.cpp" ) @@ -373,7 +373,7 @@ if (PDAL_HAVE_PCL) "${PDAL_PCD_HEADERS}/Writer.hpp" ) - set (PDAL_DRIVERS_PCD_CPP + set (PDAL_DRIVERS_PCD_CPP "${PDAL_PCD_SRC}/Common.cpp" "${PDAL_PCD_SRC}/Reader.cpp" "${PDAL_PCD_SRC}/Writer.cpp" @@ -574,6 +574,7 @@ set(PDAL_FILTERS_HPP "${PDAL_FILTERS_HEADERS}/Chipper.hpp" "${PDAL_FILTERS_HEADERS}/Crop.hpp" "${PDAL_FILTERS_HEADERS}/Decimation.hpp" + "${PDAL_FILTERS_HEADERS}/Ferry.hpp" "${PDAL_FILTERS_HEADERS}/HexBin.hpp" "${PDAL_FILTERS_HEADERS}/InPlaceReprojection.hpp" "${PDAL_FILTERS_HEADERS}/Merge.hpp" @@ -588,6 +589,7 @@ set (PDAL_FILTERS_CPP "${PDAL_FILTERS_SRC}/Chipper.cpp" "${PDAL_FILTERS_SRC}/Crop.cpp" "${PDAL_FILTERS_SRC}/Decimation.cpp" + "${PDAL_FILTERS_SRC}/Ferry.cpp" "${PDAL_FILTERS_SRC}/HexBin.cpp" "${PDAL_FILTERS_SRC}/Reprojection.cpp" "${PDAL_FILTERS_SRC}/Splitter.cpp" diff --git a/src/filters/Ferry.cpp b/src/filters/Ferry.cpp new file mode 100644 index 0000000000..3f06901724 --- /dev/null +++ b/src/filters/Ferry.cpp @@ -0,0 +1,138 @@ +/****************************************************************************** +* Copyright (c) 2014, Howard Butler, howard@hobu.co +* +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following +* conditions are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided +* with the distribution. +* * Neither the name of Hobu, Inc. or Flaxen Geo Consulting nor the +* names of its contributors may be used to endorse or promote +* products derived from this software without specific prior +* written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +* OF SUCH DAMAGE. +****************************************************************************/ + +#include + +namespace pdal +{ +namespace filters +{ + + + +void Ferry::initialize() +{ +} + + +Options Ferry::getDefaultOptions() +{ + Options options; + + pdal::Option red("dimension", "Red", ""); + pdal::Option b0("band",1, ""); + pdal::Option s0("scale", 1.0f, "scale factor for this dimension"); + pdal::Options redO; + redO.add(b0); + redO.add(s0); + red.setOptions(redO); + + pdal::Option green("dimension", "Green", ""); + pdal::Option b1("band",2, ""); + pdal::Option s1("scale", 1.0f, "scale factor for this dimension"); + pdal::Options greenO; + greenO.add(b1); + greenO.add(s1); + green.setOptions(greenO); + + pdal::Option blue("dimension", "Blue", ""); + pdal::Option b2("band",3, ""); + pdal::Option s2("scale", 1.0f, "scale factor for this dimension"); + pdal::Options blueO; + blueO.add(b2); + blueO.add(s2); + blue.setOptions(blueO); + + pdal::Option reproject("reproject", false, + "Reproject the input data into the same coordinate system as " + "the raster?"); + + options.add(red); + options.add(green); + options.add(blue); + options.add(reproject); + + return options; +} + + +void Ferry::processOptions(const Options& options) +{ +// m_rasterFilename = options.getValueOrThrow("raster"); +// std::vector