Repository: onthegomap/planetiler
Pull request #1207: fix: add the poi layer to the shortbread example
Author: login: CommanderStorm
Created: 2025-03-19T00:58:14Z | Merged: 2025-03-20T01:30:56Z

First of all, thanks for the work you are doing. The yaml format works really well ❤️ 

I noticed that the shortbread example for how to create a custom schema does not contain the poi layer.
This PR adds it.

Docs for this are avaliable here:
https://shortbread-tiles.org/schema/1.0/#layer-pois

I have tried to test every distinct failour case that I could come up with (while trying to keep said testcases minimal => not cause undue burden on review)

![image](https://github.com/user-attachments/assets/153176b5-ff81-43ea-87c7-1211b577ef02)


Diff:
diff --git a/planetiler-custommap/src/main/resources/samples/shortbread.spec.yml b/planetiler-custommap/src/main/resources/samples/shortbread.spec.yml
index 4ea4dbd82d..f366af7c32 100644
--- a/planetiler-custommap/src/main/resources/samples/shortbread.spec.yml
+++ b/planetiler-custommap/src/main/resources/samples/shortbread.spec.yml
@@ -572,6 +572,143 @@ examples:
     tags:
       kind: gondola
 
+- name: 'pois can have names and adresses'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      office: diplomatic
+      name: 'Name'
+      addr:housename: 'Housename'
+      addr:housenumber: 'Housenumber'
+  output:
+    - layer: pois
+      geometry: point
+      allow_extra_tags: false
+      tags:
+        office: diplomatic
+        name: 'Name'
+        housename: 'Housename'
+        housenumber: 'Housenumber'
+    - layer: addresses
+      geometry: point
+      allow_extra_tags: false
+      tags:
+        name: 'Housename'
+        number: 'Housenumber'
+
+- name: 'arts_centre poi with invalid tag (man_made=beauty) is not emmitted as such'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      amenity: arts_centre
+      man_made: beauty
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      amenity: arts_centre
+
+- name: 'place_of_worship poi'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      amenity: place_of_worship
+      religion: some_religion
+      denomination: some_denomination
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      amenity: place_of_worship
+      religion: some_religion
+      denomination: some_denomination
+
+- name: 'recycling poi with invalid tag does not cause this to be emmitted'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      amenity: recycling
+      recycling:glass_bottles: yes
+      recycling:paper: yes
+      recycling:clothes: yes
+      recycling:scrap_metal: yes
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      amenity: recycling
+      recycling:glass_bottles: true
+      recycling:paper: true
+      recycling:clothes: true
+      recycling:scrap_metal: true
+
+- name: 'recycling poi without recycling tags set'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      amenity: recycling
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      amenity: recycling
+      recycling:glass_bottles: false
+      recycling:paper: false
+      recycling:clothes: false
+      recycling:scrap_metal: false
+
+- name: 'poi bank without atm'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      atm: yes
+      amenity: bank
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      atm: true
+      amenity: bank
+
+- name: 'poi bank with atm'
+  input:
+    source: osm
+    geometry: point
+    tags:
+      atm: no
+      amenity: bank
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      atm: false
+      amenity: bank
+
+- name: 'poi on polygon'
+  input:
+    source: osm
+    geometry: polygon
+    tags:
+      historic: battlefield
+  output:
+    layer: pois
+    geometry: point
+    allow_extra_tags: false
+    tags:
+      historic: battlefield
+
 - name: 'train station point'
   input:
     source: osm
diff --git a/planetiler-custommap/src/main/resources/samples/shortbread.yml b/planetiler-custommap/src/main/resources/samples/shortbread.yml
index 83b81b528e..ebbc0b8856 100644
--- a/planetiler-custommap/src/main/resources/samples/shortbread.yml
+++ b/planetiler-custommap/src/main/resources/samples/shortbread.yml
@@ -610,6 +610,267 @@ layers:
     - key: kind
       type: match_value
 
+- id: pois
+  features:
+  - source: osm
+    geometry: point
+    min_zoom: 14
+    include_when: &poi_filter
+      amenity: &poi_filter_amenity
+        - arts_centre
+        - atm
+        - bank
+        - bar
+        - bench
+        - bicycle_rental
+        - biergarten
+        - cafe
+        - car_rental
+        - car_sharing
+        - car_wash
+        - cinema
+        - clinic
+        - college
+        - community_centre
+        - courthouse
+        - dentist
+        - doctors
+        - dog_park
+        - drinking_water
+        - embassy
+        - fast_food
+        - fire_station
+        - food_court
+        - fountain
+        - grave_yard
+        - hospital
+        - hunting_stand
+        - library
+        - marketplace
+        - nightclub
+        - nursing_home
+        - pharmacy
+        - place_of_worship
+        - playground
+        - police
+        - post_box
+        - post_office
+        - prison
+        - pub
+        - public_building
+        - recycling
+        - restaurant
+        - school
+        - shelter
+        - telephone
+        - theatre
+        - toilets
+        - townhall
+        - university
+        - vending_machine
+        - veterinary
+        - waste_basket
+      emergency: &poi_filter_emergency
+        - defibrillator
+        - fire_hydrant
+        - phone
+      highway: &poi_filter_highway
+        - emergency_access_point
+      historic: &poi_filter_historic
+        - archaeological_site
+        - battlefield
+        - castle
+        - fort
+        - memorial
+        - monument
+        - ruins
+        - wayside_cross
+        - wayside_shrine
+      leisure: &poi_filter_leisure
+        - golf_course
+        - ice_rink
+        - pitch
+        - sports_centre
+        - stadium
+        - swimming_pool
+        - water_park
+      man_made: &poi_filter_man_made
+        - lighthouse
+        - surveillance
+        - tower
+        - wastewater_plant
+        - water_well
+        - water_works
+        - watermill
+        - windmill
+      office: &poi_filter_office
+        - diplomatic
+      shop: &poi_filter_shop
+        - alcohol
+        - bakery
+        - beauty
+        - beverages
+        - bicycle
+        - books
+        - butcher
+        - car
+        - chemist
+        - clothes
+        - computer
+        - convenience
+        - department_store
+        - doityourself
+        - dry_cleaning
+        - florist
+        - furniture
+        - garden_centre
+        - general
+        - gift
+        - greengrocer
+        - hairdresser
+        - hardware
+        - jewelry
+        - kiosk
+        - laundry
+        - mall
+        - mobile_phone
+        - newsagent
+        - optician
+        - outdoor
+        - shoes
+        - sports
+        - stationery
+        - supermarket
+        - toys
+        - travel_agency
+        - video
+      tourism: &poi_filter_tourism
+        - artwork
+        - alpine_hut
+        - bed_and_breakfast
+        - camp_site
+        - caravan_site
+        - chalet
+        - guest_house
+        - hostel
+        - hotel
+        - information
+        - motel
+        - picnic_site
+        - theme_park
+        - viewpoint
+        - zoo
+    attributes: &poi_attrs
+     # For the attributes below, we need to include_when, as otherwise
+     # the any-filter above could add variants if contains one matching and one non-matching variant
+    - key: amenity
+      include_when:
+        amenity: *poi_filter_amenity
+    - key: leisure
+      include_when:
+        leisure:  *poi_filter_leisure
+    - key: tourism
+      include_when:
+        tourism:  *poi_filter_tourism
+    - key: shop
+      include_when:
+        shop:  *poi_filter_shop
+    - key: man_made
+      include_when:
+        man_made:  *poi_filter_man_made
+    - key: historic
+      include_when:
+        historic:  *poi_filter_historic
+    - key: emergency
+      include_when:
+        emergency:  *poi_filter_emergency
+    - key: highway
+      include_when:
+        highway:  *poi_filter_highway
+    - key: office
+      include_when:
+        office:  *poi_filter_office
+    - *name
+    - *name_en
+    - *name_de
+    - key: housename
+      tag_value: addr:housename
+    - key: housenumber
+      tag_value: addr:housenumber
+    - key: cuisine
+      include_when:
+        amenity:
+          - restaurant
+          - fast_food
+          - pub
+          - bar
+          - cafe
+    - key: sport
+      include_when:
+        leisure:
+          - pitch
+          - sports_centre
+    - key: vending
+      include_when:
+        amenity: vending_machine
+    - key: information
+      include_when:
+        tourism: information
+    - key: tower:type
+      include_when:
+        man_made: tower
+    - key: religion
+      include_when:
+        amenity: place_of_worship
+    - key: denomination
+      include_when:
+        amenity: place_of_worship
+    - key: recycling:glass_bottles
+      type: boolean
+      value:
+        - if: { "recycling:glass_bottles": yes }
+          value: true
+        - else: false
+      include_when:
+        amenity: recycling
+    - key: recycling:paper
+      type: boolean
+      value:
+        - if: { "recycling:paper": yes }
+          value: true
+        - else: false
+      include_when:
+        amenity: recycling
+    - key: recycling:clothes
+      type: boolean
+      value:
+        - if: { "recycling:clothes": yes }
+          value: true
+        - else: false
+      include_when:
+        amenity: recycling
+    - key: recycling:scrap_metal
+      type: boolean
+      value:
+        - if: { "recycling:scrap_metal": yes }
+          value: true
+        - else: false
+      include_when:
+        amenity: recycling
+    - key: atm
+      type: boolean
+      value:
+        - if: { atm: yes }
+          value: true
+        - else: false
+      include_when:
+        amenity: bank
+  - source: osm
+    geometry: polygon_point_on_surface
+    min_zoom: 14
+    include_when: *poi_filter
+    attributes: *poi_attrs
+
 - id: public_transport
   features:
   - source: osm


Reviews:
user: login: CommanderStorm
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T01:05:35Z
user: login: msbarry
body: Looks great! One minor suggestion on the recycling tags. Thanks for helping with these improvements!
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T09:29:55Z
user: login: CommanderStorm
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T13:33:05Z
user: login: CommanderStorm
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T13:36:33Z

Review comments:
diff_hunk: @@ -610,6 +610,252 @@ layers:
     - key: kind
       type: match_value
 
+- id: pois
+  features:
+  - source: osm
+    geometry: point
+    min_zoom: 14
+    include_when: &poi_filter
+      amenity: &poi_filter_amenity
+        - arts_centre
+        - atm
+        - bank
+        - bar
+        - bench
+        - bicycle_rental
+        - biergarten
+        - cafe
+        - car_rental
+        - car_sharing
+        - car_wash
+        - cinema
+        - clinic
+        - college
+        - community_centre
+        - courthouse
+        - dentist
+        - doctors
+        - dog_park
+        - drinking_water
+        - embassy
+        - fast_food
+        - fire_station
+        - food_court
+        - fountain
+        - grave_yard
+        - hospital
+        - hunting_stand
+        - library
+        - marketplace
+        - nightclub
+        - nursing_home
+        - pharmacy
+        - place_of_worship
+        - playground
+        - police
+        - post_box
+        - post_office
+        - prison
+        - pub
+        - public_building
+        - recycling
+        - restaurant
+        - school
+        - shelter
+        - telephone
+        - theatre
+        - toilets
+        - townhall
+        - university
+        - vending_machine
+        - veterinary
+        - waste_basket
+      emergency: &poi_filter_emergency
+        - defibrillator
+        - fire_hydrant
+        - phone
+      highway: &poi_filter_highway
+        - emergency_access_point
+      historic: &poi_filter_historic
+        - archaeological_site
+        - battlefield
+        - castle
+        - fort
+        - memorial
+        - monument
+        - ruins
+        - wayside_cross
+        - wayside_shrine
+      leisure: &poi_filter_leisure
+        - golf_course
+        - ice_rink
+        - pitch
+        - sports_centre
+        - stadium
+        - swimming_pool
+        - water_park
+      man_made: &poi_filter_man_made
+        - lighthouse
+        - surveillance
+        - tower
+        - wastewater_plant
+        - water_well
+        - water_works
+        - watermill
+        - windmill
+      office: &poi_filter_office
+        - diplomatic
+      shop: &poi_filter_shop
+        - alcohol
+        - bakery
+        - beauty
+        - beverages
+        - bicycle
+        - books
+        - butcher
+        - car
+        - chemist
+        - clothes
+        - computer
+        - convenience
+        - department_store
+        - doityourself
+        - dry_cleaning
+        - florist
+        - furniture
+        - garden_centre
+        - general
+        - gift
+        - greengrocer
+        - hairdresser
+        - hardware
+        - jewelry
+        - kiosk
+        - laundry
+        - mall
+        - mobile_phone
+        - newsagent
+        - optician
+        - outdoor
+        - shoes
+        - sports
+        - stationery
+        - supermarket
+        - toys
+        - travel_agency
+        - video
+      tourism: &poi_filter_tourism
+        - artwork
+        - alpine_hut
+        - bed_and_breakfast
+        - camp_site
+        - caravan_site
+        - chalet
+        - guest_house
+        - hostel
+        - hotel
+        - information
+        - motel
+        - picnic_site
+        - theme_park
+        - viewpoint
+        - zoo
+    attributes: &poi_attrs
+     # For the attributes below, we need to include_when, as otherwise
+     # the any-filter above could add variants if contains one matching and one non-matching variant
+    - key: amenity
+      include_when:
+        amenity: *poi_filter_amenity
+    - key: leisure
+      include_when:
+        leisure:  *poi_filter_leisure
+    - key: tourism
+      include_when:
+        tourism:  *poi_filter_tourism
+    - key: shop
+      include_when:
+        shop:  *poi_filter_shop
+    - key: man_made
+      include_when:
+        man_made:  *poi_filter_man_made
+    - key: historic
+      include_when:
+        historic:  *poi_filter_historic
+    - key: emergency
+      include_when:
+        emergency:  *poi_filter_emergency
+    - key: highway
+      include_when:
+        highway:  *poi_filter_highway
+    - key: office
+      include_when:
+        office:  *poi_filter_office
+    - *name
+    - *name_en
+    - *name_de
+    - key: housename
+      tag_value: addr:housename
+    - key: housenumber
+      tag_value: addr:housenumber
+    - key: cuisine
+      include_when:
+        amenity:
+          - restaurant
+          - fast_food
+          - pub
+          - bar
+          - cafe
+    - key: sport
+      include_when:
+        leisure:
+          - pitch
+          - sports_centre
+    - key: vending
+      include_when:
+        amenity: vending_machine
+    - key: information
+      include_when:
+        tourism: information
+    - key: tower:type
+      include_when:
+        man_made: tower
+    - key: religion
+      include_when:
+        amenity: place_of_worship
+    - key: denomination
+      include_when:
+        amenity: place_of_worship
+    - key: recycling:glass_bottles
+      type: boolean
+      value: '${ feature.tags["recycling:glass_bottles"] == "yes" }'
path: planetiler-custommap/src/main/resources/samples/shortbread.yml
user: login: CommanderStorm
body: I think this is the best way to express this relationship.
Unsure if there are better ways..

```py
if amenity == recycling:
   return recycling:glass_bottles == yes
return None
```
created_at: 2025-03-19T01:05:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -610,6 +610,252 @@ layers:
     - key: kind
       type: match_value
 
+- id: pois
+  features:
+  - source: osm
+    geometry: point
+    min_zoom: 14
+    include_when: &poi_filter
+      amenity: &poi_filter_amenity
+        - arts_centre
+        - atm
+        - bank
+        - bar
+        - bench
+        - bicycle_rental
+        - biergarten
+        - cafe
+        - car_rental
+        - car_sharing
+        - car_wash
+        - cinema
+        - clinic
+        - college
+        - community_centre
+        - courthouse
+        - dentist
+        - doctors
+        - dog_park
+        - drinking_water
+        - embassy
+        - fast_food
+        - fire_station
+        - food_court
+        - fountain
+        - grave_yard
+        - hospital
+        - hunting_stand
+        - library
+        - marketplace
+        - nightclub
+        - nursing_home
+        - pharmacy
+        - place_of_worship
+        - playground
+        - police
+        - post_box
+        - post_office
+        - prison
+        - pub
+        - public_building
+        - recycling
+        - restaurant
+        - school
+        - shelter
+        - telephone
+        - theatre
+        - toilets
+        - townhall
+        - university
+        - vending_machine
+        - veterinary
+        - waste_basket
+      emergency: &poi_filter_emergency
+        - defibrillator
+        - fire_hydrant
+        - phone
+      highway: &poi_filter_highway
+        - emergency_access_point
+      historic: &poi_filter_historic
+        - archaeological_site
+        - battlefield
+        - castle
+        - fort
+        - memorial
+        - monument
+        - ruins
+        - wayside_cross
+        - wayside_shrine
+      leisure: &poi_filter_leisure
+        - golf_course
+        - ice_rink
+        - pitch
+        - sports_centre
+        - stadium
+        - swimming_pool
+        - water_park
+      man_made: &poi_filter_man_made
+        - lighthouse
+        - surveillance
+        - tower
+        - wastewater_plant
+        - water_well
+        - water_works
+        - watermill
+        - windmill
+      office: &poi_filter_office
+        - diplomatic
+      shop: &poi_filter_shop
+        - alcohol
+        - bakery
+        - beauty
+        - beverages
+        - bicycle
+        - books
+        - butcher
+        - car
+        - chemist
+        - clothes
+        - computer
+        - convenience
+        - department_store
+        - doityourself
+        - dry_cleaning
+        - florist
+        - furniture
+        - garden_centre
+        - general
+        - gift
+        - greengrocer
+        - hairdresser
+        - hardware
+        - jewelry
+        - kiosk
+        - laundry
+        - mall
+        - mobile_phone
+        - newsagent
+        - optician
+        - outdoor
+        - shoes
+        - sports
+        - stationery
+        - supermarket
+        - toys
+        - travel_agency
+        - video
+      tourism: &poi_filter_tourism
+        - artwork
+        - alpine_hut
+        - bed_and_breakfast
+        - camp_site
+        - caravan_site
+        - chalet
+        - guest_house
+        - hostel
+        - hotel
+        - information
+        - motel
+        - picnic_site
+        - theme_park
+        - viewpoint
+        - zoo
+    attributes: &poi_attrs
+     # For the attributes below, we need to include_when, as otherwise
+     # the any-filter above could add variants if contains one matching and one non-matching variant
+    - key: amenity
+      include_when:
+        amenity: *poi_filter_amenity
+    - key: leisure
+      include_when:
+        leisure:  *poi_filter_leisure
+    - key: tourism
+      include_when:
+        tourism:  *poi_filter_tourism
+    - key: shop
+      include_when:
+        shop:  *poi_filter_shop
+    - key: man_made
+      include_when:
+        man_made:  *poi_filter_man_made
+    - key: historic
+      include_when:
+        historic:  *poi_filter_historic
+    - key: emergency
+      include_when:
+        emergency:  *poi_filter_emergency
+    - key: highway
+      include_when:
+        highway:  *poi_filter_highway
+    - key: office
+      include_when:
+        office:  *poi_filter_office
+    - *name
+    - *name_en
+    - *name_de
+    - key: housename
+      tag_value: addr:housename
+    - key: housenumber
+      tag_value: addr:housenumber
+    - key: cuisine
+      include_when:
+        amenity:
+          - restaurant
+          - fast_food
+          - pub
+          - bar
+          - cafe
+    - key: sport
+      include_when:
+        leisure:
+          - pitch
+          - sports_centre
+    - key: vending
+      include_when:
+        amenity: vending_machine
+    - key: information
+      include_when:
+        tourism: information
+    - key: tower:type
+      include_when:
+        man_made: tower
+    - key: religion
+      include_when:
+        amenity: place_of_worship
+    - key: denomination
+      include_when:
+        amenity: place_of_worship
+    - key: recycling:glass_bottles
+      type: boolean
+      value: '${ feature.tags["recycling:glass_bottles"] == "yes" }'
path: planetiler-custommap/src/main/resources/samples/shortbread.yml
user: login: msbarry
body: Alternatively I think you can do:

```yaml
value:
  - if: { amenity: recycling, "recycling:glass_bottles": yes }
    value: true
```

dropping down to the CEL expressions is a slight performance hit compared to yaml-based expressions - although it's probably very minor when you limit evaluation with the include_when expression
created_at: 2025-03-19T09:26:58Z
author_association: CONTRIBUTOR
diff_hunk: @@ -610,6 +610,252 @@ layers:
     - key: kind
       type: match_value
 
+- id: pois
+  features:
+  - source: osm
+    geometry: point
+    min_zoom: 14
+    include_when: &poi_filter
+      amenity: &poi_filter_amenity
+        - arts_centre
+        - atm
+        - bank
+        - bar
+        - bench
+        - bicycle_rental
+        - biergarten
+        - cafe
+        - car_rental
+        - car_sharing
+        - car_wash
+        - cinema
+        - clinic
+        - college
+        - community_centre
+        - courthouse
+        - dentist
+        - doctors
+        - dog_park
+        - drinking_water
+        - embassy
+        - fast_food
+        - fire_station
+        - food_court
+        - fountain
+        - grave_yard
+        - hospital
+        - hunting_stand
+        - library
+        - marketplace
+        - nightclub
+        - nursing_home
+        - pharmacy
+        - place_of_worship
+        - playground
+        - police
+        - post_box
+        - post_office
+        - prison
+        - pub
+        - public_building
+        - recycling
+        - restaurant
+        - school
+        - shelter
+        - telephone
+        - theatre
+        - toilets
+        - townhall
+        - university
+        - vending_machine
+        - veterinary
+        - waste_basket
+      emergency: &poi_filter_emergency
+        - defibrillator
+        - fire_hydrant
+        - phone
+      highway: &poi_filter_highway
+        - emergency_access_point
+      historic: &poi_filter_historic
+        - archaeological_site
+        - battlefield
+        - castle
+        - fort
+        - memorial
+        - monument
+        - ruins
+        - wayside_cross
+        - wayside_shrine
+      leisure: &poi_filter_leisure
+        - golf_course
+        - ice_rink
+        - pitch
+        - sports_centre
+        - stadium
+        - swimming_pool
+        - water_park
+      man_made: &poi_filter_man_made
+        - lighthouse
+        - surveillance
+        - tower
+        - wastewater_plant
+        - water_well
+        - water_works
+        - watermill
+        - windmill
+      office: &poi_filter_office
+        - diplomatic
+      shop: &poi_filter_shop
+        - alcohol
+        - bakery
+        - beauty
+        - beverages
+        - bicycle
+        - books
+        - butcher
+        - car
+        - chemist
+        - clothes
+        - computer
+        - convenience
+        - department_store
+        - doityourself
+        - dry_cleaning
+        - florist
+        - furniture
+        - garden_centre
+        - general
+        - gift
+        - greengrocer
+        - hairdresser
+        - hardware
+        - jewelry
+        - kiosk
+        - laundry
+        - mall
+        - mobile_phone
+        - newsagent
+        - optician
+        - outdoor
+        - shoes
+        - sports
+        - stationery
+        - supermarket
+        - toys
+        - travel_agency
+        - video
+      tourism: &poi_filter_tourism
+        - artwork
+        - alpine_hut
+        - bed_and_breakfast
+        - camp_site
+        - caravan_site
+        - chalet
+        - guest_house
+        - hostel
+        - hotel
+        - information
+        - motel
+        - picnic_site
+        - theme_park
+        - viewpoint
+        - zoo
+    attributes: &poi_attrs
+     # For the attributes below, we need to include_when, as otherwise
+     # the any-filter above could add variants if contains one matching and one non-matching variant
+    - key: amenity
+      include_when:
+        amenity: *poi_filter_amenity
+    - key: leisure
+      include_when:
+        leisure:  *poi_filter_leisure
+    - key: tourism
+      include_when:
+        tourism:  *poi_filter_tourism
+    - key: shop
+      include_when:
+        shop:  *poi_filter_shop
+    - key: man_made
+      include_when:
+        man_made:  *poi_filter_man_made
+    - key: historic
+      include_when:
+        historic:  *poi_filter_historic
+    - key: emergency
+      include_when:
+        emergency:  *poi_filter_emergency
+    - key: highway
+      include_when:
+        highway:  *poi_filter_highway
+    - key: office
+      include_when:
+        office:  *poi_filter_office
+    - *name
+    - *name_en
+    - *name_de
+    - key: housename
+      tag_value: addr:housename
+    - key: housenumber
+      tag_value: addr:housenumber
+    - key: cuisine
+      include_when:
+        amenity:
+          - restaurant
+          - fast_food
+          - pub
+          - bar
+          - cafe
+    - key: sport
+      include_when:
+        leisure:
+          - pitch
+          - sports_centre
+    - key: vending
+      include_when:
+        amenity: vending_machine
+    - key: information
+      include_when:
+        tourism: information
+    - key: tower:type
+      include_when:
+        man_made: tower
+    - key: religion
+      include_when:
+        amenity: place_of_worship
+    - key: denomination
+      include_when:
+        amenity: place_of_worship
+    - key: recycling:glass_bottles
+      type: boolean
+      value: '${ feature.tags["recycling:glass_bottles"] == "yes" }'
+      include_when:
+        amenity: recycling
+    - key: recycling:paper
+      type: boolean
+      value: '${ feature.tags["recycling:paper"] == "yes" }'
+      include_when:
+        amenity: recycling
+    - key: recycling:clothes
+      type: boolean
+      value: '${ feature.tags["recycling:clothes"] == "yes" }'
+      include_when:
+        amenity: recycling
+    - key: recycling:scrap_metal
+      type: boolean
+      value: '${ feature.tags["recycling:scrap_metal"] == "yes" }'
+      include_when:
+        amenity: recycling
+    - key: atm
+      type: boolean
+      value: '${ feature.tags.atm == "yes" }'
+      include_when:
+        amenity: bank
path: planetiler-custommap/src/main/resources/samples/shortbread.yml
user: login: CommanderStorm
body: this should work and be in the more performant strucutural pattern matching style.
I still have the `include_when`, as the fields should be not present for anything which is not a bank.

```suggestion
    - key: recycling:glass_bottles
      type: boolean
      value:
        - if: { "recycling:glass_bottles": yes }
          value: true
        - else: false
      include_when:
        amenity: recycling
    - key: recycling:paper
      type: boolean
      value:
        - if: { "recycling:paper": yes }
          value: true
        - else: false
      include_when:
        amenity: recycling
    - key: recycling:clothes
      type: boolean
      value:
        - if: { "recycling:clothes": yes }
          value: true
        - else: false
      include_when:
        amenity: recycling
    - key: recycling:scrap_metal
      type: boolean
      value:
        - if: { "recycling:scrap_metal": yes }
          value: true
        - else: false
      include_when:
        amenity: recycling
    - key: atm
      type: boolean
      value:
        - if: { atm: yes }
          value: true
        - else: false
      include_when:
        amenity: bank
```
created_at: 2025-03-19T13:33:05Z
author_association: CONTRIBUTOR
diff_hunk: @@ -610,6 +610,252 @@ layers:
     - key: kind
       type: match_value
 
+- id: pois
+  features:
+  - source: osm
+    geometry: point
+    min_zoom: 14
+    include_when: &poi_filter
+      amenity: &poi_filter_amenity
+        - arts_centre
+        - atm
+        - bank
+        - bar
+        - bench
+        - bicycle_rental
+        - biergarten
+        - cafe
+        - car_rental
+        - car_sharing
+        - car_wash
+        - cinema
+        - clinic
+        - college
+        - community_centre
+        - courthouse
+        - dentist
+        - doctors
+        - dog_park
+        - drinking_water
+        - embassy
+        - fast_food
+        - fire_station
+        - food_court
+        - fountain
+        - grave_yard
+        - hospital
+        - hunting_stand
+        - library
+        - marketplace
+        - nightclub
+        - nursing_home
+        - pharmacy
+        - place_of_worship
+        - playground
+        - police
+        - post_box
+        - post_office
+        - prison
+        - pub
+        - public_building
+        - recycling
+        - restaurant
+        - school
+        - shelter
+        - telephone
+        - theatre
+        - toilets
+        - townhall
+        - university
+        - vending_machine
+        - veterinary
+        - waste_basket
+      emergency: &poi_filter_emergency
+        - defibrillator
+        - fire_hydrant
+        - phone
+      highway: &poi_filter_highway
+        - emergency_access_point
+      historic: &poi_filter_historic
+        - archaeological_site
+        - battlefield
+        - castle
+        - fort
+        - memorial
+        - monument
+        - ruins
+        - wayside_cross
+        - wayside_shrine
+      leisure: &poi_filter_leisure
+        - golf_course
+        - ice_rink
+        - pitch
+        - sports_centre
+        - stadium
+        - swimming_pool
+        - water_park
+      man_made: &poi_filter_man_made
+        - lighthouse
+        - surveillance
+        - tower
+        - wastewater_plant
+        - water_well
+        - water_works
+        - watermill
+        - windmill
+      office: &poi_filter_office
+        - diplomatic
+      shop: &poi_filter_shop
+        - alcohol
+        - bakery
+        - beauty
+        - beverages
+        - bicycle
+        - books
+        - butcher
+        - car
+        - chemist
+        - clothes
+        - computer
+        - convenience
+        - department_store
+        - doityourself
+        - dry_cleaning
+        - florist
+        - furniture
+        - garden_centre
+        - general
+        - gift
+        - greengrocer
+        - hairdresser
+        - hardware
+        - jewelry
+        - kiosk
+        - laundry
+        - mall
+        - mobile_phone
+        - newsagent
+        - optician
+        - outdoor
+        - shoes
+        - sports
+        - stationery
+        - supermarket
+        - toys
+        - travel_agency
+        - video
+      tourism: &poi_filter_tourism
+        - artwork
+        - alpine_hut
+        - bed_and_breakfast
+        - camp_site
+        - caravan_site
+        - chalet
+        - guest_house
+        - hostel
+        - hotel
+        - information
+        - motel
+        - picnic_site
+        - theme_park
+        - viewpoint
+        - zoo
+    attributes: &poi_attrs
+     # For the attributes below, we need to include_when, as otherwise
+     # the any-filter above could add variants if contains one matching and one non-matching variant
+    - key: amenity
+      include_when:
+        amenity: *poi_filter_amenity
+    - key: leisure
+      include_when:
+        leisure:  *poi_filter_leisure
+    - key: tourism
+      include_when:
+        tourism:  *poi_filter_tourism
+    - key: shop
+      include_when:
+        shop:  *poi_filter_shop
+    - key: man_made
+      include_when:
+        man_made:  *poi_filter_man_made
+    - key: historic
+      include_when:
+        historic:  *poi_filter_historic
+    - key: emergency
+      include_when:
+        emergency:  *poi_filter_emergency
+    - key: highway
+      include_when:
+        highway:  *poi_filter_highway
+    - key: office
+      include_when:
+        office:  *poi_filter_office
+    - *name
+    - *name_en
+    - *name_de
+    - key: housename
+      tag_value: addr:housename
+    - key: housenumber
+      tag_value: addr:housenumber
+    - key: cuisine
+      include_when:
+        amenity:
+          - restaurant
+          - fast_food
+          - pub
+          - bar
+          - cafe
+    - key: sport
+      include_when:
+        leisure:
+          - pitch
+          - sports_centre
+    - key: vending
+      include_when:
+        amenity: vending_machine
+    - key: information
+      include_when:
+        tourism: information
+    - key: tower:type
+      include_when:
+        man_made: tower
+    - key: religion
+      include_when:
+        amenity: place_of_worship
+    - key: denomination
+      include_when:
+        amenity: place_of_worship
+    - key: recycling:glass_bottles
+      type: boolean
+      value: '${ feature.tags["recycling:glass_bottles"] == "yes" }'
path: planetiler-custommap/src/main/resources/samples/shortbread.yml
user: login: CommanderStorm
body: good point, did not think of combinding this in this way.
=> https://github.com/onthegomap/planetiler/pull/1207#discussion_r2003342519

We cannot remove the `include_when`, as above would only be
```py
if amenity == recycling and recycling:glass_bottles == yes
    return True
None
created_at: 2025-03-19T13:36:33Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-19T01:04:08Z
body: <table>
<thead>
<tr>
<th>This Branch 9707efd0540b9aca3eb0fdfc991fdc5be5dad579</th>
<th>Base 835a1c0a4e446f99e7ea677fddfb9f39e886d9a2</th>
</tr>
</thead>
<tr>
<td>

```
0:01:07 DEB [archive] - Tile stats:
0:01:07 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (157k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:86k)
2. 9/154/190 (144k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (135k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:71k)
5. 14/4941/6092 (113k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:65k)
6. 14/4941/6093 (112k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 14/4940/6092 (101k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
8. 11/616/762 (98k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
9. 14/4942/6091 (96k) 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:07 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  151   336   409   544   872   332   437   552   802  1.6k    2k  6.9k  6.2k  5.6k  4.5k  6.9k
              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.8k  3.4k  1.7k   803   948  5.8k
            landuse    0     0     0     0   549   695  1.6k  6.7k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   313   776  1.2k    4k  5.6k   17k   13k   17k   63k   47k   33k   63k
           waterway    0     0     0     0   112   119     0     0     0    3k  2.3k    2k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0  1.3k  4.3k  9.7k   18k   13k  8.2k  3.7k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   287   364  1.1k  1.9k  5.5k  4.7k  3.9k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.9k   29k   85k   71k   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   568   565   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.4k  3.7k    6k   20k   41k   82k  195k  181k  134k  113k  128k  247k  247k
            gzipped 6.2k  3.5k  7.1k  5.2k  3.1k  4.8k   14k   29k   59k  144k  136k   98k   83k   92k  157k  157k
0:01:07 DEB [archive] -    Max tile: 247k (gzipped: 157k)
0:01:07 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:07 DEB [archive] -     # tiles: 4,115,040
0:01:07 DEB [archive] -  # features: 5,550,458
0:01:07 INF [archive] - Finished in 20s cpu:1m12s avg:3.7
0:01:07 INF [archive] -   read    1x(3% 0.6s wait:18s done:1s)
0:01:07 INF [archive] -   encode  4x(56% 11s wait:2s done:1s)
0:01:07 INF [archive] -   write   1x(22% 4s wait:13s)
0:01:07 INF [archive] - Finished in 1m8s cpu:3m40s gc:1s avg:3.2
0:01:07 INF [archive] - FINISHED!
0:01:07 INF [archive] - 
0:01:07 INF [archive] - ----------------------------------------
0:01:07 INF [archive] - data errors:
0:01:07 INF [archive] - 	render_snap_fix_input	16,762
0:01:07 INF [archive] - 	osm_multipolygon_missing_way	360
0:01:07 INF [archive] - 	osm_boundary_missing_way	55
0:01:07 INF [archive] - 	merge_snap_fix_input	13
0:01:07 INF [archive] - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:07 INF [archive] - 	render_snap_fix_input2	1
0:01:07 INF [archive] - 	omt_fix_water_before_ne_intersect	1
0:01:07 INF [archive] - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	1
0:01:07 INF [archive] - 	feature_point_on_surface_osm_invalid_multipolygon_empty_after_fix	1
0:01:07 INF [archive] - ----------------------------------------
0:01:07 INF [archive] - 	overall          1m8s cpu:3m40s gc:1s avg:3.2
0:01:07 INF [archive] - 	lake_centerlines 3s cpu:6s avg:1.8
0:01:07 INF [archive] - 	  read     1x(14% 0.5s done:3s)
0:01:07 INF [archive] - 	  process  4x(0% 0s done:3s)
0:01:07 INF [archive] - 	  write    1x(0% 0s done:3s)
0:01:07 INF [archive] - 	water_polygons   15s cpu:40s avg:2.7
0:01:07 INF [archive] - 	  read     1x(41% 6s done:7s)
0:01:07 INF [archive] - 	  process  4x(27% 4s wait:4s done:5s)
0:01:07 INF [archive] - 	  write    1x(4% 0.5s wait:9s done:5s)
0:01:07 INF [archive] - 	natural_earth    6s cpu:13s avg:2
0:01:07 INF [archive] - 	  read     1x(96% 6s)
0:01:07 INF [archive] - 	  process  4x(13% 0.8s wait:6s)
0:01:07 INF [archive] - 	  write    1x(0% 0s wait:6s)
0:01:07 INF [archive] - 	osm_pass1        2s cpu:6s avg:3.3
0:01:07 INF [archive] - 	  read     1x(2% 0s wait:2s)
0:01:07 INF [archive] - 	  parse    4x(35% 0.7s)
0:01:07 INF [archive] - 	  process  1x(69% 1s)
0:01:07 INF [archive] - 	osm_pass2        20s cpu:1m17s avg:3.9
0:01:07 INF [archive] - 	  read     1x(0% 0s wait:12s done:7s)
0:01:07 INF [archive] - 	  process  4x(75% 15s)
0:01:07 INF [archive] - 	  write    1x(2% 0.4s wait:19s)
0:01:07 INF [archive] - 	ne_lakes         0s cpu:0s avg:0
0:01:07 INF [archive] - 	boundaries       0s cpu:0s avg:2.4
0:01:07 INF [archive] - 	agg_stop         0s cpu:0s avg:0
0:01:07 INF [archive] - 	sort             1s cpu:4s avg:2.6
0:01:07 INF [archive] - 	  worker  1x(49% 0.7s)
0:01:07 INF [archive] - 	archive          20s cpu:1m12s avg:3.7
0:01:07 INF [archive] - 	  read    1x(3% 0.6s wait:18s done:1s)
0:01:07 INF [archive] - 	  encode  4x(56% 11s wait:2s done:1s)
0:01:07 INF [archive] - 	  write   1x(22% 4s wait:13s)
0:01:07 INF [archive] - ----------------------------------------
0:01:07 INF [archive] - 	archive	107MB
0:01:07 INF [archive] - 	features	285MB
-rw-r--r-- 1 runner docker 87M Mar 19 13:35 run.jar
```
</td>
<td>

```
0:01:05 DEB [archive] - Tile stats:
0:01:05 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (157k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:86k)
2. 9/154/190 (144k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (135k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:71k)
5. 14/4941/6092 (113k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:65k)
6. 14/4941/6093 (112k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 14/4940/6092 (101k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
8. 11/616/762 (98k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
9. 14/4942/6091 (96k) 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:05 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  151   336   409   544   872   332   437   552   802  1.6k    2k  6.9k  6.2k  5.6k  4.5k  6.9k
              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.8k  3.4k  1.7k   803   948  5.8k
            landuse    0     0     0     0   549   695  1.6k  6.7k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   313   776  1.2k    4k  5.6k   17k   13k   17k   63k   47k   33k   63k
           waterway    0     0     0     0   112   119     0     0     0    3k  2.3k    2k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0  1.3k  4.3k  9.7k   18k   13k  8.2k  3.7k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   287   364  1.1k  1.9k  5.5k  4.7k  3.9k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.9k   29k   85k   71k   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   568   565   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.4k  3.7k    6k   20k   41k   82k  195k  181k  134k  113k  128k  247k  247k
            gzipped 6.2k  3.5k  7.1k  5.2k  3.1k  4.8k   14k   29k   59k  144k  136k   98k   83k   92k  157k  157k
0:01:05 DEB [archive] -    Max tile: 247k (gzipped: 157k)
0:01:05 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:05 DEB [archive] -     # tiles: 4,115,040
0:01:05 DEB [archive] -  # features: 5,550,458
0:01:05 INF [archive] - Finished in 20s cpu:1m14s avg:3.7
0:01:05 INF [archive] -   read    1x(3% 0.5s wait:18s done:1s)
0:01:05 INF [archive] -   encode  4x(55% 11s wait:2s done:1s)
0:01:05 INF [archive] -   write   1x(21% 4s wait:13s done:1s)
0:01:05 INF [archive] - Finished in 1m6s cpu:3m36s avg:3.3
0:01:05 INF [archive] - FINISHED!
0:01:05 INF [archive] - 
0:01:05 INF [archive] - ----------------------------------------
0:01:05 INF [archive] - data errors:
0:01:05 INF [archive] - 	render_snap_fix_input	16,762
0:01:05 INF [archive] - 	osm_multipolygon_missing_way	360
0:01:05 INF [archive] - 	osm_boundary_missing_way	55
0:01:05 INF [archive] - 	merge_snap_fix_input	13
0:01:05 INF [archive] - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:05 INF [archive] - 	render_snap_fix_input2	1
0:01:05 INF [archive] - 	omt_fix_water_before_ne_intersect	1
0:01:05 INF [archive] - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	1
0:01:05 INF [archive] - 	feature_point_on_surface_osm_invalid_multipolygon_empty_after_fix	1
0:01:05 INF [archive] - ----------------------------------------
0:01:05 INF [archive] - 	overall          1m6s cpu:3m36s avg:3.3
0:01:05 INF [archive] - 	lake_centerlines 2s cpu:5s avg:2.5
0:01:05 INF [archive] - 	  read     1x(22% 0.5s done:2s)
0:01:05 INF [archive] - 	  process  4x(0% 0s done:2s)
0:01:05 INF [archive] - 	  write    1x(0% 0s done:2s)
0:01:05 INF [archive] - 	water_polygons   14s cpu:39s avg:2.7
0:01:05 INF [archive] - 	  read     1x(42% 6s done:7s)
0:01:05 INF [archive] - 	  process  4x(27% 4s wait:4s done:5s)
0:01:05 INF [archive] - 	  write    1x(4% 0.5s wait:9s done:5s)
0:01:05 INF [archive] - 	natural_earth    6s cpu:13s avg:2
0:01:05 INF [archive] - 	  read     1x(96% 6s)
0:01:05 INF [archive] - 	  process  4x(13% 0.8s wait:6s)
0:01:05 INF [archive] - 	  write    1x(0% 0s wait:6s)
0:01:05 INF [archive] - 	osm_pass1        2s cpu:6s avg:3.2
0:01:05 INF [archive] - 	  read     1x(2% 0s wait:2s)
0:01:05 INF [archive] - 	  parse    4x(32% 0.6s)
0:01:05 INF [archive] - 	  process  1x(73% 1s)
0:01:05 INF [archive] - 	osm_pass2        19s cpu:1m13s avg:3.9
0:01:05 INF [archive] - 	  read     1x(0% 0s wait:11s done:7s)
0:01:05 INF [archive] - 	  process  4x(77% 14s)
0:01:05 INF [archive] - 	  write    1x(2% 0.4s wait:18s)
0:01:05 INF [archive] - 	ne_lakes         0s cpu:0s avg:0
0:01:05 INF [archive] - 	boundaries       0s cpu:0s avg:2.8
0:01:05 INF [archive] - 	agg_stop         0s cpu:0s avg:0
0:01:05 INF [archive] - 	sort             1s cpu:4s avg:2.7
0:01:05 INF [archive] - 	  worker  1x(49% 0.7s)
0:01:05 INF [archive] - 	archive          20s cpu:1m14s avg:3.7
0:01:05 INF [archive] - 	  read    1x(3% 0.5s wait:18s done:1s)
0:01:05 INF [archive] - 	  encode  4x(55% 11s wait:2s done:1s)
0:01:05 INF [archive] - 	  write   1x(21% 4s wait:13s done:1s)
0:01:05 INF [archive] - ----------------------------------------
0:01:05 INF [archive] - 	archive	107MB
0:01:05 INF [archive] - 	features	285MB
-rw-r--r-- 1 runner docker 87M Mar 19 13:37 run.jar
```
</td>
</tr>
</table>

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

<!-- Sticky Pull Request Commentperformance-tests -->
author_association: NONE
user: login: sonarqubecloud[bot]
created_at: 2025-03-19T13:38:19Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=onthegomap_planetiler&pullRequest=1207) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=onthegomap_planetiler&pullRequest=1207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=onthegomap_planetiler&pullRequest=1207&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=onthegomap_planetiler&pullRequest=1207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=onthegomap_planetiler&pullRequest=1207&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=onthegomap_planetiler&pullRequest=1207&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=onthegomap_planetiler&pullRequest=1207)


author_association: NONE