diff --git a/io/LasError.hpp b/io/LasError.hpp index f45ba8c0fa..6b3cfd2672 100644 --- a/io/LasError.hpp +++ b/io/LasError.hpp @@ -44,11 +44,13 @@ namespace pdal class LasError { public: - LasError() : m_filename("") + LasError() : m_filename(""), m_validate(false) {} void setFilename(const std::string& filename) { m_filename = filename; } + void setValidate(bool validate) + { m_validate = validate; } void setLog(LogPtr log) { m_log = log; } @@ -56,6 +58,8 @@ class LasError { static std::vector warned; + if (!m_validate) + return; if (!Utils::contains(warned, returnNum)) { warned.push_back(returnNum); @@ -69,16 +73,20 @@ class LasError { static std::vector warned; + if (!m_validate) + return; if (!Utils::contains(warned, numReturns)) { warned.push_back(numReturns); - m_log->get(LogLevel::Warning) << m_filename << ": Found invalid value " - "of '" << numReturns << "' for point's number of returns.\n"; + m_log->get(LogLevel::Warning) << m_filename << + ": Found invalid value of '" << numReturns << + "' for point's number of returns.\n"; } } private: std::string m_filename; + bool m_validate; LogPtr m_log; }; diff --git a/io/LasReader.cpp b/io/LasReader.cpp index 5a68d8a36f..0942fe96ce 100644 --- a/io/LasReader.cpp +++ b/io/LasReader.cpp @@ -70,6 +70,8 @@ void LasReader::addArgs(ProgramArgs& args) args.add("extra_dims", "Dimensions to assign to extra byte data", m_extraDimSpec); args.add("compression", "Decompressor to use", m_compression, "EITHER"); + args.add("validate", "Perform some file validation as data is read", + m_validate); } @@ -148,6 +150,7 @@ void LasReader::initializeLocal(PointTableRef table, MetadataNode& m) // Set case-corrected value. m_compression = compression; m_error.setFilename(m_filename); + m_error.setValidate(m_validate); m_error.setLog(log()); m_header.setLog(log()); diff --git a/io/LasReader.hpp b/io/LasReader.hpp index 47eeb9d194..2cf2fb878b 100644 --- a/io/LasReader.hpp +++ b/io/LasReader.hpp @@ -120,6 +120,7 @@ class PDAL_DLL LasReader : public pdal::Reader StringList m_extraDimSpec; std::vector m_extraDims; std::string m_compression; + bool m_validate; virtual void addArgs(ProgramArgs& args); virtual void initialize(PointTableRef table)