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

Function TEST

test/unit/filters/M3C2FilterTest.cpp:15–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13{
14
15TEST(M3C2FilterTest, test1)
16{
17 using namespace Dimension;
18 PointTable table;
19
20 Options ro1;
21 Options ro2;
22 Options ro3;
23 LasReader r1;
24 LasReader r2;
25 TextReader r3;
26 ro1.add("filename", Support::datapath("autzen/autzen-bmx-2010.las"));
27 ro2.add("filename", Support::datapath("autzen/autzen-bmx-2023.las"));
28 // contains 3 points picked from the first file to use as core points
29 ro3.add("filename", Support::datapath("autzen/autzen-bmx-cores.txt"));
30 r1.setOptions(ro1);
31 r2.setOptions(ro2);
32 r3.setOptions(ro3);
33
34 M3C2Filter filter;
35 Options fo;
36 fo.add("normal_radius", 5.24414);
37 fo.add("cyl_radius", 10.4882815);
38 fo.add("cyl_halflen", 2.763006);
39
40 filter.setOptions(fo);
41 filter.setInput(r1);
42 filter.setInput(r2);
43 filter.setInput(r3);
44
45 filter.prepare(table);
46 PointViewSet viewSet = filter.execute(table);
47
48 EXPECT_EQ(1u, viewSet.size());
49 PointViewPtr viewOut = *viewSet.begin();
50
51 Dimension::Id distance = viewOut->layout()->findDim("m3c2_distance");
52 Dimension::Id uncertainty = viewOut->layout()->findDim("m3c2_uncertainty");
53 Dimension::Id significant = viewOut->layout()->findDim("m3c2_significant");
54 Dimension::Id stdDev1 = viewOut->layout()->findDim("m3c2_std_dev1");
55 Dimension::Id stdDev2 = viewOut->layout()->findDim("m3c2_std_dev2");
56 Dimension::Id c1 = viewOut->layout()->findDim("m3c2_count1");
57 Dimension::Id c2 = viewOut->layout()->findDim("m3c2_count2");
58
59 EXPECT_TRUE(viewOut->hasDim(distance));
60 EXPECT_TRUE(viewOut->hasDim(uncertainty));
61 EXPECT_TRUE(viewOut->hasDim(significant));
62 EXPECT_TRUE(viewOut->hasDim(stdDev1));
63 EXPECT_TRUE(viewOut->hasDim(stdDev2));
64 EXPECT_TRUE(viewOut->hasDim(c1));
65 EXPECT_TRUE(viewOut->hasDim(c2));
66
67 EXPECT_NEAR(viewOut->getFieldAs<float>(distance, 0), 1.396, 0.01);
68 EXPECT_NEAR(viewOut->getFieldAs<float>(distance, 1), 0.670, 0.01);
69 EXPECT_NEAR(viewOut->getFieldAs<float>(distance, 2), 1.246, 0.01);
70 for (size_t i = 0; i < viewOut->size(); ++i)
71 EXPECT_EQ(viewOut->getFieldAs<float>(significant, i), 1);
72 EXPECT_NEAR(viewOut->getFieldAs<float>(uncertainty, 0), 0.275, 0.01);

Callers

nothing calls this directly

Calls 9

datapathFunction · 0.85
setOptionsMethod · 0.80
hasDimMethod · 0.80
addMethod · 0.45
prepareMethod · 0.45
executeMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
findDimMethod · 0.45

Tested by

no test coverage detected