// Test that data from three input views gets written to separate output files. TEST(LasWriterTest, flex) { std::array<std::string, 3> outname = {{ "test_1.las", "test_2.las", "test_3.las" }}; Options readerOps; readerOps.add("filename", Support::datapath("las/simple.las")); PointTable table; LasReader reader; reader.setOptions(readerOps); reader.prepare(table); PointViewSet views = reader.execute(table); PointViewPtr v = *(views.begin()); PointViewPtr v1(new PointView(table)); PointViewPtr v2(new PointView(table)); PointViewPtr v3(new PointView(table)); std::vector<PointViewPtr> vs; vs.push_back(v1); vs.push_back(v2); vs.push_back(v3); for (PointId i = 0; i < v->size(); ++i) vs[i % 3]->appendPoint(*v, i); for (size_t i = 0; i < outname.size(); ++i) FileUtils::deleteFile(Support::temppath(outname[i])); BufferReader reader2; reader2.addView(v1); reader2.addView(v2); reader2.addView(v3); Options writerOps; writerOps.add("filename", Support::temppath("test_#.las")); LasWriter writer; writer.setOptions(writerOps); writer.setInput(reader2); writer.prepare(table); writer.execute(table); for (size_t i = 0; i < outname.size(); ++i) { std::string filename = Support::temppath(outname[i]); EXPECT_TRUE(FileUtils::fileExists(filename)); Options ops; ops.add("filename", filename); LasReader r; r.setOptions(ops); EXPECT_EQ(r.preview().m_pointCount, 355u); } }
TEST(LasReaderTest, inspect) { Options ops; ops.add("filename", Support::datapath("las/epsg_4326.las")); LasReader reader; reader.setOptions(ops); QuickInfo qi = reader.preview(); std::string testWkt = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433],AUTHORITY[\"EPSG\",\"4326\"]]"; #ifdef PDAL_HAVE_LIBGEOTIFF EXPECT_EQ(qi.m_srs.getWKT(), testWkt); #endif // PDAL_HAVE_LIBGEOTIFF EXPECT_EQ(qi.m_pointCount, 5380u); BOX3D bounds(-94.683465399999989, 31.0367341, 39.081000199999998, -94.660631099999989, 31.047329099999999, 78.119000200000002); EXPECT_EQ(qi.m_bounds, bounds); const char *dims[] = { "Classification", "EdgeOfFlightLine", "Intensity", "NumberOfReturns", "PointSourceId", "ReturnNumber", "ScanAngleRank", "ScanDirectionFlag", "UserData", "X", "Y", "Z" }; std::sort(qi.m_dimNames.begin(), qi.m_dimNames.end()); EXPECT_TRUE(CheckEqualCollections(qi.m_dimNames.begin(), qi.m_dimNames.end(), std::begin(dims))); }