Ticket #9819: 9819_highwayCrossingWaterwayOnly.patch
| File 9819_highwayCrossingWaterwayOnly.patch, 3.3 KB (added by , 5 years ago) |
|---|
-
src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
114 114 boolean ignoreWaySegmentCombination(Way w1, Way w2) { 115 115 if (w1 == w2) 116 116 return true; 117 if (areLayerOrLevelDifferent(w1, w2))118 return true;119 117 if (isBuilding(w1) && isBuilding(w2)) 120 118 return true; // handled by mapcss tests 121 119 if (((isResidentialArea(w1) || w1.hasKey(BARRIER, HIGHWAY, RAILWAY, WATERWAY) || isWaterArea(w1)) … … 378 376 highlight.add(es1); 379 377 highlight.add(es2); 380 378 381 final MessageHelper message = createMessage(es1.getWay(), es2.getWay()); 382 errors.add(TestError.builder(this, Severity.WARNING, message.code) 383 .message(message.message) 384 .primitives(prims) 385 .highlightWaySegments(highlight) 386 .build()); 387 seenWays.put(prims, highlight); 379 if (InvalidHighwayCrossingWaterwayTags(es1, es2)) 380 { 381 errors.add(TestError.builder(this, Severity.WARNING, 652) 382 .message("Highway crossing waterway probably needs bridge=* or tunnel=* tag.") 383 .primitives(prims) 384 .highlightWaySegments(highlight) 385 .build()); 386 } 387 388 if (!areLayerOrLevelDifferent(es1.getWay(), es2.getWay())) 389 { 390 final MessageHelper message = createMessage(es1.getWay(), es2.getWay()); 391 errors.add(TestError.builder(this, Severity.WARNING, message.code) 392 .message(message.message) 393 .primitives(prims) 394 .highlightWaySegments(highlight) 395 .build()); 396 seenWays.put(prims, highlight); 397 398 } 388 399 } else { 389 400 highlight.add(es1); 390 401 highlight.add(es2); … … 395 406 } 396 407 } 397 408 409 private boolean InvalidHighwayCrossingWaterwayTags(WaySegment way1, WaySegment way2) { 410 return (way1.getWay().hasKey(HIGHWAY) && way1.getWay().hasKey("layer") 411 && !way1.getWay().hasKey("tunnel") && !way1.getWay().hasKey("bridge") && way2.getWay().hasKey(WATERWAY)) 412 || (way2.getWay().hasKey(HIGHWAY) && way2.getWay().hasKey("layer") 413 && !way2.getWay().hasKey("tunnel") && !way2.getWay().hasKey("bridge") && way1.getWay().hasKey(WATERWAY)); 414 415 416 } 417 398 418 private static boolean areLayerOrLevelDifferent(Way w1, Way w2) { 399 419 return !Objects.equals(OsmUtils.getLayer(w1), OsmUtils.getLayer(w2)) 400 420 || !Objects.equals(w1.get("level"), w2.get("level"));
