forked from organicmaps/organicmaps
Merge pull request #3843 from Zverik/olympics2
[olympics] Mix objects with olympics tag (→master)
This commit is contained in:
commit
4eda4a4f24
17 changed files with 5058 additions and 0 deletions
|
@ -533,6 +533,22 @@ world +
|
|||
lawyer -
|
||||
telecommunication -
|
||||
{}
|
||||
olympics +
|
||||
attraction -
|
||||
bike_sport -
|
||||
live_site -
|
||||
official_building -
|
||||
stadium -
|
||||
stadium_main -
|
||||
transport_airport -
|
||||
transport_boat -
|
||||
transport_bus -
|
||||
transport_cable -
|
||||
transport_railway -
|
||||
transport_subway -
|
||||
transport_tram -
|
||||
water_sport -
|
||||
{}
|
||||
piste:lift +
|
||||
j-bar -
|
||||
magic_carpet -
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -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;
|
||||
|
|
|
99
data/mixed_tags.txt
Normal file
99
data/mixed_tags.txt
Normal file
|
@ -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
|
|
@ -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; }
|
||||
|
|
|
@ -1122,3 +1122,17 @@ wheelchair|yes
|
|||
wheelchair|no
|
||||
wheelchair|limited
|
||||
building|has_parts
|
||||
olympics|transport_airport
|
||||
olympics|transport_railway
|
||||
olympics|transport_boat
|
||||
olympics|transport_bus
|
||||
olympics|transport_tram
|
||||
olympics|transport_cable
|
||||
olympics|transport_subway
|
||||
olympics|official_building
|
||||
olympics|attraction
|
||||
olympics|live_site
|
||||
olympics|stadium_main
|
||||
olympics|stadium
|
||||
olympics|water_sport
|
||||
olympics|bike_sport
|
||||
|
|
|
@ -533,6 +533,22 @@ world 00000000000000000000 +
|
|||
lawyer 00000000000000000111 -
|
||||
telecommunication 00000000000000000111 -
|
||||
{}
|
||||
olympics 00000000000000000000 +
|
||||
attraction 00000000000000000000 -
|
||||
bike_sport 00000000000000000000 -
|
||||
live_site 00000000000000000000 -
|
||||
official_building 00000000000000000000 -
|
||||
stadium 00000000000000000000 -
|
||||
stadium_main 00000000000000000000 -
|
||||
transport_airport 00000000000000000000 -
|
||||
transport_boat 00000000000000000000 -
|
||||
transport_bus 00000000000000000000 -
|
||||
transport_cable 00000000000000000000 -
|
||||
transport_railway 00000000000000000000 -
|
||||
transport_subway 00000000000000000000 -
|
||||
transport_tram 00000000000000000000 -
|
||||
water_sport 00000000000000000000 -
|
||||
{}
|
||||
piste:lift 00000000000000000000 +
|
||||
j-bar 00000000000000111111 -
|
||||
magic_carpet 00000000000000011111 -
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -157,3 +157,5 @@ struct OsmElement
|
|||
};
|
||||
|
||||
string DebugPrint(OsmElement const & e);
|
||||
string DebugPrint(OsmElement::EntityType e);
|
||||
string DebugPrint(OsmElement::Tag const & tag);
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue