Merge branch 'master' into ignoring-issues

# Conflicts:
#	data/core.yaml
#	dist/locales/en.json
This commit is contained in:
Quincy Morgan
2019-04-30 13:05:07 -07:00
29 changed files with 378 additions and 59 deletions
+10 -1
View File
@@ -489,7 +489,7 @@ path.line.stroke.tag-highway_bus_stop,
.preset-icon-container path.casing.tag-highway-footway {
stroke: #988;
}
.preset-icon-container path.stroke.tag-highway-footway:not(.tag-footway-crossing):not(.tag-man_made-pier):not(.tag-public_transport-platform) {
.preset-icon-container path.stroke.tag-highway-footway:not(.tag-crossing-marked):not(.tag-crossing-unmarked):not(.tag-man_made-pier):not(.tag-public_transport-platform) {
stroke: #fff;
}
@@ -576,12 +576,21 @@ path.line.stroke.tag-highway.tag-crossing-marked {
path.line.stroke.tag-highway-footway.tag-crossing-marked {
stroke: #4c4444;
}
.preset-icon .icon.tag-highway-footway.tag-crossing-marked {
color: #4c4444;
}
path.line.stroke.tag-highway-footway.tag-crossing-unmarked {
stroke: #776a6a;
}
.preset-icon .icon.tag-highway-footway.tag-crossing-unmarked {
color: #776a6a;
}
path.line.stroke.tag-highway-cycleway.tag-crossing-marked {
stroke: #446077;
}
.preset-icon .icon.tag-highway-cycleway.tag-crossing-marked {
color: #446077;
}
/* highway midpoints */
+9 -1
View File
@@ -1306,6 +1306,12 @@ en:
tip: "Find features that should possibly be connected to other nearby features"
highway-highway:
reference: Intersecting highways should share a junction vertex.
close_nodes:
title: "Very Close Points"
message: "Two points in {way} are very close together"
tip: "Find redundant points in ways"
ref_merge: "Nodes are less than 2 meters away; you may want to merge them."
ref_move_away: "Nodes are less than 2 meters away but not mergable; you may want to move them further apart."
crossing_ways:
title: Crossings Ways
message: "{feature} crosses {feature2}"
@@ -1412,7 +1418,7 @@ en:
message: "{feature} flows away from a connected waterway"
end:
message: "{feature} flows against a connected waterway"
reference: "Waterway segements should all flow in the same direction."
reference: "Waterway segments should all flow in the same direction."
highway:
start:
message: "{feature} is unreachable"
@@ -1444,6 +1450,8 @@ en:
title: Delete this feature
ignore_issue:
title: Ignore this issue
merge_points:
title: Merge these points
move_tags:
title: Move the tags
annotation: Moved tags.
+14 -5
View File
@@ -4184,6 +4184,9 @@ en:
name: Indoor Corridor
# 'terms: gallery,hall,hallway,indoor,passage,passageway'
terms: '<translate with synonyms or related terms for ''Indoor Corridor'', separated by commas>'
highway/crossing:
# highway=crossing
name: Crossing
highway/crossing/marked:
# crossing=marked
name: Marked Crosswalk
@@ -4195,11 +4198,11 @@ en:
# 'terms: zebra crossing,marked crossing,crosswalk,flat top,hump,speed,slow'
terms: '<translate with synonyms or related terms for ''Marked Crosswalk (Raised)'', separated by commas>'
highway/crossing/unmarked:
# highway=crossing
# crossing=unmarked
name: Unmarked Crossing
terms: '<translate with synonyms or related terms for ''Unmarked Crossing'', separated by commas>'
highway/crossing/unmarked-raised:
# 'highway=crossing, traffic_calming=table'
# 'highway=crossing, crossing=unmarked, traffic_calming=table'
name: Unmarked Crossing (Raised)
# 'terms: flat top,hump,speed,slow'
terms: '<translate with synonyms or related terms for ''Unmarked Crossing (Raised)'', separated by commas>'
@@ -4219,13 +4222,16 @@ en:
name: Cycle & Foot Path
# 'terms: bicycle and foot path,mixed-use trail,multi-use trail,segregated trail'
terms: '<translate with synonyms or related terms for ''Cycle & Foot Path'', separated by commas>'
highway/cycleway/crossing:
# cycleway=crossing
name: Cycle Crossing
highway/cycleway/crossing/marked:
# 'cycleway=crossing, crossing=marked'
name: Marked Cycle Crossing
# 'terms: cycle crosswalk,cycle path crossing,cycleway crossing,bicycle crossing,bike crossing'
terms: '<translate with synonyms or related terms for ''Marked Cycle Crossing'', separated by commas>'
highway/cycleway/crossing/unmarked:
# cycleway=crossing
# 'cycleway=crossing, crossing=unmarked'
name: Unmarked Cycle Crossing
# 'terms: cycle path crossing,cycleway crossing,bicycle crossing,bike crossing'
terms: '<translate with synonyms or related terms for ''Unmarked Cycle Crossing'', separated by commas>'
@@ -4244,6 +4250,9 @@ en:
name: Moving Walkway
# 'terms: moving sidewalk,autwalk,skywalk,travolator,travelator,travellator,conveyor'
terms: '<translate with synonyms or related terms for ''Moving Walkway'', separated by commas>'
highway/footway/crossing:
# footway=crossing
name: Pedestrian Crossing
highway/footway/marked:
# 'footway=crossing, crossing=marked'
name: Marked Crosswalk
@@ -4260,12 +4269,12 @@ en:
# 'terms: pavement,sidepath'
terms: '<translate with synonyms or related terms for ''Sidewalk'', separated by commas>'
highway/footway/unmarked:
# footway=crossing
# 'footway=crossing, crossing=unmarked'
name: Unmarked Crossing
# 'terms: unmarked foot path crossing,unmarked crosswalk,unmarked pedestrian crossing'
terms: '<translate with synonyms or related terms for ''Unmarked Crossing'', separated by commas>'
highway/footway/unmarked-raised:
# 'footway=crossing, traffic_calming=table'
# 'footway=crossing, crossing=unmarked, traffic_calming=table'
name: Unmarked Crossing (Raised)
# 'terms: flat top,hump,speed,slow'
terms: '<translate with synonyms or related terms for ''Unmarked Crossing (Raised)'', separated by commas>'
+8 -5
View File
@@ -432,6 +432,7 @@
"healthcare/rehabilitation": {"icon": "maki-hospital", "geometry": ["point", "area"], "terms": ["rehab", "therapist", "therapy"], "tags": {"healthcare": "rehabilitation"}, "name": "Rehabilitation Facility"},
"healthcare/speech_therapist": {"icon": "fas-comment", "geometry": ["point", "area"], "terms": ["speech", "therapist", "therapy", "voice"], "tags": {"healthcare": "speech_therapist"}, "name": "Speech Therapist"},
"highway/bus_stop": {"icon": "maki-bus", "fields": ["name", "network", "operator", "bench", "shelter"], "geometry": ["point", "vertex"], "tags": {"highway": "bus_stop"}, "matchScore": 0.95, "name": "Bus Stop", "searchable": false, "replacement": "public_transport/platform/bus_point"},
"highway/crossing": {"fields": ["crossing"], "geometry": ["vertex"], "tags": {"highway": "crossing"}, "searchable": false, "matchScore": 0.95, "name": "Crossing"},
"highway/bridleway": {"fields": ["name", "surface", "width", "structure", "access", "incline", "horse_scale"], "moreFields": ["covered", "dog", "lit", "maxweight_bridge", "smoothness", "wheelchair"], "icon": "maki-horse-riding", "geometry": ["line"], "tags": {"highway": "bridleway"}, "terms": ["bridleway", "equestrian", "horse", "trail"], "name": "Bridle Path"},
"highway/bus_guideway": {"icon": "maki-bus", "fields": ["name", "operator", "oneway", "structure", "covered"], "moreFields": ["trolley_wire"], "geometry": ["line"], "tags": {"highway": "bus_guideway"}, "addTags": {"highway": "bus_guideway", "access": "no", "bus": "designated"}, "removeTags": {"highway": "bus_guideway", "access": "no", "bus": "designated"}, "terms": [], "name": "Bus Guideway"},
"highway/construction": {"icon": "maki-barrier", "fields": ["name", "opening_date", "check_date", "note", "oneway", "structure", "access"], "geometry": ["line"], "tags": {"highway": "construction", "access": "no"}, "terms": ["closed", "closure", "construction"], "name": "Road Closed"},
@@ -440,22 +441,24 @@
"highway/crossing/zebra": {"icon": "temaki-pedestrian", "fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "tags": {"highway": "crossing", "crossing": "zebra"}, "reference": {"key": "highway", "value": "crossing"}, "terms": ["zebra crossing", "marked crossing", "crosswalk"], "name": "Marked Crosswalk", "searchable": false},
"highway/crossing/marked-raised": {"icon": "temaki-pedestrian", "fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "tags": {"crossing": "marked", "traffic_calming": "table"}, "addTags": {"highway": "crossing", "crossing": "marked", "traffic_calming": "table"}, "removeTags": {"highway": "crossing", "crossing": "marked", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["zebra crossing", "marked crossing", "crosswalk", "flat top", "hump", "speed", "slow"], "name": "Marked Crosswalk (Raised)"},
"highway/crossing/marked": {"icon": "temaki-pedestrian", "fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "tags": {"crossing": "marked"}, "addTags": {"highway": "crossing", "crossing": "marked"}, "removeTags": {"highway": "crossing", "crossing": "marked"}, "reference": {"key": "highway", "value": "crossing"}, "terms": ["zebra crossing", "marked crossing", "crosswalk"], "name": "Marked Crosswalk"},
"highway/crossing/unmarked-raised": {"fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "addTags": {"highway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "removeTags": {"highway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "tags": {"highway": "crossing", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["flat top", "hump", "speed", "slow"], "matchScore": 0.95, "name": "Unmarked Crossing (Raised)"},
"highway/crossing/unmarked": {"fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "addTags": {"highway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "crossing", "crossing": "unmarked"}, "tags": {"highway": "crossing"}, "reference": {"key": "highway", "value": "crossing"}, "terms": [], "matchScore": 0.95, "name": "Unmarked Crossing"},
"highway/crossing/unmarked-raised": {"icon": "temaki-pedestrian", "fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "tags": {"highway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["flat top", "hump", "speed", "slow"], "name": "Unmarked Crossing (Raised)"},
"highway/crossing/unmarked": {"icon": "temaki-pedestrian", "fields": ["crossing", "tactile_paving"], "geometry": ["vertex"], "tags": {"crossing": "unmarked"}, "addTags": {"highway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "crossing", "crossing": "unmarked"}, "reference": {"key": "crossing", "value": "unmarked"}, "terms": [], "name": "Unmarked Crossing"},
"highway/cycleway": {"icon": "maki-bicycle", "fields": ["name", "oneway", "surface", "width", "structure", "access", "incline"], "moreFields": ["covered", "dog", "lit", "maxspeed", "maxweight_bridge", "smoothness", "wheelchair"], "geometry": ["line"], "tags": {"highway": "cycleway"}, "terms": ["bike path", "bicyle path"], "matchScore": 0.9, "name": "Cycle Path"},
"highway/cycleway/crossing": {"icon": "maki-bicycle", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"cycleway": "crossing"}, "addTags": {"highway": "cycleway", "cycleway": "crossing"}, "removeTags": {"highway": "cycleway", "cycleway": "crossing"}, "reference": {"key": "cycleway", "value": "crossing"}, "searchable": false, "matchScore": 0.95, "name": "Cycle Crossing"},
"highway/cycleway/bicycle_foot": {"icon": "maki-bicycle", "geometry": ["line"], "tags": {"highway": "cycleway", "foot": "designated"}, "addTags": {"highway": "cycleway", "foot": "designated", "bicycle": "designated"}, "removeTags": {"highway": "cycleway", "foot": "designated", "bicycle": "designated"}, "terms": ["bicycle and foot path", "mixed-use trail", "multi-use trail", "segregated trail"], "matchScore": 0.95, "name": "Cycle & Foot Path"},
"highway/cycleway/crossing/marked": {"icon": "maki-bicycle", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"cycleway": "crossing", "crossing": "marked"}, "addTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "marked"}, "removeTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "marked"}, "reference": {"key": "cycleway", "value": "crossing"}, "terms": ["cycle crosswalk", "cycle path crossing", "cycleway crossing", "bicycle crossing", "bike crossing"], "name": "Marked Cycle Crossing"},
"highway/cycleway/crossing/unmarked": {"icon": "maki-bicycle", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"cycleway": "crossing"}, "addTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "unmarked"}, "reference": {"key": "cycleway", "value": "crossing"}, "terms": ["cycle path crossing", "cycleway crossing", "bicycle crossing", "bike crossing"], "matchScore": 0.95, "name": "Unmarked Cycle Crossing"},
"highway/cycleway/crossing/unmarked": {"icon": "maki-bicycle", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"cycleway": "crossing", "crossing": "unmarked"}, "addTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "cycleway", "cycleway": "crossing", "crossing": "unmarked"}, "reference": {"key": "cycleway", "value": "crossing"}, "terms": ["cycle path crossing", "cycleway crossing", "bicycle crossing", "bike crossing"], "name": "Unmarked Cycle Crossing"},
"highway/elevator": {"icon": "temaki-elevator", "fields": ["access_simple", "opening_hours", "maxweight", "ref", "wheelchair"], "moreFields": ["maxheight"], "geometry": ["vertex"], "tags": {"highway": "elevator"}, "terms": ["lift"], "name": "Elevator"},
"highway/footway": {"icon": "temaki-pedestrian", "fields": ["name", "surface", "width", "structure", "access", "incline"], "moreFields": ["covered", "dog", "lit", "maxweight_bridge", "smoothness", "wheelchair"], "geometry": ["line"], "terms": ["hike", "hiking", "promenade", "trackway", "trail", "walk"], "tags": {"highway": "footway"}, "matchScore": 0.9, "name": "Foot Path"},
"highway/footway/crossing": {"fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing"}, "addTags": {"highway": "footway", "footway": "crossing"}, "removeTags": {"highway": "footway", "footway": "crossing"}, "reference": {"key": "footway", "value": "crossing"}, "matchScore": 0.95, "searchable": false, "name": "Pedestrian Crossing"},
"highway/footway/zebra-raised": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"highway": "footway", "footway": "crossing", "crossing": "zebra", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["zebra crossing", "marked crossing", "crosswalk", "flat top", "hump", "speed", "slow"], "name": "Marked Crosswalk (Raised)", "searchable": false},
"highway/footway/zebra": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"highway": "footway", "footway": "crossing", "crossing": "zebra"}, "reference": {"key": "footway", "value": "crossing"}, "terms": ["zebra crossing", "marked crossing", "crosswalk"], "name": "Marked Crosswalk", "searchable": false},
"highway/footway/conveying": {"icon": "temaki-pedestrian", "fields": ["name", "conveying", "access_simple", "lit", "width", "wheelchair"], "geometry": ["line"], "terms": ["moving sidewalk", "autwalk", "skywalk", "travolator", "travelator", "travellator", "conveyor"], "tags": {"highway": "footway", "conveying": "*"}, "name": "Moving Walkway"},
"highway/footway/marked-raised": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing", "crossing": "marked", "traffic_calming": "table"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "marked", "traffic_calming": "table"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "marked", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["zebra crossing", "marked crossing", "crosswalk", "flat top", "hump", "speed", "slow"], "name": "Marked Crosswalk (Raised)"},
"highway/footway/marked": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing", "crossing": "marked"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "marked"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "marked"}, "reference": {"key": "footway", "value": "crossing"}, "terms": ["marked foot path crossing", "marked crossing", "marked pedestrian crosswalk", "zebra crossing"], "name": "Marked Crosswalk"},
"highway/footway/sidewalk": {"icon": "temaki-pedestrian", "geometry": ["line"], "tags": {"footway": "sidewalk"}, "addTags": {"highway": "footway", "footway": "sidewalk"}, "removeTags": {"highway": "footway", "footway": "sidewalk"}, "reference": {"key": "footway", "value": "sidewalk"}, "terms": ["pavement", "sidepath"], "name": "Sidewalk"},
"highway/footway/unmarked-raised": {"fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing", "traffic_calming": "table"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["flat top", "hump", "speed", "slow"], "matchScore": 0.95, "name": "Unmarked Crossing (Raised)"},
"highway/footway/unmarked": {"fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked"}, "reference": {"key": "footway", "value": "crossing"}, "terms": ["unmarked foot path crossing", "unmarked crosswalk", "unmarked pedestrian crossing"], "matchScore": 0.95, "name": "Unmarked Crossing"},
"highway/footway/unmarked-raised": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked", "traffic_calming": "table"}, "reference": {"key": "traffic_calming", "value": "table"}, "terms": ["flat top", "hump", "speed", "slow"], "name": "Unmarked Crossing (Raised)"},
"highway/footway/unmarked": {"icon": "temaki-pedestrian", "fields": ["crossing", "access", "surface", "tactile_paving"], "geometry": ["line"], "tags": {"footway": "crossing", "crossing": "unmarked"}, "addTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked"}, "removeTags": {"highway": "footway", "footway": "crossing", "crossing": "unmarked"}, "reference": {"key": "footway", "value": "crossing"}, "terms": ["unmarked foot path crossing", "unmarked crosswalk", "unmarked pedestrian crossing"], "name": "Unmarked Crossing"},
"highway/give_way": {"icon": "temaki-yield", "fields": ["direction_vertex"], "geometry": ["vertex"], "tags": {"highway": "give_way"}, "terms": ["give way", "yield", "sign"], "name": "Yield Sign"},
"highway/living_street": {"icon": "iD-highway-living-street", "fields": ["name", "oneway", "maxspeed", "lanes", "surface", "structure", "access"], "moreFields": ["covered", "cycleway", "flood_prone", "junction_line", "lit", "maxheight", "maxweight_bridge", "oneway/bicycle", "smoothness", "trolley_wire"], "geometry": ["line"], "tags": {"highway": "living_street"}, "name": "Living Street"},
"highway/milestone": {"icon": "temaki-milestone", "geometry": ["point", "vertex"], "fields": ["distance", "direction_vertex"], "tags": {"highway": "milestone"}, "terms": ["mile marker", "mile post", "mile stone", "mileage marker", "milemarker", "milepost"], "name": "Highway Milestone"},
@@ -0,0 +1,14 @@
{
"fields": [
"crossing"
],
"geometry": [
"vertex"
],
"tags": {
"highway": "crossing"
},
"searchable": false,
"matchScore": 0.95,
"name": "Crossing"
}
@@ -1,4 +1,5 @@
{
"icon": "temaki-pedestrian",
"fields": [
"crossing",
"tactile_paving"
@@ -6,18 +7,9 @@
"geometry": [
"vertex"
],
"addTags": {
"highway": "crossing",
"crossing": "unmarked",
"traffic_calming": "table"
},
"removeTags": {
"highway": "crossing",
"crossing": "unmarked",
"traffic_calming": "table"
},
"tags": {
"highway": "crossing",
"crossing": "unmarked",
"traffic_calming": "table"
},
"reference": {
@@ -30,6 +22,5 @@
"speed",
"slow"
],
"matchScore": 0.95,
"name": "Unmarked Crossing (Raised)"
}
@@ -1,4 +1,5 @@
{
"icon": "temaki-pedestrian",
"fields": [
"crossing",
"tactile_paving"
@@ -6,6 +7,9 @@
"geometry": [
"vertex"
],
"tags": {
"crossing": "unmarked"
},
"addTags": {
"highway": "crossing",
"crossing": "unmarked"
@@ -14,14 +18,10 @@
"highway": "crossing",
"crossing": "unmarked"
},
"tags": {
"highway": "crossing"
},
"reference": {
"key": "highway",
"value": "crossing"
"key": "crossing",
"value": "unmarked"
},
"terms": [],
"matchScore": 0.95,
"name": "Unmarked Crossing"
}
@@ -0,0 +1,30 @@
{
"icon": "maki-bicycle",
"fields": [
"crossing",
"access",
"surface",
"tactile_paving"
],
"geometry": [
"line"
],
"tags": {
"cycleway": "crossing"
},
"addTags": {
"highway": "cycleway",
"cycleway": "crossing"
},
"removeTags": {
"highway": "cycleway",
"cycleway": "crossing"
},
"reference": {
"key": "cycleway",
"value": "crossing"
},
"searchable": false,
"matchScore": 0.95,
"name": "Cycle Crossing"
}
@@ -10,7 +10,8 @@
"line"
],
"tags": {
"cycleway": "crossing"
"cycleway": "crossing",
"crossing": "unmarked"
},
"addTags": {
"highway": "cycleway",
@@ -32,6 +33,5 @@
"bicycle crossing",
"bike crossing"
],
"matchScore": 0.95,
"name": "Unmarked Cycle Crossing"
}
@@ -0,0 +1,29 @@
{
"fields": [
"crossing",
"access",
"surface",
"tactile_paving"
],
"geometry": [
"line"
],
"tags": {
"footway": "crossing"
},
"addTags": {
"highway": "footway",
"footway": "crossing"
},
"removeTags": {
"highway": "footway",
"footway": "crossing"
},
"reference": {
"key": "footway",
"value": "crossing"
},
"matchScore": 0.95,
"searchable": false,
"name": "Pedestrian Crossing"
}
@@ -1,4 +1,5 @@
{
"icon": "temaki-pedestrian",
"fields": [
"crossing",
"access",
@@ -10,6 +11,7 @@
],
"tags": {
"footway": "crossing",
"crossing": "unmarked",
"traffic_calming": "table"
},
"addTags": {
@@ -34,6 +36,5 @@
"speed",
"slow"
],
"matchScore": 0.95,
"name": "Unmarked Crossing (Raised)"
}
@@ -1,4 +1,5 @@
{
"icon": "temaki-pedestrian",
"fields": [
"crossing",
"access",
@@ -9,7 +10,8 @@
"line"
],
"tags": {
"footway": "crossing"
"footway": "crossing",
"crossing": "unmarked"
},
"addTags": {
"highway": "footway",
@@ -30,6 +32,5 @@
"unmarked crosswalk",
"unmarked pedestrian crossing"
],
"matchScore": 0.95,
"name": "Unmarked Crossing"
}
+4 -3
View File
@@ -424,6 +424,7 @@
{"key": "healthcare", "value": "rehabilitation", "description": "🄿 Rehabilitation Facility", "object_types": ["node", "area"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/hospital-15.svg?sanitize=true"},
{"key": "healthcare", "value": "speech_therapist", "description": "🄿 Speech Therapist", "object_types": ["node", "area"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-comment.svg?sanitize=true"},
{"key": "highway", "value": "bus_stop", "description": "🄿 Bus Stop (unsearchable)", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bus-15.svg?sanitize=true"},
{"key": "highway", "value": "crossing", "description": "🄿 Crossing (unsearchable)", "object_types": ["node"]},
{"key": "highway", "value": "bridleway", "description": "🄿 Bridle Path", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/horse-riding-15.svg?sanitize=true"},
{"key": "highway", "value": "bus_guideway", "description": "🄿 Bus Guideway", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bus-15.svg?sanitize=true"},
{"key": "access", "value": "no", "description": "🄿 Road Closed, 🄵 Allowed Access", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/barrier-15.svg?sanitize=true"},
@@ -431,15 +432,15 @@
{"key": "traffic_calming", "value": "table", "description": "🄿 Marked Crosswalk (Raised) (unsearchable), 🄿 Marked Crosswalk (Raised), 🄿 Unmarked Crossing (Raised), 🄿 Speed Table", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "crossing", "value": "zebra", "description": "🄿 Marked Crosswalk (unsearchable), 🄳 ➜ crossing=marked", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "crossing", "value": "marked", "description": "🄿 Marked Crosswalk, 🄿 Marked Cycle Crossing", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "highway", "value": "crossing", "description": "🄿 Unmarked Crossing", "object_types": ["node"]},
{"key": "crossing", "value": "unmarked", "description": "🄿 Unmarked Crossing, 🄿 Unmarked Cycle Crossing", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "highway", "value": "cycleway", "description": "🄿 Cycle Path", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bicycle-15.svg?sanitize=true"},
{"key": "cycleway", "value": "crossing", "description": "🄿 Cycle Crossing (unsearchable)", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bicycle-15.svg?sanitize=true"},
{"key": "foot", "value": "designated", "description": "🄿 Cycle & Foot Path, 🄵 Allowed Access", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bicycle-15.svg?sanitize=true"},
{"key": "cycleway", "value": "crossing", "description": "🄿 Unmarked Cycle Crossing", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/bicycle-15.svg?sanitize=true"},
{"key": "highway", "value": "elevator", "description": "🄿 Elevator", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/elevator.svg?sanitize=true"},
{"key": "highway", "value": "footway", "description": "🄿 Foot Path", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "footway", "value": "crossing", "description": "🄿 Pedestrian Crossing (unsearchable)", "object_types": ["way"]},
{"key": "conveying", "description": "🄿 Moving Walkway, 🄿 Escalator", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "footway", "value": "sidewalk", "description": "🄿 Sidewalk", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"},
{"key": "footway", "value": "crossing", "description": "🄿 Unmarked Crossing", "object_types": ["way"]},
{"key": "highway", "value": "give_way", "description": "🄿 Yield Sign", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/yield.svg?sanitize=true"},
{"key": "highway", "value": "living_street", "description": "🄿 Living Street", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/highway-living-street.svg?sanitize=true"},
{"key": "highway", "value": "milestone", "description": "🄿 Highway Milestone", "object_types": ["node"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/milestone.svg?sanitize=true"},
+23 -1
View File
@@ -1604,6 +1604,13 @@
"reference": "Intersecting highways should share a junction vertex."
}
},
"close_nodes": {
"title": "Very Close Points",
"message": "Two points in {way} are very close together",
"tip": "Find redundant points in ways",
"ref_merge": "Nodes are less than 2 meters away; you may want to merge them.",
"ref_move_away": "Nodes are less than 2 meters away but not mergable; you may want to move them further apart."
},
"crossing_ways": {
"title": "Crossings Ways",
"message": "{feature} crosses {feature2}",
@@ -1748,7 +1755,7 @@
"end": {
"message": "{feature} flows against a connected waterway"
},
"reference": "Waterway segements should all flow in the same direction."
"reference": "Waterway segments should all flow in the same direction."
}
},
"highway": {
@@ -1796,6 +1803,9 @@
"ignore_issue": {
"title": "Ignore this issue"
},
"merge_points": {
"title": "Merge these points"
},
"move_tags": {
"title": "Move the tags",
"annotation": "Moved tags."
@@ -5955,6 +5965,10 @@
"name": "Bus Stop",
"terms": ""
},
"highway/crossing": {
"name": "Crossing",
"terms": ""
},
"highway/bridleway": {
"name": "Bridle Path",
"terms": "bridleway,equestrian,horse,trail"
@@ -5999,6 +6013,10 @@
"name": "Cycle Path",
"terms": "bike path,bicyle path"
},
"highway/cycleway/crossing": {
"name": "Cycle Crossing",
"terms": ""
},
"highway/cycleway/bicycle_foot": {
"name": "Cycle & Foot Path",
"terms": "bicycle and foot path,mixed-use trail,multi-use trail,segregated trail"
@@ -6019,6 +6037,10 @@
"name": "Foot Path",
"terms": "hike,hiking,promenade,trackway,trail,walk"
},
"highway/footway/crossing": {
"name": "Pedestrian Crossing",
"terms": ""
},
"highway/footway/zebra-raised": {
"name": "Marked Crosswalk (Raised)",
"terms": "zebra crossing,marked crossing,crosswalk,flat top,hump,speed,slow"
+2 -2
View File
@@ -80,7 +80,7 @@ export function actionConnect(nodeIDs) {
role = relation.memberById(node.id).role || '';
// if this node is a via node in a restriction, remember for later
if (relation.isValidRestriction()) {
if (relation.hasFromViaTo()) {
restrictionIDs.push(relation.id);
}
@@ -103,7 +103,7 @@ export function actionConnect(nodeIDs) {
for (k = 0; k < relations.length; k++) {
relation = relations[k];
if (relation.isValidRestriction()) {
if (relation.hasFromViaTo()) {
restrictionIDs.push(relation.id);
}
}
+1 -1
View File
@@ -98,7 +98,7 @@ export function actionExtract(entityID, projection) {
var parentRels = graph.parentRelations(entity);
for (var i = 0; i < parentRels.length; i++) {
var relation = parentRels[i];
if (!relation.isValidRestriction()) continue;
if (!relation.hasFromViaTo()) continue;
for (var j = 0; j < relation.members.length; j++) {
var m = relation.members[j];
+5 -1
View File
@@ -25,7 +25,11 @@ export function actionReverse(wayID, options) {
[/:right$/, ':left'],
[/:left$/, ':right'],
[/:forward$/, ':backward'],
[/:backward$/, ':forward']
[/:backward$/, ':forward'],
[/:right:/, ':left:'],
[/:left:/, ':right:'],
[/:forward:/, ':backward:'],
[/:backward:/, ':forward:']
];
var valueReplacements = {
left: 'right',
+1 -1
View File
@@ -118,7 +118,7 @@ export function actionSplit(nodeId, newWayIds) {
// 1. Splitting a FROM/TO way - only `wayA` OR `wayB` remains in relation
// (whichever one is connected to the VIA node/ways)
// 2. Splitting a VIA way - `wayB` remains in relation as a VIA way
if (relation.isRestriction()) {
if (relation.hasFromViaTo()) {
var f = relation.memberByRole('from');
var v = relation.membersByRole('via');
var t = relation.memberByRole('to');
+9
View File
@@ -256,6 +256,15 @@ Object.assign(osmRelation.prototype, {
},
hasFromViaTo: function() {
return (
this.members.some(function(m) { return m.role === 'from'; }) &&
this.members.some(function(m) { return m.role === 'via'; }) &&
this.members.some(function(m) { return m.role === 'to'; })
);
},
isRestriction: function() {
return !!(this.tags.type && this.tags.type.match(/^restriction:?/));
},
+5 -4
View File
@@ -168,12 +168,13 @@ export function uiFieldWikipedia(field, context) {
value = decodeURIComponent(m[2]).replace(/_/g, ' ');
if (m[3]) {
var anchor;
try {
// try {
// leave this out for now - #6232
// Best-effort `anchordecode:` implementation
anchor = decodeURIComponent(m[3].replace(/\.([0-9A-F]{2})/g, '%$1'));
} catch (e) {
// anchor = decodeURIComponent(m[3].replace(/\.([0-9A-F]{2})/g, '%$1'));
// } catch (e) {
anchor = decodeURIComponent(m[3]);
}
// }
value += '#' + anchor.replace(/_/g, ' ');
}
value = value.slice(0, 1).toUpperCase() + value.slice(1);
+2 -1
View File
@@ -52,8 +52,9 @@ export function uiInspector(context) {
var hasNonGeometryTags = entity.hasNonGeometryTags();
var isTaglessOrIntersectionVertex = entity.geometry(context.graph()) === 'vertex' &&
(!hasNonGeometryTags && !entity.isHighwayIntersection(context.graph()));
var issues = context.validator().getEntityIssues(_entityID);
// start with the preset list if the feature is new and untagged or is an uninteresting vertex
var showPresetList = (newFeature && !hasNonGeometryTags) || isTaglessOrIntersectionVertex;
var showPresetList = (newFeature && !hasNonGeometryTags) || (isTaglessOrIntersectionVertex && !issues.length);
if (showPresetList) {
wrap.style('right', '-100%');
+1 -5
View File
@@ -104,11 +104,7 @@ export function uiToolSave(context) {
context.history()
.on('change.save', function(diff) {
if (!diff || diff.didChange.addition || diff.didChange.deletion) {
updateCount(); // only on significant changes
}
});
.on('change.save', updateCount);
context
.on('enter.save', function() {
+99
View File
@@ -0,0 +1,99 @@
import { operationMerge } from '../operations/index';
import { utilDisplayLabel } from '../util';
import { t } from '../util/locale';
import { validationIssue, validationIssueFix } from '../core/validation';
import { osmRoutableHighwayTagValues } from '../osm/tags';
import { geoExtent } from '../geo';
export function validationCloseNodes() {
var type = 'close_nodes';
function isNodeOnRoad(node, context) {
var parentWays = context.graph().parentWays(node);
for (var i = 0; i < parentWays.length; i++) {
var parentWay = parentWays[i];
if (osmRoutableHighwayTagValues[parentWay.tags.highway]) {
return parentWay;
}
}
return false;
}
function findDupeNode(node, context) {
var epsilon = 2e-5,
extent = geoExtent([
[node.loc[0] - epsilon, node.loc[1] - epsilon],
[node.loc[0] + epsilon, node.loc[1] + epsilon]
]);
var filteredEnts = context.intersects(extent);
for (var i = 0; i < filteredEnts.length; i++) {
var entity = filteredEnts[i];
if (entity.type === 'node' && entity.id !== node.id &&
Math.abs(node.loc[0] - entity.loc[0]) < epsilon &&
Math.abs(node.loc[1] - entity.loc[1]) < epsilon &&
isNodeOnRoad(entity, context) ) {
return entity;
}
}
return null;
}
var validation = function(entity, context) {
if (entity.type !== 'node') return [];
var road = isNodeOnRoad(entity, context);
if (!road) return [];
var dupe = findDupeNode(entity, context);
if (dupe === null) return [];
var mergable = !operationMerge([entity.id, dupe.id], context).disabled();
var fixes = [];
if (mergable) {
fixes.push(
new validationIssueFix({
icon: 'iD-icon-plus',
title: t('issues.fix.merge_points.title'),
onClick: function() {
var entityIds = this.issue.entityIds,
operation = operationMerge([entityIds[0], entityIds[1]], context);
if (!operation.disabled()) {
operation();
}
}
})
);
}
return [new validationIssue({
type: type,
severity: 'warning',
message: t('issues.close_nodes.message', { way: utilDisplayLabel(road, context) }),
reference: showReference,
entityIds: [entity.id, dupe.id],
fixes: fixes
})];
function showReference(selection) {
var referenceText = mergable
? t('issues.close_nodes.ref_merge')
: t('issues.close_nodes.ref_move_away');
selection.selectAll('.issue-reference')
.data([0])
.enter()
.append('div')
.attr('class', 'issue-reference')
.text(referenceText);
}
};
validation.type = type;
return validation;
}
+3 -5
View File
@@ -164,14 +164,12 @@ export function validationCrossingWays() {
return {};
}
var pathFeature = entity1IsPath ? entity1 : entity2;
if (pathFeature.tags.highway === 'footway' &&
pathFeature.tags.footway === 'crossing' &&
['marked', 'unmarked'].indexOf(pathFeature.tags.crossing) !== -1) {
if (['marked', 'unmarked'].indexOf(pathFeature.tags.crossing) !== -1) {
// if the path is a crossing, match the crossing type
return { highway: 'crossing', crossing: pathFeature.tags.crossing };
}
// default ambiguous crossings to unmarked
return { highway: 'crossing', crossing: 'unmarked' };
// don't add a `crossing` subtag to ambiguous crossings
return { highway: 'crossing' };
}
return {};
}
+1
View File
@@ -1,4 +1,5 @@
export { validationAlmostJunction } from './almost_junction';
export { validationCloseNodes } from './close_nodes';
export { validationCrossingWays } from './crossing_ways';
export { validationDisconnectedWay } from './disconnected_way';
export { validationFixmeTag } from './fixme_tag';
+11
View File
@@ -103,6 +103,17 @@ describe('iD.actionReverse', function () {
expect(graph.entity(way.id).tags).to.eql({'cycleway:right': 'lane'});
});
it('transforms *:right:*=* ⟺ *:left:*=*', function () {
var way = iD.osmWay({tags: {'cycleway:right:surface': 'paved'}});
var graph = iD.coreGraph([way]);
graph = iD.actionReverse(way.id)(graph);
expect(graph.entity(way.id).tags).to.eql({'cycleway:left:surface': 'paved'});
graph = iD.actionReverse(way.id)(graph);
expect(graph.entity(way.id).tags).to.eql({'cycleway:right:surface': 'paved'});
});
it('transforms *:forward=* ⟺ *:backward=*', function () {
var way = iD.osmWay({tags: {'maxspeed:forward': '25'}});
var graph = iD.coreGraph([way]);
+1 -1
View File
@@ -1160,7 +1160,7 @@ describe('iD.actionSplit', function () {
});
['restriction', 'restriction:bus'].forEach(function (type) {
['restriction', 'restriction:bus', 'manoeuvre'].forEach(function (type) {
describe('type = ' + type, function () {
it('updates a restriction\'s \'from\' role - via node', function () {
+79
View File
@@ -185,6 +185,85 @@ describe('iD.osmRelation', function () {
});
});
describe('#hasFromViaTo', function () {
it('returns true if there is a from, via, and to', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'manoeuvre' },
members: [
{ role: 'from', id: 'f', type: 'way' },
{ role: 'via', id: 'v', type: 'node' },
{ role: 'to', id: 't', type: 'way' }
]
});
expect(r.hasFromViaTo()).to.be.true;
});
it('returns true if there are extra froms, vias, tos', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'manoeuvre' },
members: [
{ role: 'from', id: 'f1', type: 'way' },
{ role: 'from', id: 'f2', type: 'way' },
{ role: 'via', id: 'v1', type: 'node' },
{ role: 'via', id: 'v2', type: 'node' },
{ role: 'to', id: 't1', type: 'way' },
{ role: 'to', id: 't2', type: 'way' }
]
});
expect(r.hasFromViaTo()).to.be.true;
});
it('returns false if from missing', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'manoeuvre' },
members: [
{ role: 'via', id: 'v', type: 'node' },
{ role: 'to', id: 't', type: 'way' }
]
});
expect(r.hasFromViaTo()).to.be.false;
});
it('returns false if via missing', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'manoeuvre' },
members: [
{ role: 'from', id: 'f', type: 'way' },
{ role: 'to', id: 't', type: 'way' }
]
});
expect(r.hasFromViaTo()).to.be.false;
});
it('returns false if to missing', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'manoeuvre' },
members: [
{ role: 'from', id: 'f', type: 'way' },
{ role: 'via', id: 'v', type: 'node' }
]
});
expect(r.hasFromViaTo()).to.be.false;
});
it('returns false if all missing', function () {
var r = iD.osmRelation({
id: 'r',
tags: { type: 'multipolygon' },
members: [
{ role: 'inner', id: 'i', type: 'way' },
{ role: 'outer', id: 'o', type: 'way' }
]
});
expect(r.hasFromViaTo()).to.be.false;
});
});
describe('#isRestriction', function () {
it('returns true for \'restriction\' type', function () {
expect(iD.osmRelation({tags: {type: 'restriction'}}).isRestriction()).to.be.true;
+2
View File
@@ -100,6 +100,7 @@ describe('iD.serviceMapillary', function() {
});
it('loads multiple pages of image results', function(done) {
this.timeout(10000);
var calls = 0;
mapillary.on('loadedImages', function() {
server.respond(); // respond to new fetches
@@ -193,6 +194,7 @@ describe('iD.serviceMapillary', function() {
});
it('loads multiple pages of signs results', function(done) {
this.timeout(10000);
var calls = 0;
mapillary.on('loadedSigns', function() {
server.respond(); // respond to new fetches