| 44 | namespace pdal { |
| 45 | |
| 46 | TEST(DimensionalityTest, Linearity) |
| 47 | { |
| 48 | using namespace Dimension; |
| 49 | |
| 50 | PointTable table; |
| 51 | table.layout()->registerDims({Id::X, Id::Y, Id::Z}); |
| 52 | |
| 53 | BufferReader bufferReader; |
| 54 | CovarianceFeaturesFilter filter; |
| 55 | Options ops; |
| 56 | ops.add("knn", 3); |
| 57 | ops.add("feature_set", "Dimensionality,Omnivariance,Anisotropy,Eigenentropy,EigenvalueSum,SurfaceVariation,DemantkeVerticality"); |
| 58 | filter.setInput(bufferReader); |
| 59 | filter.setOptions(ops); |
| 60 | filter.prepare(table); |
| 61 | |
| 62 | PointViewPtr view(new PointView(table)); |
| 63 | view->setField(Id::X, 0,0); |
| 64 | view->setField(Id::X, 1, 0); |
| 65 | view->setField(Id::X, 2, 0); |
| 66 | view->setField(Id::Y, 0, 0); |
| 67 | view->setField(Id::Y, 1, 0); |
| 68 | view->setField(Id::Y, 2, 0); |
| 69 | view->setField(Id::Z, 0, 0); |
| 70 | view->setField(Id::Z, 1, 1); |
| 71 | view->setField(Id::Z, 2, 2); |
| 72 | bufferReader.addView(view); |
| 73 | |
| 74 | PointViewSet viewSet = filter.execute(table); |
| 75 | PointViewPtr outView = *viewSet.begin(); |
| 76 | |
| 77 | for (point_count_t i =0; i < outView->size(); i++) |
| 78 | { |
| 79 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Linearity, i) ,1); |
| 80 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Verticality, i) ,1); |
| 81 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Planarity, i) ,0); |
| 82 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Scattering, i) ,0); |
| 83 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Omnivariance, i), 0); |
| 84 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::Anisotropy, i), 1); |
| 85 | ASSERT_TRUE(std::isnan(outView->getFieldAs<float>(Id::Eigenentropy, i))); |
| 86 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::EigenvalueSum, i), 1); |
| 87 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::SurfaceVariation, i), 0); |
| 88 | ASSERT_FLOAT_EQ(outView->getFieldAs<float>(Id::DemantkeVerticality, i), 1); |
| 89 | } |
| 90 | } |
| 91 | |
| 92 | TEST(DimensionalityTest, Planarity) |
| 93 | { |
nothing calls this directly
no test coverage detected