diff --git a/CHANGELOG.md b/CHANGELOG.md index 03c7a387..2c33122d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +Tiles v3.5.1 +------ +- Order landcover by kind consistently [#154] + Tiles v3.5.0 ------ - Add Daylight Landcover from zooms 0-7. [#154] diff --git a/app/package-lock.json b/app/package-lock.json index 4551151f..d66b8918 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -13,7 +13,7 @@ "ol-mapbox-style": "^12.0.0", "ol-pmtiles": "^0.2.0", "pixelmatch": "^5.3.0", - "pmtiles": "^3.0.4", + "pmtiles": "^3.0.5", "react": "^18.2.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", @@ -2167,9 +2167,9 @@ } }, "node_modules/pmtiles": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-3.0.4.tgz", - "integrity": "sha512-dqxfYM/b0Y59JEk55piird5gqcRwq9o3yLBV2/l7ecfMPbCt+ccVxtPf5Ox8h/amCyRov+WgnbLLFGp8D5E8Gw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-3.0.5.tgz", + "integrity": "sha512-K6NxVvW/vXE3052VZKF2ppyjdyhLx41FidR5yV8L/+El+lcMJpXS0vHBSPFmjdag5zkYv2XGDdq+3VjB2K7l6w==", "dependencies": { "@types/leaflet": "^1.9.8", "fflate": "^0.8.0" diff --git a/app/package.json b/app/package.json index 553f9d35..82a105ee 100644 --- a/app/package.json +++ b/app/package.json @@ -16,7 +16,7 @@ "ol-mapbox-style": "^12.0.0", "ol-pmtiles": "^0.2.0", "pixelmatch": "^5.3.0", - "pmtiles": "^3.0.4", + "pmtiles": "^3.0.5", "react": "^18.2.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", diff --git a/tiles/src/main/java/com/protomaps/basemap/Basemap.java b/tiles/src/main/java/com/protomaps/basemap/Basemap.java index 865b93ba..4032a9e3 100644 --- a/tiles/src/main/java/com/protomaps/basemap/Basemap.java +++ b/tiles/src/main/java/com/protomaps/basemap/Basemap.java @@ -96,7 +96,7 @@ public String description() { @Override public String version() { - return "3.5.0"; + return "3.5.1"; } @Override diff --git a/tiles/src/main/java/com/protomaps/basemap/layers/Landcover.java b/tiles/src/main/java/com/protomaps/basemap/layers/Landcover.java index 565e79d7..b9a2f0b3 100644 --- a/tiles/src/main/java/com/protomaps/basemap/layers/Landcover.java +++ b/tiles/src/main/java/com/protomaps/basemap/layers/Landcover.java @@ -12,15 +12,23 @@ public class Landcover implements ForwardingProfile.FeaturePostProcessor { static final Map kindMapping = Map.of("urban", "urban_area", "crop", "farmland", "grass", "grassland", - "trees", "forest", "snow", "glacier", "shrub", "scrub", "barren", "barren"); + "trees", "forest", "snow", "glacier", "shrub", "scrub"); + + static final Map sortKeyMapping = + Map.of("barren", 0, "snow", 1, "crop", 2, "shrub", 3, "grass", 4, "trees", 5); public void processLandcover(SourceFeature sf, FeatureCollector features) { - String kind = kindMapping.getOrDefault(sf.getString("class"), "unknown"); + String daylightClass = sf.getString("class"); + String kind = kindMapping.getOrDefault(daylightClass, daylightClass); + + // polygons are disjoint and non-overlapping, but order them in archive in consistent way + Integer sortKey = sortKeyMapping.getOrDefault(daylightClass, 6); features.polygon(this.name()) .setId(FeatureId.create(sf)) .setAttr("pmap:kind", kind) .setZoomRange(0, 7) + .setSortKey(sortKey) .setMinPixelSize(0.0); } diff --git a/tiles/src/test/java/com/protomaps/basemap/layers/LandcoverTest.java b/tiles/src/test/java/com/protomaps/basemap/layers/LandcoverTest.java index a326bd25..b82df44e 100644 --- a/tiles/src/test/java/com/protomaps/basemap/layers/LandcoverTest.java +++ b/tiles/src/test/java/com/protomaps/basemap/layers/LandcoverTest.java @@ -13,17 +13,17 @@ class LandcoverTest extends LayerTest { @ParameterizedTest @CsvSource(value = { - "urban,urban_area", - "crop,farmland", - "grass,grassland", - "trees,forest", - "snow,glacier", - "shrub,scrub", - "barren,barren" + "urban,urban_area,6", + "crop,farmland,2", + "grass,grassland,4", + "trees,forest,5", + "snow,glacier,1", + "shrub,scrub,3", + "barren,barren,0" }) - void simple(String daylightClassString, String expectedString) { + void simple(String daylightClassString, String expectedString, Integer expectedSortKey) { assertFeatures(7, - List.of(Map.of("pmap:kind", expectedString)), + List.of(Map.of("pmap:kind", expectedString, "_sortkey", expectedSortKey)), process(SimpleFeature.create( newPolygon(0, 0, 0, 1, 1, 1, 0, 0), new HashMap<>(Map.of("class", daylightClassString)),