onthegomap / planetiler

Flexible tool to build planet-scale vector tilesets from OpenStreetMap data fast
Apache License 2.0
1.46k stars 116 forks source link

Fix match ordering #1101

Closed msbarry closed 1 week ago

msbarry commented 1 week ago

Fix yaml match ordering so that returns the first match when there are multiple conditions for the same value.

Previously this case:

- if: condition 1
  value: a
- if condition 2
  value: b
- if: condition 3
  value a

condition 1 and condition 2 were getting combined into 1 expression for a:

- if: condition 1 OR condition 3
  value: a
- if condition 2
  value: b

So when condition 2 and 3 match, it returned the first match in that new expression (a) instead of the first match from the original expression (b)

This PR changes to prevent condition combining in multi-expressions when used in this match expression in yaml configs.

Fixes #1091

sonarcloud[bot] commented 1 week ago

Quality Gate Passed Quality Gate passed

Issues
1 New issue
0 Accepted issues

Measures
0 Security Hotspots
100.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

github-actions[bot] commented 1 week ago
This Branch 543f15f1579b9b63a026ec383fba7c712032c0e5 Base e6f1c41006c68295050fbb63ed235f37aa98258c
``` 0:01:10 DEB [archive] - Tile stats: 0:01:10 DEB [archive] - Biggest tiles (gzipped) 1. 14/4942/6092 (160k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:86k) 2. 9/154/190 (149k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k) 3. 10/308/380 (138k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k) 4. 10/308/381 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k) 5. 14/4941/6092 (114k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:66k) 6. 14/4941/6093 (113k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k) 7. 14/4940/6092 (100k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k) 8. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k) 9. 14/4942/6091 (97k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k) 10. 11/616/761 (95k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k) 0:01:10 DEB [archive] - Max tile sizes z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 all boundary 155 375 444 584 939 371 467 587 823 1.7k 2.1k 7.2k 6.4k 5.8k 4.5k 7.2k water 7.7k 3.7k 8.6k 5.5k 2.6k 5.1k 15k 18k 16k 26k 15k 13k 17k 15k 12k 26k place 0 0 441 441 441 640 714 1k 1.6k 3.1k 5.7k 3.3k 1.7k 803 948 5.7k landuse 0 0 0 0 549 695 1.6k 6.8k 17k 44k 59k 50k 38k 19k 12k 59k transportation 0 0 0 0 370 905 1.3k 6k 8.1k 24k 17k 19k 65k 48k 36k 65k waterway 0 0 0 0 112 119 0 0 0 3.2k 2.3k 2.1k 2.1k 4.9k 2.4k 4.9k park 0 0 0 0 0 0 1.2k 4.2k 9.7k 18k 13k 8.2k 3.7k 3.4k 4.4k 18k transportation_name 0 0 0 0 0 0 369 464 1.2k 1.8k 5.5k 4.7k 3.9k 3.4k 18k 18k landcover 0 0 0 0 0 0 0 9.6k 29k 85k 72k 81k 53k 30k 25k 85k mountain_peak 0 0 0 0 0 0 0 1.1k 1.8k 3.4k 4.3k 2.8k 1.4k 1.4k 869 4.3k water_name 0 0 0 0 0 0 0 0 0 486 461 433 452 1.2k 1.5k 1.5k aerodrome_label 0 0 0 0 0 0 0 0 0 0 666 328 273 221 221 666 aeroway 0 0 0 0 0 0 0 0 0 0 1.6k 2.1k 3k 3.4k 2.8k 3.4k poi 0 0 0 0 0 0 0 0 0 0 0 0 506 503 86k 86k building 0 0 0 0 0 0 0 0 0 0 0 0 0 59k 92k 92k housenumber 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35k 35k full tile 7.9k 4k 9.5k 6.5k 3.8k 6.2k 21k 42k 85k 203k 185k 135k 114k 129k 252k 252k gzipped 6.2k 3.6k 7.1k 5.2k 3.1k 5k 14k 30k 60k 149k 138k 99k 83k 92k 160k 160k 0:01:10 DEB [archive] - Max tile: 252k (gzipped: 160k) 0:01:10 DEB [archive] - Avg tile: 5.5k (gzipped: 4.1k) using weighted average based on OSM traffic 0:01:10 DEB [archive] - # tiles: 4,115,029 0:01:10 DEB [archive] - # features: 5,516,877 0:01:10 INF [archive] - Finished in 19s cpu:1m10s avg:3.6 0:01:10 INF [archive] - read 1x(3% 0.5s wait:18s done:1s) 0:01:10 INF [archive] - encode 4x(56% 11s wait:2s done:1s) 0:01:10 INF [archive] - write 1x(22% 4s wait:13s) 0:01:10 INF [archive] - Finished in 1m11s cpu:3m38s gc:1s avg:3.1 0:01:10 INF [archive] - FINISHED! 0:01:10 INF [archive] - 0:01:10 INF [archive] - ---------------------------------------- 0:01:10 INF [archive] - data errors: 0:01:10 INF [archive] - render_snap_fix_input 16,669 0:01:10 INF [archive] - osm_multipolygon_missing_way 360 0:01:10 INF [archive] - osm_boundary_missing_way 73 0:01:10 INF [archive] - merge_snap_fix_input 12 0:01:10 INF [archive] - feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix 2 0:01:10 INF [archive] - render_snap_fix_input2 1 0:01:10 INF [archive] - omt_fix_water_before_ne_intersect 1 0:01:10 INF [archive] - feature_polygon_osm_invalid_multipolygon_empty_after_fix 1 0:01:10 INF [archive] - feature_point_on_surface_osm_invalid_multipolygon_empty_after_fix 1 0:01:10 INF [archive] - ---------------------------------------- 0:01:10 INF [archive] - overall 1m11s cpu:3m38s gc:1s avg:3.1 0:01:10 INF [archive] - lake_centerlines 3s cpu:5s avg:2 0:01:10 INF [archive] - read 1x(18% 0.5s done:2s) 0:01:10 INF [archive] - process 4x(0% 0s done:2s) 0:01:10 INF [archive] - write 1x(0% 0s done:2s) 0:01:10 INF [archive] - water_polygons 15s cpu:41s avg:2.7 0:01:10 INF [archive] - read 1x(40% 6s done:7s) 0:01:10 INF [archive] - process 4x(27% 4s wait:4s done:5s) 0:01:10 INF [archive] - write 1x(4% 0.6s wait:9s done:5s) 0:01:10 INF [archive] - natural_earth 12s cpu:18s avg:1.6 0:01:10 INF [archive] - read 1x(52% 6s done:5s) 0:01:10 INF [archive] - process 4x(7% 0.8s wait:6s done:5s) 0:01:10 INF [archive] - write 1x(0% 0s wait:6s done:5s) 0:01:10 INF [archive] - osm_pass1 2s cpu:6s avg:3.2 0:01:10 INF [archive] - read 1x(2% 0s wait:2s) 0:01:10 INF [archive] - parse 4x(33% 0.6s) 0:01:10 INF [archive] - process 1x(69% 1s) 0:01:10 INF [archive] - osm_pass2 18s cpu:1m13s avg:3.9 0:01:10 INF [archive] - read 1x(0% 0s wait:11s done:8s) 0:01:10 INF [archive] - process 4x(75% 14s) 0:01:10 INF [archive] - write 1x(2% 0.4s wait:18s) 0:01:10 INF [archive] - ne_lakes 0s cpu:0s avg:0 0:01:10 INF [archive] - boundaries 0s cpu:0s avg:1.2 0:01:10 INF [archive] - agg_stop 0s cpu:0s avg:0 0:01:10 INF [archive] - sort 1s cpu:3s avg:2.5 0:01:10 INF [archive] - worker 1x(53% 0.7s) 0:01:10 INF [archive] - archive 19s cpu:1m10s avg:3.6 0:01:10 INF [archive] - read 1x(3% 0.5s wait:18s done:1s) 0:01:10 INF [archive] - encode 4x(56% 11s wait:2s done:1s) 0:01:10 INF [archive] - write 1x(22% 4s wait:13s) 0:01:10 INF [archive] - ---------------------------------------- 0:01:10 INF [archive] - archive 108MB 0:01:10 INF [archive] - features 283MB -rw-r--r-- 1 runner docker 86M Nov 14 11:20 run.jar ``` ``` 0:01:03 DEB [archive] - Tile stats: 0:01:03 DEB [archive] - Biggest tiles (gzipped) 1. 14/4942/6092 (160k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:86k) 2. 9/154/190 (149k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k) 3. 10/308/380 (138k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k) 4. 10/308/381 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k) 5. 14/4941/6092 (114k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:66k) 6. 14/4941/6093 (113k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k) 7. 14/4940/6092 (100k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k) 8. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k) 9. 14/4942/6091 (97k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k) 10. 11/616/761 (95k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k) 0:01:03 DEB [archive] - Max tile sizes z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 all boundary 155 375 444 584 939 371 467 587 823 1.7k 2.1k 7.2k 6.4k 5.8k 4.5k 7.2k water 7.7k 3.7k 8.6k 5.5k 2.6k 5.1k 15k 18k 16k 26k 15k 13k 17k 15k 12k 26k place 0 0 441 441 441 640 714 1k 1.6k 3.1k 5.7k 3.3k 1.7k 803 948 5.7k landuse 0 0 0 0 549 695 1.6k 6.8k 17k 44k 59k 50k 38k 19k 12k 59k transportation 0 0 0 0 370 905 1.3k 6k 8.1k 24k 17k 19k 65k 48k 36k 65k waterway 0 0 0 0 112 119 0 0 0 3.2k 2.3k 2.1k 2.1k 4.9k 2.4k 4.9k park 0 0 0 0 0 0 1.2k 4.2k 9.7k 18k 13k 8.2k 3.7k 3.4k 4.4k 18k transportation_name 0 0 0 0 0 0 369 464 1.2k 1.8k 5.5k 4.7k 3.9k 3.4k 18k 18k landcover 0 0 0 0 0 0 0 9.6k 29k 85k 72k 81k 53k 30k 25k 85k mountain_peak 0 0 0 0 0 0 0 1.1k 1.8k 3.4k 4.3k 2.8k 1.4k 1.4k 869 4.3k water_name 0 0 0 0 0 0 0 0 0 486 461 433 452 1.2k 1.5k 1.5k aerodrome_label 0 0 0 0 0 0 0 0 0 0 666 328 273 221 221 666 aeroway 0 0 0 0 0 0 0 0 0 0 1.6k 2.1k 3k 3.4k 2.8k 3.4k poi 0 0 0 0 0 0 0 0 0 0 0 0 506 503 86k 86k building 0 0 0 0 0 0 0 0 0 0 0 0 0 59k 92k 92k housenumber 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35k 35k full tile 7.9k 4k 9.5k 6.5k 3.8k 6.2k 21k 42k 85k 203k 185k 135k 114k 129k 252k 252k gzipped 6.2k 3.6k 7.1k 5.2k 3.1k 5k 14k 30k 60k 149k 138k 99k 83k 92k 160k 160k 0:01:03 DEB [archive] - Max tile: 252k (gzipped: 160k) 0:01:03 DEB [archive] - Avg tile: 5.5k (gzipped: 4.1k) using weighted average based on OSM traffic 0:01:03 DEB [archive] - # tiles: 4,115,029 0:01:03 DEB [archive] - # features: 5,516,877 0:01:03 INF [archive] - Finished in 19s cpu:1m10s avg:3.7 0:01:03 INF [archive] - read 1x(3% 0.6s wait:17s done:1s) 0:01:03 INF [archive] - encode 4x(57% 11s wait:2s) 0:01:03 INF [archive] - write 1x(22% 4s wait:13s) 0:01:03 INF [archive] - Finished in 1m4s cpu:3m29s avg:3.3 0:01:03 INF [archive] - FINISHED! 0:01:03 INF [archive] - 0:01:03 INF [archive] - ---------------------------------------- 0:01:03 INF [archive] - data errors: 0:01:03 INF [archive] - render_snap_fix_input 16,669 0:01:03 INF [archive] - osm_multipolygon_missing_way 360 0:01:03 INF [archive] - osm_boundary_missing_way 73 0:01:03 INF [archive] - merge_snap_fix_input 12 0:01:03 INF [archive] - feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix 2 0:01:03 INF [archive] - render_snap_fix_input2 1 0:01:03 INF [archive] - omt_fix_water_before_ne_intersect 1 0:01:03 INF [archive] - feature_polygon_osm_invalid_multipolygon_empty_after_fix 1 0:01:03 INF [archive] - feature_point_on_surface_osm_invalid_multipolygon_empty_after_fix 1 0:01:03 INF [archive] - ---------------------------------------- 0:01:03 INF [archive] - overall 1m4s cpu:3m29s avg:3.3 0:01:03 INF [archive] - lake_centerlines 2s cpu:5s avg:2.4 0:01:03 INF [archive] - read 1x(22% 0.5s done:2s) 0:01:03 INF [archive] - process 4x(0% 0s done:2s) 0:01:03 INF [archive] - write 1x(0% 0s done:2s) 0:01:03 INF [archive] - water_polygons 15s cpu:41s avg:2.8 0:01:03 INF [archive] - read 1x(40% 6s done:7s) 0:01:03 INF [archive] - process 4x(27% 4s wait:4s done:5s) 0:01:03 INF [archive] - write 1x(4% 0.5s wait:9s done:5s) 0:01:03 INF [archive] - natural_earth 6s cpu:13s avg:2 0:01:03 INF [archive] - read 1x(96% 6s) 0:01:03 INF [archive] - process 4x(12% 0.8s wait:6s) 0:01:03 INF [archive] - write 1x(0% 0s wait:6s) 0:01:03 INF [archive] - osm_pass1 2s cpu:6s avg:3.2 0:01:03 INF [archive] - read 1x(2% 0s wait:2s) 0:01:03 INF [archive] - parse 4x(33% 0.7s) 0:01:03 INF [archive] - process 1x(70% 1s) 0:01:03 INF [archive] - osm_pass2 18s cpu:1m10s avg:3.9 0:01:03 INF [archive] - read 1x(0% 0s wait:10s done:7s) 0:01:03 INF [archive] - process 4x(77% 14s) 0:01:03 INF [archive] - write 1x(2% 0.4s wait:17s) 0:01:03 INF [archive] - ne_lakes 0s cpu:0s avg:0 0:01:03 INF [archive] - boundaries 0s cpu:0s avg:1.2 0:01:03 INF [archive] - agg_stop 0s cpu:0s avg:0 0:01:03 INF [archive] - sort 1s cpu:3s avg:2.5 0:01:03 INF [archive] - worker 1x(54% 0.7s) 0:01:03 INF [archive] - archive 19s cpu:1m10s avg:3.7 0:01:03 INF [archive] - read 1x(3% 0.6s wait:17s done:1s) 0:01:03 INF [archive] - encode 4x(57% 11s wait:2s) 0:01:03 INF [archive] - write 1x(22% 4s wait:13s) 0:01:03 INF [archive] - ---------------------------------------- 0:01:03 INF [archive] - archive 108MB 0:01:03 INF [archive] - features 283MB -rw-r--r-- 1 runner docker 86M Nov 14 11:22 run.jar ```

Full logs: https://github.com/onthegomap/planetiler/actions/runs/11836135932