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

Class LocalitiesLoader

libs/search/locality_finder.cpp:65–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63};
64
65class LocalitiesLoader
66{
67public:
68 LocalitiesLoader(MwmContext const & ctx, CitiesBoundariesTable const & boundaries, Filter const & filter,
69 LocalityFinder::Holder & holder,
70 map<MwmSet::MwmId, ankerl::unordered_dense::set<uint32_t>> & loadedIds)
71 : m_ctx(ctx)
72 , m_boundaries(boundaries)
73 , m_filter(filter)
74 , m_holder(holder)
75 , m_loadedIds(loadedIds[m_ctx.GetId()])
76 {}
77
78 void operator()(uint32_t id) const
79 {
80 if (!m_filter.IsGood(id))
81 return;
82
83 if (m_loadedIds.count(id) != 0)
84 return;
85
86 auto ft = m_ctx.GetFeature(id);
87 if (!ft)
88 return;
89
90 if (ft->GetGeomType() != feature::GeomType::Point)
91 return;
92
93 using namespace ftypes;
94 switch (IsLocalityChecker::Instance().GetType(*ft))
95 {
96 case LocalityType::City:
97 case LocalityType::Town:
98 case LocalityType::Village: break;
99 default: return;
100 }
101
102 auto const population = ftypes::GetPopulation(*ft);
103 if (population == 0)
104 return;
105
106 auto const & names = ft->GetNames();
107 auto const center = ft->GetCenter();
108
109 CitiesBoundariesTable::Boundaries boundaries;
110 auto const fid = ft->GetID();
111 m_boundaries.Get(fid, boundaries);
112
113 m_holder.Add(LocalityItem(names, center, std::move(boundaries), population, fid));
114 m_loadedIds.insert(id);
115 }
116
117private:
118 MwmContext const & m_ctx;
119 CitiesBoundariesTable const & m_boundaries;
120 Filter const & m_filter;
121
122 LocalityFinder::Holder & m_holder;

Callers 1

LoadVicinityMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected