Merge pull request #3843 from Zverik/olympics2

[olympics] Mix objects with olympics tag (→master)
This commit is contained in:
mpimenov 2016-07-19 19:38:03 +03:00 committed by GitHub
commit 4eda4a4f24
17 changed files with 5058 additions and 0 deletions

View file

@ -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

View file

@ -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;

1 building;[building];;addr:housenumber;name;1;
1122 wheelchair|no;1122;
1123 wheelchair|limited;1123;
1124 building|has_parts;1124;
1125 olympics|transport_airport;1125;
1126 olympics|transport_railway;1126;
1127 olympics|transport_boat;1127;
1128 olympics|transport_bus;1128;
1129 olympics|transport_tram;1129;
1130 olympics|transport_cable;1130;
1131 olympics|transport_subway;1131;
1132 olympics|official_building;1132;
1133 olympics|attraction;1133;
1134 olympics|live_site;1134;
1135 olympics|stadium_main;1135;
1136 olympics|stadium;1136;
1137 olympics|water_sport;1137;
1138 olympics|bike_sport;1138;

99
data/mixed_tags.txt Normal file
View 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

View file

@ -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; }

View file

@ -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

View file

@ -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 -

View file

@ -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"

View file

@ -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();
}

View file

@ -157,3 +157,5 @@ struct OsmElement
};
string DebugPrint(OsmElement const & e);
string DebugPrint(OsmElement::EntityType e);
string DebugPrint(OsmElement::Tag const & tag);

View file

@ -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))
{

View file

@ -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);
}
}
};