diff --git a/pdal/PipelineExecutor.cpp b/pdal/PipelineExecutor.cpp index ce96fa12a6..d9f84a930e 100644 --- a/pdal/PipelineExecutor.cpp +++ b/pdal/PipelineExecutor.cpp @@ -76,7 +76,7 @@ std::string PipelineExecutor::getSchema() const throw pdal_error("Pipeline has not been executed!"); std::stringstream strm; - MetadataNode root = m_manager.pointTable().toMetadata().clone("schema"); + MetadataNode root = m_manager.pointTable().layout()->toMetadata().clone("schema"); pdal::Utils::toJSON(root, strm); return strm.str(); } diff --git a/pdal/PointLayout.cpp b/pdal/PointLayout.cpp index d3da017461..8aa436fa8f 100644 --- a/pdal/PointLayout.cpp +++ b/pdal/PointLayout.cpp @@ -318,5 +318,24 @@ Dimension::Type PointLayout::resolveType(Dimension::Type t1, } } +MetadataNode PointLayout::toMetadata() const +{ + + MetadataNode root; + + for (const auto& id : dims()) + { + MetadataNode dim("dimensions"); + dim.add("name", dimName(id)); + Dimension::Type t = dimType(id); + dim.add("type", Dimension::toName(Dimension::base(t))); + dim.add("size", dimSize(id)); + root.addList(dim); + } + + return root; +} + } // namespace pdal + diff --git a/pdal/PointLayout.hpp b/pdal/PointLayout.hpp index aa23eb5a28..0e6f34db01 100644 --- a/pdal/PointLayout.hpp +++ b/pdal/PointLayout.hpp @@ -41,6 +41,7 @@ #include #include +#include namespace pdal { @@ -225,6 +226,9 @@ class PointLayout */ PDAL_DLL const Dimension::Detail *dimDetail(Dimension::Id id) const; + + PDAL_DLL MetadataNode toMetadata() const; + private: PDAL_DLL virtual bool update(Dimension::Detail dd, const std::string& name); diff --git a/pdal/PointTable.cpp b/pdal/PointTable.cpp index 8b8a879ceb..556d601704 100644 --- a/pdal/PointTable.cpp +++ b/pdal/PointTable.cpp @@ -108,20 +108,7 @@ char *PointTable::getPoint(PointId idx) MetadataNode BasePointTable::toMetadata() const { - const PointLayoutPtr l(layout()); - MetadataNode root; - - for (const auto& id : l->dims()) - { - MetadataNode dim("dimensions"); - dim.add("name", l->dimName(id)); - Dimension::Type t = l->dimType(id); - dim.add("type", Dimension::toName(Dimension::base(t))); - dim.add("size", l->dimSize(id)); - root.addList(dim); - } - - return root; + return layout()->toMetadata(); } } // namespace pdal