MCPcopy Create free account
hub / github.com/PDAL/PDAL / TEST

Function TEST

test/unit/filters/NNDistanceTest.cpp:43–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41using namespace pdal;
42
43TEST(NNDistanceTest, kdist)
44{
45 StageFactory f;
46 Stage *reader(f.createStage("readers.faux"));
47 Stage *filter(f.createStage("filters.nndistance"));
48
49 // Make a 10x10x10 grid of points.
50 Options rOpts;
51 rOpts.add("mode", "grid");
52 rOpts.add("bounds", "([0, 10],[0,10],[0,10])");
53 rOpts.add("count", 1000);
54 reader->setOptions(rOpts);
55
56 // Kth distance with k == 3
57 Options fOpts;
58 fOpts.add("mode", "kth");
59 fOpts.add("k", 3);
60 filter->setOptions(fOpts);
61 filter->setInput(*reader);
62
63 PointTable t;
64 filter->prepare(t);
65 PointViewSet s = filter->execute(t);
66 PointViewPtr v = *(s.begin());
67
68 for (PointId i = 0; i < v->size(); ++i)
69 EXPECT_EQ(v->getFieldAs<double>(Dimension::Id::NNDistance, i), 1);
70
71 // Kth distance with k == 4
72 Options opts2;
73 opts2.add("k", 4);
74 filter->setOptions(opts2);
75
76 PointTable t2;
77 filter->prepare(t2);
78 s = filter->execute(t2);
79 v = *(s.begin());
80
81 for (PointId i = 0; i < v->size(); ++i)
82 {
83 double d = v->getFieldAs<double>(Dimension::Id::NNDistance, i);
84 double x = v->getFieldAs<double>(Dimension::Id::X, i);
85 double y = v->getFieldAs<double>(Dimension::Id::Y, i);
86 double z = v->getFieldAs<double>(Dimension::Id::Z, i);
87 if ((x == 9 || x == 0) && (y == 9 || y == 0) && (z == 9 || z == 0))
88 EXPECT_EQ(d, sqrt(2));
89 }
90
91 // Test for avg distance.
92 Options opts3;
93 opts3.add("mode", "avg");
94 opts3.add("k", 6);
95 filter->setOptions(opts3);
96
97 PointTable t3;
98 filter->prepare(t3);
99 s = filter->execute(t3);
100 v = *(s.begin());

Callers

nothing calls this directly

Calls 8

createStageMethod · 0.80
setOptionsMethod · 0.80
filterFunction · 0.50
addMethod · 0.45
prepareMethod · 0.45
executeMethod · 0.45
beginMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected