From 7f5845495817c4a60b5e50b90510768d1571c2c2 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Mon, 25 Feb 2019 11:39:03 -0500 Subject: [PATCH] Don't tag connection nodes of paths crossing service or track roads as highway=crossing in crossing ways quick fix (re: #5976) --- modules/validations/crossing_ways.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/validations/crossing_ways.js b/modules/validations/crossing_ways.js index 33847f299..a3d38eedd 100644 --- a/modules/validations/crossing_ways.js +++ b/modules/validations/crossing_ways.js @@ -143,20 +143,27 @@ export function validationCrossingWays() { 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link' ]; - var pathHighways = [ - 'path', 'footway', 'cycleway', 'bridleway', 'pedestrian', 'steps', 'corridor' - ]; + var pathHighways = { + path: true, footway: true, cycleway: true, bridleway: true, + pedestrian: true, steps: true, corridor: true + }; + var nonCrossingHighways = { service: true, track: true }; function tagsForConnectionNodeIfAllowed(entity1, entity2) { var featureType1 = getFeatureTypeForTags(entity1.tags); var featureType2 = getFeatureTypeForTags(entity2.tags); if (featureType1 === featureType2) { if (featureType1 === 'highway') { - var entity1IsPath = pathHighways.indexOf(entity1.tags.highway) !== -1; - var entity2IsPath = pathHighways.indexOf(entity2.tags.highway) !== -1; + var entity1IsPath = pathHighways[entity1.tags.highway]; + var entity2IsPath = pathHighways[entity2.tags.highway]; if ((entity1IsPath || entity2IsPath) && entity1IsPath !== entity2IsPath) { - // one feature is a path but not both, use a crossing + // one feature is a path but not both + var roadFeature = entity1IsPath ? entity2 : entity1; + if (nonCrossingHighways[roadFeature.tags.highway]) { + // don't mark path connections with certain roads as crossings + return {}; + } var pathFeature = entity1IsPath ? entity1 : entity2; if (pathFeature.tags.highway === 'footway' && pathFeature.tags.footway === 'crossing' && @@ -175,8 +182,8 @@ export function validationCrossingWays() { var featureTypes = [featureType1, featureType2]; if (featureTypes.indexOf('highway') !== -1) { if (featureTypes.indexOf('railway') !== -1) { - if (pathHighways.indexOf(entity1.tags.highway) !== -1 || - pathHighways.indexOf(entity2.tags.highway) !== -1) { + if (pathHighways[entity1.tags.highway] || + pathHighways[entity2.tags.highway]) { // path-rail connections use this tag return { railway: 'crossing' }; } else {