Fix "strategies" accounting for 0-length linestrings and degenerate polygons (#137)

* Dropping a 0-length feature doesn't count as dropping-as-needed

* Add an option not to reduce tiny polygons to dust at maxzoom

* Add test for prevention of tiny polygon reduction at maxzoom

* Fix accounting for tiny polygons not to include degenerate geometries

* Revert "Add test for prevention of tiny polygon reduction at maxzoom"

This reverts commit f931bbd73e.

* Revert "Add an option not to reduce tiny polygons to dust at maxzoom"

This reverts commit 03f0882bb6.

* Fix tests

* Another test that no longer has any really tiny polygons

* Oops, that broke LineString simplification

* This time for sure!

* Update changelog and version
This commit is contained in:
Erica Fischer
2023-08-29 10:54:39 -07:00
committed by GitHub
parent 6778aeac52
commit 2ec6180003
42 changed files with 56 additions and 49 deletions
-1
View File
@@ -8,7 +8,6 @@
"maxzoom": "9",
"minzoom": "8",
"name": "tests/allow-existing/both.mbtiles",
"strategies": "[{},{},{},{},{},{},{},{},{\"tiny_polygons\":1},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,6 +9,7 @@
"maxzoom": "1",
"minzoom": "0",
"name": "tests/border/out/-z1_--detect-shared-borders.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":1},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "1",
"minzoom": "0",
"name": "tests/coalesce-id/out/-z1_--coalesce_--reorder.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "11",
"minzoom": "11",
"name": "tests/coalesce-tract/out/-P_--coalesce_--reorder_-z11_-Z11_-y_STATEFP10_-y_COUNTYFP10_-l_merged.json.check.mbtiles",
"strategies": "[{},{},{},{},{},{},{},{},{},{},{},{\"tiny_polygons\":5}]",
"type": "overlay",
"version": "2"
}, "features": [
-1
View File
@@ -9,7 +9,6 @@
"maxzoom": "2",
"minzoom": "0",
"name": "tests/curve/out/-z2.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":4}]",
"type": "overlay",
"version": "2"
}, "features": [
-1
View File
@@ -9,7 +9,6 @@
"maxzoom": "2",
"minzoom": "0",
"name": "tests/curve/out/-z2_--no-clipping.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":10}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "2",
"minzoom": "0",
"name": "tests/curve/out/-z2_--no-duplication.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":6},{\"tiny_polygons\":6}]",
"type": "overlay",
"version": "2"
}, "features": [
-1
View File
@@ -9,7 +9,6 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/dateline/out/-z5.json.check.mbtiles",
"strategies": "[{},{},{},{\"tiny_polygons\":1},{},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
-1
View File
@@ -9,7 +9,6 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/dateline/out/-z5_-b0.json.check.mbtiles",
"strategies": "[{},{},{},{\"tiny_polygons\":1},{},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,6 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/named/out/-z0_-Lalgeria%3atests%2fnamed%2falg_-Lalbania%3atests%2fnamed%2falb.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,6 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/named/out/-z0_-Lalgeria%3atests%2fnamed%2falg_-Lalbania%3atests%2fnamed%2falb_-lunified.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "5",
"minzoom": "5",
"name": "tests/ne_110m_admin_0_countries/out/-R5%2f17%2f11.json.check.mbtiles",
"strategies": "[{},{},{},{},{},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-ae_-zg_-M5000_--drop-densest-as-needed.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":171,\"tile_size_desired\":39209},{\"dropped_as_needed\":189,\"tiny_polygons\":1,\"tile_size_desired\":25164},{\"dropped_as_needed\":161,\"tiny_polygons\":2,\"tile_size_desired\":21198},{\"dropped_as_needed\":134,\"tiny_polygons\":12,\"tile_size_desired\":10761},{\"dropped_as_needed\":62,\"tiny_polygons\":20,\"tile_size_desired\":6604},{\"tiny_polygons\":47}]",
"strategies": "[{\"dropped_as_needed\":171,\"tile_size_desired\":39209},{\"dropped_as_needed\":189,\"tile_size_desired\":25164},{\"dropped_as_needed\":161,\"tile_size_desired\":21198},{\"dropped_as_needed\":134,\"tile_size_desired\":10761},{\"dropped_as_needed\":62,\"tile_size_desired\":6604},{\"tiny_polygons\":2}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-ae_-zg_-M5000_--drop-fraction-as-needed.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":160,\"tile_size_desired\":39209},{\"dropped_as_needed\":188,\"tile_size_desired\":25164},{\"dropped_as_needed\":190,\"tiny_polygons\":2,\"tile_size_desired\":21198},{\"dropped_as_needed\":180,\"tiny_polygons\":9,\"tile_size_desired\":10761},{\"dropped_as_needed\":145,\"tiny_polygons\":17,\"tile_size_desired\":6604},{\"tiny_polygons\":47}]",
"strategies": "[{\"dropped_as_needed\":160,\"tile_size_desired\":39209},{\"dropped_as_needed\":188,\"tile_size_desired\":25164},{\"dropped_as_needed\":190,\"tile_size_desired\":21198},{\"dropped_as_needed\":180,\"tile_size_desired\":10761},{\"dropped_as_needed\":145,\"tile_size_desired\":6604},{\"tiny_polygons\":2}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-ae_-zg_-M5000_--drop-smallest-as-needed.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":174,\"tile_size_desired\":39209},{\"dropped_as_needed\":202,\"tile_size_desired\":25164},{\"dropped_as_needed\":190,\"tiny_polygons\":2,\"tile_size_desired\":21198},{\"dropped_as_needed\":156,\"tiny_polygons\":12,\"tile_size_desired\":10761},{\"dropped_as_needed\":80,\"tiny_polygons\":20,\"tile_size_desired\":6604},{\"tiny_polygons\":47}]",
"strategies": "[{\"dropped_as_needed\":174,\"tile_size_desired\":39209},{\"dropped_as_needed\":202,\"tile_size_desired\":25164},{\"dropped_as_needed\":190,\"tile_size_desired\":21198},{\"dropped_as_needed\":156,\"tile_size_desired\":10761},{\"dropped_as_needed\":80,\"tile_size_desired\":6604},{\"tiny_polygons\":2}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-ae_-zg_-M5000_--force-feature-limit.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":316,\"tile_size_desired\":39209},{\"dropped_as_needed\":287,\"tiny_polygons\":4,\"tile_size_desired\":25164},{\"dropped_as_needed\":223,\"tiny_polygons\":4,\"tile_size_desired\":21198},{\"dropped_as_needed\":93,\"tiny_polygons\":14,\"tile_size_desired\":10761},{\"dropped_as_needed\":9,\"tiny_polygons\":21,\"tile_size_desired\":6604},{\"tiny_polygons\":47}]",
"strategies": "[{\"dropped_as_needed\":316,\"tile_size_desired\":39209},{\"dropped_as_needed\":287,\"tiny_polygons\":3,\"tile_size_desired\":25164},{\"dropped_as_needed\":223,\"tiny_polygons\":2,\"tile_size_desired\":21198},{\"dropped_as_needed\":93,\"tile_size_desired\":10761},{\"dropped_as_needed\":9,\"tile_size_desired\":6604},{\"tiny_polygons\":2}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z0_--tiny-polygon-size_100.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":138}]",
"strategies": "[{\"tiny_polygons\":150}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z0_--tiny-polygon-size_50_--order-largest-first.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":90}]",
"strategies": "[{\"tiny_polygons\":109}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z0_--tiny-polygon-size_50_--simplification_50.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":90}]",
"strategies": "[{\"tiny_polygons\":109}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "2",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z2_--convert-polygons-to-label-points.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3}]",
"strategies": "[{},{},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "3",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z3_-ai.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12}]",
"strategies": "[{},{},{\"tiny_polygons\":1},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12},{\"tiny_polygons\":20}]",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":1},{},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_--drop-polygons.json.check.mbtiles",
"strategies": "[{\"dropped_by_rate\":172},{\"dropped_by_rate\":205,\"tiny_polygons\":1},{\"dropped_by_rate\":189},{\"dropped_by_rate\":166,\"tiny_polygons\":7},{\"tiny_polygons\":20}]",
"strategies": "[{\"dropped_by_rate\":172},{\"dropped_by_rate\":205},{\"dropped_by_rate\":189},{\"dropped_by_rate\":166},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_-S4.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12},{\"tiny_polygons\":20}]",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":1},{},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_-S4_--simplification-at-maximum-zoom_2.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12},{\"tiny_polygons\":20}]",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":1},{},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_-S4_--visvalingam.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12},{\"tiny_polygons\":20}]",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":1},{},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_-pD.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":45},{\"tiny_polygons\":29},{\"tiny_polygons\":70},{\"tiny_polygons\":120}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,6 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z4_-yname_-pc.json.check.mbtiles",
"strategies": "[{},{\"tiny_polygons\":1},{\"tiny_polygons\":8},{\"tiny_polygons\":32},{\"tiny_polygons\":63}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z5_-M5000_--coalesce-densest-as-needed.json.check.mbtiles",
"strategies": "[{\"coalesced_as_needed\":528,\"detail_reduced\":2,\"tile_size_desired\":39204},{\"coalesced_as_needed\":212,\"tile_size_desired\":25156},{\"coalesced_as_needed\":192,\"tiny_polygons\":3,\"tile_size_desired\":21207},{\"coalesced_as_needed\":156,\"tiny_polygons\":11,\"tile_size_desired\":10753},{\"coalesced_as_needed\":65,\"tiny_polygons\":20,\"tile_size_desired\":6588},{\"tiny_polygons\":46}]",
"strategies": "[{\"coalesced_as_needed\":528,\"detail_reduced\":2,\"tiny_polygons\":2,\"tile_size_desired\":39204},{\"coalesced_as_needed\":212,\"tile_size_desired\":25156},{\"coalesced_as_needed\":192,\"tiny_polygons\":1,\"tile_size_desired\":21207},{\"coalesced_as_needed\":156,\"tile_size_desired\":10753},{\"coalesced_as_needed\":65,\"tile_size_desired\":6588},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z5_-M5000_--coalesce-fraction-as-needed.json.check.mbtiles",
"strategies": "[{\"coalesced_as_needed\":528,\"detail_reduced\":2,\"tile_size_desired\":39204},{\"coalesced_as_needed\":217,\"tile_size_desired\":25156},{\"coalesced_as_needed\":218,\"tiny_polygons\":2,\"tile_size_desired\":21207},{\"coalesced_as_needed\":227,\"tiny_polygons\":4,\"tile_size_desired\":10753},{\"coalesced_as_needed\":192,\"tiny_polygons\":13,\"tile_size_desired\":6588},{\"tiny_polygons\":46}]",
"strategies": "[{\"coalesced_as_needed\":528,\"detail_reduced\":2,\"tiny_polygons\":2,\"tile_size_desired\":39204},{\"coalesced_as_needed\":217,\"tile_size_desired\":25156},{\"coalesced_as_needed\":218,\"tile_size_desired\":21207},{\"coalesced_as_needed\":227,\"tile_size_desired\":10753},{\"coalesced_as_needed\":192,\"tile_size_desired\":6588},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z5_-M5000_--coalesce-smallest-as-needed.json.check.mbtiles",
"strategies": "[{\"coalesced_as_needed\":1272,\"tile_size_desired\":39204},{\"coalesced_as_needed\":1191,\"tiny_polygons\":1,\"tile_size_desired\":25156},{\"coalesced_as_needed\":731,\"tiny_polygons\":3,\"tile_size_desired\":21207},{\"coalesced_as_needed\":178,\"tiny_polygons\":8,\"tile_size_desired\":10753},{\"coalesced_as_needed\":74,\"tiny_polygons\":20,\"tile_size_desired\":6588},{\"tiny_polygons\":46}]",
"strategies": "[{\"coalesced_as_needed\":1272,\"tiny_polygons\":5,\"tile_size_desired\":39204},{\"coalesced_as_needed\":1191,\"tile_size_desired\":25156},{\"coalesced_as_needed\":731,\"tiny_polygons\":1,\"tile_size_desired\":21207},{\"coalesced_as_needed\":178,\"tile_size_desired\":10753},{\"coalesced_as_needed\":74,\"tile_size_desired\":6588},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "5",
"minzoom": "0",
"name": "tests/ne_110m_admin_0_countries/out/-z5_-M5000_--drop-smallest-as-needed.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":174,\"tile_size_desired\":39204},{\"dropped_as_needed\":202,\"tile_size_desired\":25156},{\"dropped_as_needed\":190,\"tiny_polygons\":2,\"tile_size_desired\":21207},{\"dropped_as_needed\":156,\"tiny_polygons\":12,\"tile_size_desired\":10753},{\"dropped_as_needed\":78,\"tiny_polygons\":20,\"tile_size_desired\":6588},{\"tiny_polygons\":46}]",
"strategies": "[{\"dropped_as_needed\":174,\"tile_size_desired\":39204},{\"dropped_as_needed\":202,\"tile_size_desired\":25156},{\"dropped_as_needed\":190,\"tile_size_desired\":21207},{\"dropped_as_needed\":156,\"tile_size_desired\":10753},{\"dropped_as_needed\":78,\"tile_size_desired\":6588},{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [
+1 -1
View File
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/ne_110m_ocean/join/ocean.mbtiles + tests/ne_110m_ocean/join/countries.mbtiles",
"strategies": "[{},{\"tiny_polygons\":2},{\"tiny_polygons\":3},{\"tiny_polygons\":12},{\"tiny_polygons\":23}]",
"strategies": "[{},{},{},{},{\"tiny_polygons\":4}]",
"type": "overlay",
"version": "2"
}, "features": [
+1 -1
View File
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/nullisland/out/-b0_-z4.json.check.mbtiles",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8,\"tiny_polygons\":12},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -10,7 +10,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/nullisland/out/-b0_-z4_-ANullIsland.json.check.mbtiles",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8,\"tiny_polygons\":12},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,7 +9,7 @@
"maxzoom": "4",
"minzoom": "0",
"name": "tests/nullisland/out/-b0_-z4_-NNullIsland.json.check.mbtiles",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8,\"tiny_polygons\":12},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"strategies": "[{\"dropped_by_rate\":4},{\"dropped_by_rate\":8},{\"dropped_by_rate\":8},{\"dropped_by_rate\":3},{}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -9,6 +9,7 @@
"maxzoom": "0",
"minzoom": "0",
"name": "tests/polygon-winding/out/-z0_--reverse-source-polygon-winding.json.check.mbtiles",
"strategies": "[{\"tiny_polygons\":1}]",
"type": "overlay",
"version": "2"
}, "features": [