Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortatiana-yan <tatiana.kondakova@gmail.com>2019-04-11 14:08:13 +0300
committerMaksim Andrianov <maksimandrianov1@gmail.com>2019-04-12 12:26:16 +0300
commit1eb7a1d11626f1598dbd3c3bcab841e7a6cc4c40 (patch)
tree3c7deef05133bd77a168107bfc7b03c946cbc282 /generator
parent0a70b7f11a8867f0628eddf8f2fd1780297772b1 (diff)
[generator] Use ParseFeatureIdToOsmIdMapping for popularity and ugc sections build. Convert FeatureIdToOsmIdMapping to unordered map.
Diffstat (limited to 'generator')
-rw-r--r--generator/cities_boundaries_builder.cpp9
-rw-r--r--generator/descriptions_section_builder.hpp6
-rw-r--r--generator/popular_places_section_builder.cpp12
-rw-r--r--generator/ugc_section_builder.cpp16
-rw-r--r--generator/utils.cpp5
-rw-r--r--generator/utils.hpp7
6 files changed, 26 insertions, 29 deletions
diff --git a/generator/cities_boundaries_builder.cpp b/generator/cities_boundaries_builder.cpp
index 3e56312c43..4466ba5c2a 100644
--- a/generator/cities_boundaries_builder.cpp
+++ b/generator/cities_boundaries_builder.cpp
@@ -24,8 +24,8 @@
#include "base/logging.hpp"
#include "base/string_utils.hpp"
-#include <map>
#include <memory>
+#include <unordered_map>
#include <utility>
#include <vector>
@@ -39,7 +39,8 @@ namespace generator
{
namespace
{
-bool ParseFeatureIdToTestIdMapping(string const & path, map<uint32_t, vector<uint64_t>> & mapping)
+bool ParseFeatureIdToTestIdMapping(string const & path,
+ unordered_map<uint32_t, vector<uint64_t>> & mapping)
{
bool success = true;
feature::ForEachFromDat(path, [&](FeatureType & feature, uint32_t fid) {
@@ -106,7 +107,7 @@ bool BuildCitiesBoundaries(string const & dataPath, BoundariesTable & table,
bool BuildCitiesBoundaries(string const & dataPath, string const & osmToFeaturePath,
OsmIdToBoundariesTable & table)
{
- using Mapping = map<uint32_t, vector<base::GeoObjectId>>;
+ using Mapping = unordered_map<uint32_t, vector<base::GeoObjectId>>;
return BuildCitiesBoundaries(dataPath, table, [&]() -> unique_ptr<Mapping> {
Mapping mapping;
@@ -121,7 +122,7 @@ bool BuildCitiesBoundaries(string const & dataPath, string const & osmToFeatureP
bool BuildCitiesBoundariesForTesting(string const & dataPath, TestIdToBoundariesTable & table)
{
- using Mapping = map<uint32_t, vector<uint64_t>>;
+ using Mapping = unordered_map<uint32_t, vector<uint64_t>>;
return BuildCitiesBoundaries(dataPath, table, [&]() -> unique_ptr<Mapping> {
Mapping mapping;
diff --git a/generator/descriptions_section_builder.hpp b/generator/descriptions_section_builder.hpp
index 15450c9856..b0ffe07fd9 100644
--- a/generator/descriptions_section_builder.hpp
+++ b/generator/descriptions_section_builder.hpp
@@ -21,8 +21,8 @@
#include <cstddef>
#include <cstdint>
#include <functional>
-#include <map>
#include <string>
+#include <unordered_map>
#include <utility>
#include <vector>
@@ -46,8 +46,8 @@ public:
private:
std::string m_mwmPath;
std::string m_idToWikidataPath;
- std::map<uint32_t, std::vector<base::GeoObjectId>> m_featureIdToOsmId;
- std::map<base::GeoObjectId, std::string> m_osmIdToWikidataId;
+ std::unordered_map<uint32_t, std::vector<base::GeoObjectId>> m_featureIdToOsmId;
+ std::unordered_map<base::GeoObjectId, std::string> m_osmIdToWikidataId;
};
template <class T>
diff --git a/generator/popular_places_section_builder.cpp b/generator/popular_places_section_builder.cpp
index 73dac9ce1b..3623531b02 100644
--- a/generator/popular_places_section_builder.cpp
+++ b/generator/popular_places_section_builder.cpp
@@ -71,11 +71,9 @@ bool BuildPopularPlacesMwmSection(std::string const & srcFilename, std::string c
LOG(LINFO, ("Build Popular Places section"));
- std::unordered_map<uint32_t, base::GeoObjectId> featureIdToOsmId;
- ForEachOsmId2FeatureId(osmToFeatureFilename,
- [&featureIdToOsmId](base::GeoObjectId const & osmId, uint32_t fId) {
- featureIdToOsmId.emplace(fId, osmId);
- });
+ std::unordered_map<uint32_t, std::vector<base::GeoObjectId>> featureIdToOsmId;
+ if (!ParseFeatureIdToOsmIdMapping(osmToFeatureFilename, featureIdToOsmId))
+ return false;
PopularPlaces places;
LoadPopularPlaces(srcFilename, places);
@@ -90,9 +88,9 @@ bool BuildPopularPlacesMwmSection(std::string const & srcFilename, std::string c
PopularityIndex rank = 0;
auto const it = featureIdToOsmId.find(featureId);
// Non-OSM features (coastlines, sponsored objects) are not used.
- if (it != featureIdToOsmId.cend())
+ if (it != featureIdToOsmId.cend() && it->second.size() != 0)
{
- auto const placesIt = places.find(it->second);
+ auto const placesIt = places.find(it->second[0]);
if (placesIt != places.cend())
{
diff --git a/generator/ugc_section_builder.cpp b/generator/ugc_section_builder.cpp
index 78d039dc8d..af0aad89f9 100644
--- a/generator/ugc_section_builder.cpp
+++ b/generator/ugc_section_builder.cpp
@@ -1,7 +1,7 @@
#include "generator/ugc_section_builder.hpp"
-#include "generator/gen_mwm_info.hpp"
#include "generator/ugc_translator.hpp"
+#include "generator/utils.hpp"
#include "ugc/binary/index_ugc.hpp"
#include "ugc/binary/serdes.hpp"
@@ -14,6 +14,7 @@
#include <unordered_map>
#include <utility>
+#include <vector>
namespace generator
{
@@ -24,15 +25,10 @@ bool BuildUgcMwmSection(std::string const & srcDbFilename, std::string const & m
LOG(LINFO, ("Build UGC section"));
- gen::OsmID2FeatureID osmIdsToFeatureIds;
- if (!osmIdsToFeatureIds.ReadFromFile(osmToFeatureFilename))
+ std::unordered_map<uint32_t, std::vector<base::GeoObjectId>> featureToOsmId;
+ if (!ParseFeatureIdToOsmIdMapping(osmToFeatureFilename, featureToOsmId))
return false;
- std::unordered_map<uint32_t, base::GeoObjectId> featureToOsmId;
- osmIdsToFeatureIds.ForEach([&featureToOsmId](gen::OsmID2FeatureID::ValueT const & p) {
- featureToOsmId.emplace(p.second /* feature id */, p.first /* osm id */);
- });
-
UGCTranslator translator(srcDbFilename);
std::vector<IndexUGC> content;
@@ -46,11 +42,11 @@ bool BuildUgcMwmSection(std::string const & srcDbFilename, std::string const & m
return;
auto const it = featureToOsmId.find(featureId);
- CHECK(it != featureToOsmId.cend(),
+ CHECK(it != featureToOsmId.cend() && it->second.size() != 0,
("FeatureID", featureId, "is not found in", osmToFeatureFilename));
ugc::UGC result;
- if (!translator.TranslateUGC(it->second, result))
+ if (!translator.TranslateUGC(it->second[0], result))
return;
if (result.IsEmpty())
diff --git a/generator/utils.cpp b/generator/utils.cpp
index 60cb8c28e0..e2bc64ce74 100644
--- a/generator/utils.cpp
+++ b/generator/utils.cpp
@@ -45,8 +45,9 @@ void LoadDataSource(DataSource & dataSource)
}
}
-bool ParseFeatureIdToOsmIdMapping(std::string const & path,
- std::map<uint32_t, std::vector<base::GeoObjectId>> & mapping)
+bool ParseFeatureIdToOsmIdMapping(
+ std::string const & path,
+ std::unordered_map<uint32_t, std::vector<base::GeoObjectId>> & mapping)
{
return ForEachOsmId2FeatureId(path,
[&](base::GeoObjectId const & osmId, uint32_t const featureId) {
diff --git a/generator/utils.hpp b/generator/utils.hpp
index 1311e1b50a..ae0a915e1d 100644
--- a/generator/utils.hpp
+++ b/generator/utils.hpp
@@ -15,8 +15,8 @@
#include "base/logging.hpp"
#include <cstdint>
-#include <map>
#include <string>
+#include <unordered_map>
#include <vector>
namespace generator
@@ -63,6 +63,7 @@ bool ForEachOsmId2FeatureId(std::string const & path, ToDo && toDo)
return true;
}
-bool ParseFeatureIdToOsmIdMapping(std::string const & path,
- std::map<uint32_t, std::vector<base::GeoObjectId>> & mapping);
+bool ParseFeatureIdToOsmIdMapping(
+ std::string const & path,
+ std::unordered_map<uint32_t, std::vector<base::GeoObjectId>> & mapping);
} // namespace generator