MCPcopy Create free account
hub / github.com/comaps/comaps / ReadPoints

Function ReadPoints

libs/drape_frontend/read_metaline_task.cpp:71–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

69}
70
71ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> ReadPoints(df::MapDataProvider & model,
72 MetalineData const & metaline)
73{
74 auto features = metaline.m_features;
75 std::sort(features.begin(), features.end());
76
77 ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> result;
78 model.ReadFeatures([&metaline, &result](FeatureType & ft)
79 {
80 ft.ParseGeometry(FeatureType::BEST_GEOMETRY);
81 size_t const count = ft.GetPointsCount();
82
83 std::vector<m2::PointD> featurePoints;
84 featurePoints.reserve(count);
85 featurePoints.push_back(ft.GetPoint(0));
86
87 for (size_t i = 1; i < count; ++i)
88 {
89 auto const & pt = ft.GetPoint(i);
90 if (!featurePoints.back().EqualDxDy(pt, kMwmPointAccuracy))
91 featurePoints.push_back(pt);
92 }
93
94 if (metaline.m_reversed.find(ft.GetID()) != metaline.m_reversed.cend())
95 std::reverse(featurePoints.begin(), featurePoints.end());
96
97 result.emplace(ft.GetID(), std::move(featurePoints));
98 }, features);
99
100 return result;
101}
102
103std::vector<m2::PointD> MergePoints(ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> && points,
104 std::vector<FeatureID> const & featuresOrder)

Callers 1

RunMethod · 0.85

Calls 14

ParseGeometryMethod · 0.80
backMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
ReadFeaturesMethod · 0.45
GetPointsCountMethod · 0.45
reserveMethod · 0.45
push_backMethod · 0.45
GetPointMethod · 0.45
EqualDxDyMethod · 0.45
findMethod · 0.45
GetIDMethod · 0.45

Tested by

no test coverage detected