From e3528075f7b7ae046b52e31a65a1ab5df0d292bb Mon Sep 17 00:00:00 2001 From: scarapella Date: Sun, 21 Dec 2025 09:36:23 -0500 Subject: [PATCH] Adding wild ice skating amenities/trails to the outdoors category including * places to access skating (slipways or waterway access points where ice_skates=*) * ice skating trails (piste:type=ice_skate or waterways with ice_skates=*) * kluning trails (highways with ice_skates=kluning or kluning=*) Non-wild venues (e.g. ice rinks) are ignored as they are well covered already under leisure and/or sport categories. --- ice_skating.yaml | 209 +++++++++++++++++++++++++++++++++++++++++++++++ outdoor.json | 3 + 2 files changed, 212 insertions(+) create mode 100644 ice_skating.yaml diff --git a/ice_skating.yaml b/ice_skating.yaml new file mode 100644 index 0000000..4b10ad2 --- /dev/null +++ b/ice_skating.yaml @@ -0,0 +1,209 @@ +name: + ca: Patinatge sobre gel + cs: Bruslení + de: Eislaufen + en: Ice Skating + es: Patinaje sobre hielo + fr: Patinage sur glace + gl: Patinaxe sobre xeo + hu: Korcsolyázás + it: Pattinaggio sul ghiaccio + ja: アイススケート + nb: Skøyter + nl: Schaatsen + oc: Patinatge sus glaç + pl: Łyżwiarstwo + pt: Patinagem no gelo + pt-br: Patinação no gelo + ro: Patinaj pe gheață + ru: Катание на коньках + sr: Клизање + tr: Buz pateni +type: overpass +query: + # Ice rinks are intentionally excluded here as they are covered already by leisure.json and/or sport.json + # TODO: add ice skating relations when there is more than one in the world + '10': |- + ( + way["piste:type"="ice_skate"]; + way[waterway][ice_skates][ice_skates!=kluning]; + + node[leisure=slipway][ice_skates]; + node[waterway=access_point][ice_skates]; + + way[highway][ice_skates=kluning]; + way[highway][kluning]; + ) +feature: + pre: |- + {% if attribute(tags, 'piste:type') == 'ice_skate' %} + {% set key = 'piste:type' %} + {% set value = 'ice_skate' %} + {% elseif type == 'way' and tags.waterway and tags.waterway != 'access_point' and tags.ice_skates %} + {% set key = 'piste:type' %} + {% set value = 'ice_skate' %} + {% elseif type == 'way' and tags.highway and tags.ice_skates == 'kluning' %} + {% set key = 'ice_skates' %} + {% set value = 'kluning' %} + {% elseif type == 'way' and tags.highway and tags.kluning %} + {% set key = 'ice_skates' %} + {% set value = 'kluning' %} + {% elseif tags.waterway == 'access_point' and tags.ice_skates %} + {% set key = 'waterway' %} + {% set value = 'access_point' %} + {% elseif tags.leisure == 'slipway' and tags.ice_skates %} + {% set key = 'leisure' %} + {% set value = 'slipway' %} + {% endif %} + + {% set constIndex = (key ~ "=" ~ value) %} + {% set item = const[constIndex] %} + + {% if tags.ice_skates and tags.ice_skates in ['no','private','discouraged'] %} + {% set restricted_access_value = tags.ice_skates %} + {% elseif tags.access and tags.access in ['no','private','discouraged'] %} + {% set restricted_access_value = tags.access %} + {% endif %} + title: | + {% if attribute(tags, "piste:name") %} + {{ localizedTag(tags, 'piste:name') }} + {% else %} + {{ localizedTag(tags, 'name') }} + {% endif %} + {% if attribute(tags, 'ref') %} + ( {{ localizedTag(tags, 'ref') }} ) + {% endif %} + listDetails: |- + {%if attribute(tags, 'waterbody:name')%} + {{ localizedTag(tags, 'waterbody:name') }} + {% endif %} + description: | + {{ tagTrans(key, value) }} + body: |- + + markerSign: '{{ item[''sign''] | raw }}' + markerSymbol: |- + {% if item.symbol=='pointer' %} + {% if restricted_access_value %} + {{ markerPointer({ fillColor: '#7F7F7F' }) }} + {% else %} + {{ markerPointer({ fillColor: '#AA99DD' }) }} + {% endif %} + {% endif %} + listMarkerSymbol: |- + {% if item.symbol == 'pointer' %} + {% if restricted_access_value %} + {{ markerCircle({ fillColor: '#7F7F7F' }) }} + {% else %} + {{ markerCircle({ fillColor: '#AA99DD' }) }} + {% endif %} + {% elseif item.symbol == 'polygon' %} + polygon + {% elseif item.symbol == 'line' %} + line + {% endif %} + style: + width: '{{ item.style.width }}' + color: |- + {% if restricted_access_value %} + #7F7F7F + {% else %} + {{ item.style.color }} + {% endif %} + text: |- + {% if item.text %} + {% if attribute(tags, "piste:name") %} + {{ localizedTag(tags, 'piste:name') }} + {% elseif attribute(tags, "name") %} + {{ localizedTag(tags, 'name') }} + {% endif %} + {% endif %} + textRepeat: '1' + lineCap: round + dashArray: |- + {% if restricted_access_value %}5,5{% endif %} + priority: |- + {% if item is defined %} + {{ item['priority'] }} + {% else %} + 10 + {% endif %} +const: + piste:type=ice_skate: + symbol: line + style: + width: 4 + color: '#AA99DD' + text: true + priority: 0 + ice_skates=kluning: #To align better with either typical access restrictions or pistes, this tag should be more like a piste:type=kluning or a highway with access ice_skates=kluning. However ice_skates=kluning is the *documented* tagging for now. + symbol: line + style: + width: 4 + color: '#998888' + text: true + priority: 0 + waterway=access_point: + symbol: pointer + sign: + priority: 0 + leisure=slipway: + symbol: pointer + sign: + priority: 0 + \ No newline at end of file diff --git a/outdoor.json b/outdoor.json index f6d4f67..6d302db 100644 --- a/outdoor.json +++ b/outdoor.json @@ -30,6 +30,9 @@ }, { "id": "paddling" + }, + { + "id": "ice_skating" } ] }