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:
-rw-r--r--data/mapcss-mapping.csv14
-rw-r--r--data/mixed_tags.txt99
-rw-r--r--data/styles/clear/include/POI.mapcss5
-rw-r--r--defines.hpp1
-rw-r--r--generator/osm_element.cpp7
-rw-r--r--generator/osm_element.hpp2
-rw-r--r--generator/osm_source.cpp2
-rw-r--r--generator/tag_admixer.hpp52
8 files changed, 182 insertions, 0 deletions
diff --git a/data/mapcss-mapping.csv b/data/mapcss-mapping.csv
index 5c5cbfa4fa..9bee4d8ce9 100644
--- a/data/mapcss-mapping.csv
+++ b/data/mapcss-mapping.csv
@@ -1122,3 +1122,17 @@ wheelchair|yes;1121;
wheelchair|no;1122;
wheelchair|limited;1123;
building|has_parts;1124;
+olympics|transport_airport;1125;
+olympics|transport_railway;1126;
+olympics|transport_boat;1127;
+olympics|transport_bus;1128;
+olympics|transport_tram;1129;
+olympics|transport_cable;1130;
+olympics|transport_subway;1131;
+olympics|official_building;1132;
+olympics|attraction;1133;
+olympics|live_site;1134;
+olympics|stadium_main;1135;
+olympics|stadium;1136;
+olympics|water_sport;1137;
+olympics|bike_sport;1138;
diff --git a/data/mixed_tags.txt b/data/mixed_tags.txt
new file mode 100644
index 0000000000..c3e678d4e7
--- /dev/null
+++ b/data/mixed_tags.txt
@@ -0,0 +1,99 @@
+# Rio Olympics 2016
+
+relation,4587734,olympics=stadium_main
+relation,2339171,olympics=stadium
+relation,5588915,olympics=stadium
+way,34306743,olympics=stadium
+node,3798056173,olympics=water_sport
+way,379876930,olympics=stadium
+node,3797538023,olympics=stadium
+way,168180207,olympics=stadium
+relation,5637037,olympics=stadium
+way,376577208,olympics=stadium
+node,3798056170,olympics=stadium
+way,420906788,olympics=stadium
+way,427208124,olympics=water_sport
+node,30658151,olympics=water_sport
+way,378126224,olympics=bike_sport
+way,427213856,olympics=bike_sport
+node,3798056171,olympics=stadium
+way,379876931,olympics=bike_sport
+way,183027595,olympics=water_sport
+way,429227065,olympics=stadium
+relation,5637039,olympics=stadium
+relation,4600394,olympics=stadium
+relation,4585474,olympics=stadium
+way,248504367,olympics=stadium
+way,178591262,olympics=stadium
+way,178504792,olympics=stadium
+relation,5638335,olympics=stadium
+way,378126259,olympics=stadium
+way,378766546,olympics=stadium
+relation,5637038,olympics=stadium
+node,3799202348,olympics=stadium
+way,378766541,olympics=stadium
+way,427212665,olympics=stadium
+way,378126244,olympics=water_sport
+way,168180213,olympics=stadium
+relation,6391346,olympics=stadium
+way,168180214,olympics=stadium
+relation,5357403,olympics=attraction
+relation,5514745,olympics=attraction
+way,38541244,olympics=attraction
+way,196716675,olympics=attraction
+node,34582421,olympics=attraction
+way,30775624,olympics=attraction
+way,30621926,olympics=attraction
+way,107748847,olympics=attraction
+way,30626207,olympics=attraction
+node,3311090687,olympics=attraction
+relation,4511987,olympics=attraction
+way,184247648,olympics=attraction
+relation,5680416,olympics=attraction
+relation,3896781,olympics=transport_airport
+way,383711861,olympics=transport_airport
+node,1042059941,olympics=transport_airport
+relation,5141542,olympics=transport_airport
+way,96494371,olympics=transport_airport
+node,111744054,olympics=transport_airport
+node,2103065059,olympics=transport_airport
+way,217885815,olympics=transport_airport
+way,223285882,olympics=transport_airport
+node,712849026,olympics=transport_railway
+node,4058091948,olympics=transport_railway
+node,745762499,olympics=transport_railway
+node,745762489,olympics=transport_railway
+node,745762402,olympics=transport_railway
+node,165688241,olympics=transport_subway
+node,712849129,olympics=transport_subway
+node,712849124,olympics=transport_subway
+node,598748916,olympics=transport_subway
+node,4058328009,olympics=transport_cable
+node,4058328011,olympics=transport_cable
+way,193659993,olympics=transport_boat
+way,184972818,olympics=transport_boat
+way,173411869,olympics=transport_bus
+node,479023344,olympics=transport_tram
+node,468684529,olympics=transport_tram
+way,183864758,olympics=official_building
+way,420906788,olympics=official_building
+relation,5643698,olympics=official_building
+way,378126258,olympics=official_building
+way,288199181,olympics=official_building
+way,288199192,olympics=official_building
+relation,5642080,olympics=live_site
+relation,5642081,olympics=attraction
+node,3804327279,olympics=attraction
+way,64370351,olympics=attraction
+way,95100695,olympics=attraction
+relation,1124651,olympics=attraction
+node,1307380772,olympics=attraction
+node,451131919,olympics=attraction
+node,142913585,olympics=attraction
+way,119872942,olympics=attraction
+way,30988828,olympics=attraction
+way,209735593,olympics=attraction
+way,34881403,olympics=transport_buses
+node,516640062,olympics=transport_subway
+way,227022822,olympics=attraction
+way,161200602,olympics=transport_buses
diff --git a/data/styles/clear/include/POI.mapcss b/data/styles/clear/include/POI.mapcss
index db2def206a..68abfc8d3a 100644
--- a/data/styles/clear/include/POI.mapcss
+++ b/data/styles/clear/include/POI.mapcss
@@ -920,3 +920,8 @@ line|z16-[barrier=gate],
line|z16-[barrier=stile],
line|z16-[power=tower],
{ icon-image: dot-m.svg; text-offset: 10; font-size: 11; text: name; text-color: @poi_label;z-index: 2500; }
+
+/* OLYMPICS */
+node|z13-[olympics], area|z13-[olympics] { icon-image: tourism-s.svg; text-offset: 10; font-size: 10; text: name; text-color: @poi_label; z-index: 2600; icon-min-distance: 20;}
+node|z15-[olympics], area|z15-[olympics] { icon-image: tourism-m.svg; }
+node|z17-[olympics], area|z17-[olympics] { icon-image: tourism-l.svg; }
diff --git a/defines.hpp b/defines.hpp
index 328e73a938..c23dc901cc 100644
--- a/defines.hpp
+++ b/defines.hpp
@@ -72,5 +72,6 @@
#define GPS_TRACK_FILENAME "gps_track.dat"
#define REPLACED_TAGS_FILE "replaced_tags.txt"
+#define MIXED_TAGS_FILE "mixed_tags.txt"
#define LOCALIZATION_DESCRIPTION_SUFFIX " Description"
diff --git a/generator/osm_element.cpp b/generator/osm_element.cpp
index 5e54137283..272bf4cc4b 100644
--- a/generator/osm_element.cpp
+++ b/generator/osm_element.cpp
@@ -138,3 +138,10 @@ string DebugPrint(OsmElement const & e)
{
return e.ToString();
}
+
+string DebugPrint(OsmElement::Tag const & tag)
+{
+ stringstream ss;
+ ss << tag.key << '=' << tag.value;
+ return ss.str();
+}
diff --git a/generator/osm_element.hpp b/generator/osm_element.hpp
index 6a89905b9b..cca5e99717 100644
--- a/generator/osm_element.hpp
+++ b/generator/osm_element.hpp
@@ -157,3 +157,5 @@ struct OsmElement
};
string DebugPrint(OsmElement const & e);
+string DebugPrint(OsmElement::EntityType e);
+string DebugPrint(OsmElement::Tag const & tag);
diff --git a/generator/osm_source.cpp b/generator/osm_source.cpp
index 236303b92f..b3bfdf13ea 100644
--- a/generator/osm_source.cpp
+++ b/generator/osm_source.cpp
@@ -514,6 +514,7 @@ bool GenerateFeaturesImpl(feature::GenerateInfo & info)
TagAdmixer tagAdmixer(info.GetIntermediateFileName("ways", ".csv"),
info.GetIntermediateFileName("towns", ".csv"));
TagReplacer tagReplacer(GetPlatform().ResourcesDir() + REPLACED_TAGS_FILE);
+ OsmTagMixer osmTagMixer(GetPlatform().ResourcesDir() + MIXED_TAGS_FILE);
// If info.m_bookingDatafileName is empty then no data will be loaded.
generator::BookingDataset bookingDataset(info.m_bookingDatafileName,
@@ -526,6 +527,7 @@ bool GenerateFeaturesImpl(feature::GenerateInfo & info)
{
tagReplacer(e);
tagAdmixer(e);
+ osmTagMixer(e);
if (bookingDataset.BookingFilter(*e))
{
diff --git a/generator/tag_admixer.hpp b/generator/tag_admixer.hpp
index 4139c01cd2..0aa14a6353 100644
--- a/generator/tag_admixer.hpp
+++ b/generator/tag_admixer.hpp
@@ -180,3 +180,55 @@ public:
}
}
};
+
+class OsmTagMixer
+{
+ map<pair<OsmElement::EntityType, uint64_t>, vector<OsmElement::Tag>> m_elements;
+
+public:
+ OsmTagMixer(string const & filePath)
+ {
+ ifstream stream(filePath);
+ vector<string> values;
+ vector<OsmElement::Tag> tags;
+ string line;
+ while (std::getline(stream, line))
+ {
+ if (line.empty() || line.front() == '#')
+ continue;
+
+ strings::ParseCSVRow(line, ',', values);
+ if (values.size() < 3)
+ continue;
+
+ OsmElement::EntityType entityType = OsmElement::StringToEntityType(values[0]);
+ uint64_t id;
+ if (entityType == OsmElement::EntityType::Unknown || !strings::to_uint64(values[1], id))
+ continue;
+
+ for (size_t i = 2; i < values.size(); ++i)
+ {
+ auto p = values[i].find('=');
+ if (p != string::npos)
+ tags.push_back(OsmElement::Tag(values[i].substr(0, p), values[i].substr(p + 1)));
+ }
+
+ if (!tags.empty())
+ {
+ pair<OsmElement::EntityType, uint64_t> elementPair = {entityType, id};
+ m_elements[elementPair].swap(tags);
+ }
+ }
+ }
+
+ void operator()(OsmElement * p)
+ {
+ pair<OsmElement::EntityType, uint64_t> elementId = {p->type, p->id};
+ auto elements = m_elements.find(elementId);
+ if (elements != m_elements.end())
+ {
+ for (OsmElement::Tag tag : elements->second)
+ p->AddTag(tag.key, tag.value);
+ }
+ }
+};