From 30538c670611115e6bc156ff0846a0ee9f1726c4 Mon Sep 17 00:00:00 2001 From: Michael Barry Date: Mon, 6 Feb 2023 05:48:51 -0500 Subject: [PATCH] Fix oneway logic (#70) --- .../java/org/openmaptiles/layers/Transportation.java | 2 +- src/test/java/org/openmaptiles/OpenMapTilesTest.java | 2 +- .../java/org/openmaptiles/layers/TransportationTest.java | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/openmaptiles/layers/Transportation.java b/src/main/java/org/openmaptiles/layers/Transportation.java index 22ca920..938b995 100644 --- a/src/main/java/org/openmaptiles/layers/Transportation.java +++ b/src/main/java/org/openmaptiles/layers/Transportation.java @@ -527,7 +527,7 @@ public class Transportation implements int onewayId = 1; for (var item : items) { var oneway = item.attrs().get(Fields.ONEWAY); - if (oneway instanceof Integer i && ONEWAY_VALUES.contains(i)) { + if (oneway instanceof Number n && ONEWAY_VALUES.contains(n.intValue())) { item.attrs().put(LIMIT_MERGE_TAG, onewayId++); } } diff --git a/src/test/java/org/openmaptiles/OpenMapTilesTest.java b/src/test/java/org/openmaptiles/OpenMapTilesTest.java index 53d2b10..2a4e3f8 100644 --- a/src/test/java/org/openmaptiles/OpenMapTilesTest.java +++ b/src/test/java/org/openmaptiles/OpenMapTilesTest.java @@ -200,7 +200,7 @@ class OpenMapTilesTest { ), 14, 909, LineString.class); assertNumFeatures("transportation", Map.of( "class", "primary" - ), 14, 170, LineString.class); + ), 14, 259, LineString.class); } @Test diff --git a/src/test/java/org/openmaptiles/layers/TransportationTest.java b/src/test/java/org/openmaptiles/layers/TransportationTest.java index 1160df4..8295824 100644 --- a/src/test/java/org/openmaptiles/layers/TransportationTest.java +++ b/src/test/java/org/openmaptiles/layers/TransportationTest.java @@ -986,6 +986,15 @@ class TransportationTest extends AbstractLayerTest { testDoesNotMergeLinestrings(Map.of("class", "motorway", "oneway", -1), layer, 10, 14); } + @Test + void testMergesDisconnectedRoadFeaturesUnlessOnewayLong() throws GeometryException { + String layer = Transportation.LAYER_NAME; + testMergesLinestrings(Map.of("class", "motorway", "oneway", 0L), layer, 10, 14); + testMergesLinestrings(Map.of("class", "motorway"), layer, 10, 14); + testDoesNotMergeLinestrings(Map.of("class", "motorway", "oneway", 1L), layer, 10, 14); + testDoesNotMergeLinestrings(Map.of("class", "motorway", "oneway", -1L), layer, 10, 14); + } + @Test void testLightRail() { assertFeatures(13, List.of(Map.of(