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

Class PointToMwmId

tools/track_analyzing/log_parser.cpp:48–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46}
47
48class PointToMwmId final
49{
50public:
51 PointToMwmId(shared_ptr<m4::Tree<routing::NumMwmId>> mwmTree, routing::NumMwmIds const & numMwmIds,
52 string const & dataDir)
53 : m_mwmTree(mwmTree)
54 {
55 numMwmIds.ForEachId([&](routing::NumMwmId numMwmId)
56 {
57 string const & mwmName = numMwmIds.GetFile(numMwmId).GetName();
58 string const polyFile = base::JoinPath(dataDir, BORDERS_DIR, mwmName + BORDERS_EXTENSION);
59 borders::LoadBorders(polyFile, m_borders[numMwmId]);
60 });
61 }
62
63 routing::NumMwmId FindMwmId(m2::PointD const & point, routing::NumMwmId expectedId) const
64 {
65 if (expectedId != routing::kFakeNumMwmId && m2::RegionsContain(GetBorders(expectedId), point))
66 return expectedId;
67
68 routing::NumMwmId result = routing::kFakeNumMwmId;
69 m2::RectD const rect = mercator::RectByCenterXYAndSizeInMeters(point, 1);
70 m_mwmTree->ForEachInRect(rect, [&](routing::NumMwmId numMwmId)
71 {
72 if (result == routing::kFakeNumMwmId && m2::RegionsContain(GetBorders(numMwmId), point))
73 result = numMwmId;
74 });
75
76 return result;
77 }
78
79private:
80 vector<m2::RegionD> const & GetBorders(routing::NumMwmId numMwmId) const
81 {
82 auto it = m_borders.find(numMwmId);
83 CHECK(it != m_borders.cend(), ());
84 return it->second;
85 }
86
87 shared_ptr<m4::Tree<routing::NumMwmId>> m_mwmTree;
88 ankerl::unordered_dense::map<routing::NumMwmId, vector<m2::RegionD>> m_borders;
89};
90} // namespace
91
92namespace track_analyzing

Callers

nothing calls this directly

Calls 2

findMethod · 0.45
cendMethod · 0.45

Tested by

no test coverage detected