diff --git a/include/pdal/kernel/Info.hpp b/include/pdal/kernel/Info.hpp index 78432b5ce4..62be45a6e2 100644 --- a/include/pdal/kernel/Info.hpp +++ b/include/pdal/kernel/Info.hpp @@ -94,7 +94,8 @@ class PDAL_DLL Info : public Application std::string m_QueryPoint; double m_QueryDistance; boost::uint64_t m_numPointsToWrite; - std::string m_pipelineFile; + std::string m_pipelineFile; + bool m_showSample; }; }} // pdal::kernel diff --git a/src/filters/Stats.cpp b/src/filters/Stats.cpp index 60a1fd0b28..db1ed38df4 100644 --- a/src/filters/Stats.cpp +++ b/src/filters/Stats.cpp @@ -497,6 +497,7 @@ void Stats::readBufferBeginImpl(PointBuffer& buffer) } else { + bool doSample = options.getValueOrDefault("do_sample", true); schema::index_by_index const& dims = schema.getDimensions().get(); for (schema::index_by_index::const_iterator iter = dims.begin(); iter != dims.end(); ++iter) { @@ -510,7 +511,7 @@ void Stats::readBufferBeginImpl(PointBuffer& buffer) getStage().log()->get(logDEBUG2) << "Cumulating exact stats for dimension " << d->getName() << std::endl; doExact = true; } - stats::SummaryPtr c = boost::shared_ptr(new stats::Summary(bin_count, sample_size, stats_cache_size, seed, doExact)); + stats::SummaryPtr c = boost::shared_ptr(new stats::Summary(bin_count, sample_size, stats_cache_size, seed, doExact, doSample)); std::pair p(d,c); m_dimensions.push_back(d); diff --git a/src/kernel/Info.cpp b/src/kernel/Info.cpp index 90b44fbb39..60c38fff94 100644 --- a/src/kernel/Info.cpp +++ b/src/kernel/Info.cpp @@ -51,6 +51,7 @@ Info::Info(int argc, const char* argv[]) , m_useXML(false) , m_QueryDistance(0.0) , m_numPointsToWrite(0) + , m_showSample(false) { return; } @@ -101,10 +102,11 @@ void Info::addSwitches() ("metadata,m", po::value(&m_showMetadata)->zero_tokens()->implicit_value(true), "dump the metadata") ("sdo_pc", po::value(&m_showSDOPCMetadata)->zero_tokens()->implicit_value(true), "dump the SDO_PC Oracle Metadata") ("stage,r", po::value(&m_showStage)->zero_tokens()->implicit_value(true), "dump the stage info") + ("pipeline-serialization", po::value(&m_pipelineFile)->default_value(""), "") ("xml", po::value(&m_useXML)->zero_tokens()->implicit_value(true), "dump XML instead of JSON") + ("sample", po::value(&m_showSample)->zero_tokens()->implicit_value(true), "randomly sample dimension for stats") ("seed", po::value(&m_seed)->default_value(0), "Seed value for random sample") ("sample_size", po::value(&m_sample_size)->default_value(1000), "Sample size for random sample") - ("pipeline-serialization", po::value(&m_pipelineFile)->default_value(""), "") ; @@ -363,12 +365,12 @@ int Info::execute() m_options.add(cls); m_options.add(rn); m_options.add(nr); + Option do_sample("do_sample", m_showSample, "Dont do sampling"); + m_options.add(do_sample); if (m_Dimensions.size()) { Option dimensions("dimensions", m_Dimensions, "Use explicit list of dimensions"); m_options.add(dimensions); - Option do_sample("do_sample", false, "Dont do sampling"); - m_options.add(do_sample); } pdal::Options options = m_options + readerOptions;