diff --git a/CHANGELOG.md b/CHANGELOG.md index f018d437..b93d7f44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +Tiles 4.15.3 +------ +- include Finnish trunk roads from zoom 3 [#221] + Tiles 4.15.2 ------ - Fix parsing of commas in non-English locales [#628] diff --git a/tiles/src/main/java/com/protomaps/basemap/Basemap.java b/tiles/src/main/java/com/protomaps/basemap/Basemap.java index 470bc3ac..02d9f582 100644 --- a/tiles/src/main/java/com/protomaps/basemap/Basemap.java +++ b/tiles/src/main/java/com/protomaps/basemap/Basemap.java @@ -135,7 +135,7 @@ public String description() { @Override public String version() { - return "4.15.2"; + return "4.15.3"; } @Override diff --git a/tiles/src/main/java/com/protomaps/basemap/layers/Roads.java b/tiles/src/main/java/com/protomaps/basemap/layers/Roads.java index 03be0498..7213cfbc 100644 --- a/tiles/src/main/java/com/protomaps/basemap/layers/Roads.java +++ b/tiles/src/main/java/com/protomaps/basemap/layers/Roads.java @@ -300,6 +300,13 @@ public Roads(CountryCoder countryCoder) { with("pm:country", "US"), with("_r_network_US:I"), use("pm:minzoom", 3) + ), + + // Finland tags its national road network highway=trunk, not motorway. + rule( + with("pm:country", "FI"), + with("pm:highway", "trunk"), + use("pm:minzoom", 3) ) )).index(); diff --git a/tiles/src/test/java/com/protomaps/basemap/layers/LayerTest.java b/tiles/src/test/java/com/protomaps/basemap/layers/LayerTest.java index 1edef510..fcc3c480 100644 --- a/tiles/src/test/java/com/protomaps/basemap/layers/LayerTest.java +++ b/tiles/src/test/java/com/protomaps/basemap/layers/LayerTest.java @@ -24,7 +24,7 @@ abstract class LayerTest { // Coarse bounding boxes, not real borders: just enough for tests to land inside a locale. final CountryCoder countryCoder = CountryCoder.fromJsonString( - "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"iso1A2\":\"US\",\"nameEn\":\"United States\"},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[-124,47],[-124,25],[-71,25],[-71,47],[-124,47]]]]}},{\"type\":\"Feature\",\"properties\":{\"iso1A2\":\"NL\",\"nameEn\":\"Netherlands\"},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[3.3,53.6],[3.3,50.7],[7.3,50.7],[7.3,53.6],[3.3,53.6]]]]}}]}"); + "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"iso1A2\":\"US\",\"nameEn\":\"United States\"},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[-124,47],[-124,25],[-71,25],[-71,47],[-124,47]]]]}},{\"type\":\"Feature\",\"properties\":{\"iso1A2\":\"NL\",\"nameEn\":\"Netherlands\"},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[3.3,53.6],[3.3,50.7],[7.3,50.7],[7.3,53.6],[3.3,53.6]]]]}},{\"type\":\"Feature\",\"properties\":{\"iso1A2\":\"FI\",\"nameEn\":\"Finland\"},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[19.5,70.1],[19.5,59.7],[31.6,59.7],[31.6,70.1],[19.5,70.1]]]]}}]}"); final QrankDb qrankDb = new QrankDb(LongLongHashMap.from(new long[]{8888}, new long[]{100000})); diff --git a/tiles/src/test/java/com/protomaps/basemap/layers/RoadsTest.java b/tiles/src/test/java/com/protomaps/basemap/layers/RoadsTest.java index f39aadef..057672c7 100644 --- a/tiles/src/test/java/com/protomaps/basemap/layers/RoadsTest.java +++ b/tiles/src/test/java/com/protomaps/basemap/layers/RoadsTest.java @@ -151,6 +151,20 @@ void relation4() { ); } + @ParameterizedTest + @CsvSource({ + "trunk, 3", + "trunk_link, 6", + "primary, 7", + }) + void finnishTrunkRoadsEnterAtMotorwayZoom(String highway, int minZoom) { + // Kokkola - Kajaani: national route 28 is 218 km of highway=trunk with no motorway section + assertFeatures(0, + List.of(Map.of("kind", "major_road", "_minzoom", minZoom)), + processWithRelationAndCoords("", 23.34, 63.87, 27.45, 64.12, "highway", highway) + ); + } + @Test void relationShieldsOrderedByNetworkPriority() { // Concurrent I 70 / US 6 relations: Interstate becomes the primary shield regardless of