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

Method run

filters/ExpressionFilter.cpp:120–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

118
119
120PointViewSet ExpressionFilter::run(PointViewPtr inView)
121{
122 PointViewSet viewSet;
123 if (!inView->size())
124 return viewSet;
125
126 // make a view for each one of our expressions
127
128 std::vector<PointViewPtr> views;
129 for (expr::ConditionalExpression& expr: m_args->m_expressions)
130 {
131 PointViewPtr outView = inView->makeNew();
132 views.push_back(outView);
133 }
134
135 // eval our expression across each point for each view.
136 // TODO: make this threaded
137 for (PointRef point : *inView)
138 {
139 for (size_t i = 0; i < views.size(); i++)
140 {
141 auto& view = views[i];
142 auto& expr = m_args->m_expressions[i];
143
144 bool status = expr.eval(point);
145 if (status)
146 view->appendPoint(*inView.get(), point.pointId());
147 }
148 }
149
150 for(auto& v: views)
151 viewSet.insert(v);
152
153 return viewSet;
154}
155
156} // namespace pdal

Callers

nothing calls this directly

Calls 5

appendPointMethod · 0.80
sizeMethod · 0.45
evalMethod · 0.45
getMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected