std::string StageFactory::inferWriterDriver(const std::string& filename, pdal::Options& options) { std::string ext = boost::filesystem::extension(filename); boost::to_lower(ext); if (boost::algorithm::iequals(ext,".laz")) { options.add("compression", true); } options.add<std::string>("filename", filename); std::map<std::string, std::string> drivers; drivers["las"] = "drivers.las.writer"; drivers["laz"] = "drivers.las.writer"; drivers["xyz"] = "drivers.text.writer"; drivers["txt"] = "drivers.text.writer"; drivers["ntf"] = "drivers.nitf.writer"; if (boost::algorithm::iequals(filename, "STDOUT")) { return drivers["txt"]; } if (ext == "") return drivers["txt"]; ext = ext.substr(1, ext.length()-1); if (ext == "") return drivers["txt"]; boost::to_lower(ext); std::string driver = drivers[ext]; return driver; // will be "" if not found }
std::string AppSupport::inferWriterDriver(const std::string& filename, pdal::Options& options) { std::string ext = boost::filesystem::extension(filename); if (ext == "") return ""; ext = ext.substr(1, ext.length()-1); if (ext == "") return ""; boost::to_lower(ext); if (ext == "laz") { options.add("compression", true); } options.add<std::string>("filename", filename); // maybe this should live in StageFactory? std::map<std::string, std::string> drivers; drivers["las"] = "drivers.las.writer"; drivers["laz"] = "drivers.las.writer"; std::string driver = drivers[ext]; return driver; // will be "" if not found }
int PcInfo::execute() { Options readerOptions; { if (m_usestdin) m_inputFile = "STDIN"; readerOptions.add<std::string>("filename", m_inputFile); readerOptions.add<bool>("debug", isDebug()); readerOptions.add<boost::uint32_t>("verbose", getVerboseLevel()); } Stage* reader = AppSupport::makeReader(readerOptions); if (m_seed != 0) { Option seed_option("seed", m_seed, "seed value"); m_options.add(seed_option); } Option sample_size("sample_size", m_sample_size, "sample size for random sample"); m_options.add(sample_size); Option cls("exact_count", "Classification", "use exact counts for classification stats"); Option rn("exact_count", "ReturnNumber", "use exact counts for ReturnNumber stats"); Option nr("exact_count", "NumberOfReturns", "use exact counts for ReturnNumber stats"); m_options.add(cls); m_options.add(rn); m_options.add(nr); pdal::Options options = m_options + readerOptions; pdal::filters::Stats* filter = new pdal::filters::Stats(*reader, options); filter->initialize(); if (m_pointNumber != (std::numeric_limits<boost::uint64_t>::max)()) { dumpOnePoint(*filter); } if (m_showStats) { dumpStats(*filter); } if (m_showSchema) { dumpSchema(*reader); } if (m_showMetadata) { dumpMetadata(*reader); } if (m_showStage) { dumpStage(*reader); } std::ostream& ostr = m_outputStream ? *m_outputStream : std::cout; ostr << std::endl; delete filter; delete reader; if (m_outputStream) { FileUtils::closeFile(m_outputStream); } return 0; }
int PcInfo::execute() { if (m_outputFile != "") { m_outputStream = FileUtils::createFile(m_outputFile); if (!m_outputStream) { throw app_runtime_error("cannot open output file: " + m_outputFile); } } Options readerOptions; { readerOptions.add<std::string>("filename", m_inputFile); readerOptions.add<bool>("debug", isDebug()); readerOptions.add<boost::uint32_t>("verbose", getVerboseLevel()); } Stage* reader = AppSupport::makeReader(readerOptions); if (m_seed != 0) { Option seed_option("seed", m_seed, "seed value"); m_options.add(seed_option); } Option sample_size("sample_size", m_sample_size, "sample size for random sample"); m_options.add(sample_size); pdal::Options options = m_options + readerOptions; pdal::filters::Stats* filter = new pdal::filters::Stats(*reader, options); filter->initialize(); if (m_pointNumber != (std::numeric_limits<boost::uint64_t>::max)()) { dumpOnePoint(*filter); } if (m_showStats) { dumpStats(*filter); } if (m_showSchema) { dumpSchema(*reader); } if (m_showMetadata) { dumpMetadata(*reader); } if (m_showStage) { dumpStage(*reader); } delete filter; delete reader; if (m_outputStream) { FileUtils::closeFile(m_outputStream); } return 0; }