From 2acd6c910a41abf381c945b4f4d0438d36eeebd8 Mon Sep 17 00:00:00 2001 From: Nathan Hartley <nathan@7hartleys.org> Date: Tue, 10 Jan 2023 03:19:42 -0500 Subject: [PATCH] Added paddling categories. --- paddling.yaml | 5 ++ paddling_amenities.yaml | 99 ++++++++++++++++++++++++++++++++++++++ paddling_hazards.yaml | 75 +++++++++++++++++++++++++++++ paddling_routes.yaml | 102 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 281 insertions(+) create mode 100644 paddling.yaml create mode 100644 paddling_amenities.yaml create mode 100644 paddling_hazards.yaml create mode 100644 paddling_routes.yaml diff --git a/paddling.yaml b/paddling.yaml new file mode 100644 index 0000000..27db952 --- /dev/null +++ b/paddling.yaml @@ -0,0 +1,5 @@ +type: index +subCategories: + - id: paddling_amenities + - id: paddling_hazards + - id: paddling_routes diff --git a/paddling_amenities.yaml b/paddling_amenities.yaml new file mode 100644 index 0000000..2c3ef2a --- /dev/null +++ b/paddling_amenities.yaml @@ -0,0 +1,99 @@ +type: overpass +name: + en: Paddling Amenities +query: + '14': |- + ( + node["canoe"="put_in"]; + node["leisure"="slipway"]; + way["canoe"="portage"]; + nwr[shop~"^(boat)$"]["boat:type"~"^(.*;|)canoe|kayak|standup_paddleboard|dinghy|pedalboat(|;.*)$"]; + nwr[rental~"^(boat)$"]["boat:type"~"^(.*;|)canoe|kayak|standup_paddleboard|dinghy|pedalboat(|;.*)$"]; + nwr["canoe_rental"="yes"]; + nwr["kayak_rental"="yes"]; + nwr["standup_paddleboard_rental"="yes"]; + nwr["dinghy_rental"="yes"]; + nwr["pedalboat_rental"="yes"]; + ) +feature: + pre: |- + {% if tags.canoe %} + {% set key = 'canoe' %} + {% set value = tags.canoe %} + {% elseif tags.leisure %} + {% set key = 'leisure' %} + {% set value = tags.leisure %} + {% elseif tags.shop %} + {% set key = 'shop' %} + {% set value = tags.shop %} + {% elseif tags.rental or tags.canoe_rental or tags.kayak_rental or tags.standup_paddleboard_rental or tags.dingy_rental or tags.pedalboat_rental %} + {% set key = 'shop' %} + {% set value = 'rental' %} + {% endif %} + + {% set constIndex = (key ~ "=" ~ value) %} + {% set item = const[constIndex] %} + + title: | + {{ localizedTag(tags, 'name') }} + {% if attribute(tags, 'ref') %} + ( {{ localizedTag(tags, 'ref') }} ) + {% endif %} + description: | + {{ tagTrans(key, value) }} + body: |- + {% if constIndex in ['canoe=put_in', 'leisure=slipway','canoe=portage'] %} + <dl> + <dt>{{ keyTrans('Description') }}</dt> + <dd>{{ localizedTag(tags, 'description') }}</dd> + + <dt>{{ keyTrans('Surface') }}</dt> + <dd>{{ attribute(tags, 'surface') ? tagTrans('surface', attribute(tags, 'surface')) : '' }}</dd> + + <dt>{{ keyTrans('Operator') }}</dt> + <dd>{{ attribute(tags, 'operator') ? tagTrans('operator', attribute(tags, 'operator')) : '' }}</dd> + + <dt>{{ keyTrans('Access') }}</dt> + <dd>{{ attribute(tags, 'access') ? tagTrans('access', attribute(tags, 'access')) : '' }}</dd> + + <dt>{{ keyTrans('Fee') }}</dt> + <dd>{{ attribute(tags, 'fee') ? tagTrans('fee', attribute(tags, 'fee')) : '' }}</dd> + + <dt>{{ keyTrans('Wheelchair') }}</dt> + <dd>{{ attribute(tags, 'wheelchair') ? tagTrans('wheelchair', attribute(tags, 'wheelchair')) : '' }}</dd> + + <dt>{{ trans('Photos') }}</dt> + <dd> + <ul> + {% if attribute(tags, 'mapillary') %} + <li><a href="https://www.mapillary.com/app/?focus=photo&pKey={{ attribute(tags, 'mapillary') }}" rel="noreferrer" target="_blank">Mapillary</a></li> + {% endif %} + </ul> + </dd> + </dl> + {% endif %} + markerSign: '{{ item[''sign''] }}' + + priority: |- + {% if item is defined %} + {{ item['priority'] }} + {% else %} + 10 + {% endif %} + +const: + canoe=put_in: + sign: πΆ + priority: 0 + leisure=slipway: + sign: π£π» + priority: 1 + canoe=portage: + sign: πΆπ» + priority: 2 + shop=boat: + sign: π + priority: 3 + shop=rental: + sign: π + priority: 3 \ No newline at end of file diff --git a/paddling_hazards.yaml b/paddling_hazards.yaml new file mode 100644 index 0000000..2b21c73 --- /dev/null +++ b/paddling_hazards.yaml @@ -0,0 +1,75 @@ +type: overpass +name: + en: Paddling Hazards +query: + '13': |- + ( + nwr[waterway~"^(dam|weir|waterfall|rapids|lock|lock_gate|sluice_gate)$"]; + ) +feature: + pre: |- + {% if tags.waterway %} + {% set key = 'waterway' %} + {% set value = tags.waterway %} + {% endif %} + + {% set constIndex = (key ~ "=" ~ value) %} + {% set item = const[constIndex] %} + + title: | + {{ item['sign'] }} {{ localizedTag(tags, 'name') | default(localizedTag(tags, 'key')) | default(localizedTag(tags, 'ref')) }} + description: | + {{ tagTrans(key, value) }} + body: |- + <dl> + <dt>{{ keyTrans('Description') }}</dt> + <dd>{{ localizedTag(tags, 'description') }}</dd> + + {% if attribute(tags, 'operator') %} + <dt>{{ keyTrans('Operator') }}</dt> + <dd>{{ attribute(tags, 'operator') ? tagTrans('operator', attribute(tags, 'operator')) : '' }}</dd> + {% endif %} + + <dt>{{ trans('Photos') }}</dt> + <dd> + <ul> + {% if attribute(tags, 'mapillary') %} + <li><a href="https://www.mapillary.com/app/?focus=photo&pKey={{ attribute(tags, 'mapillary') }}" rel="noreferrer" target="_blank">Mapillary</a></li> + {% endif %} + </ul> + </dd> + + </dl> + + markerSign: 'β οΈ' + + priority: |- + {% if const[constIndex] is defined %} + {{ const[constIndex]['priority'] }} + {% else %} + 10 + {% endif %} + +const: + waterway=dam: + sign: 'π¦«' + priority: 0 + waterway=weir: + sign: 'π¦«' + priority: 0 + waterway=waterfall: + sign: 'π' + priority: 0 + waterway=rapids: + sign: 'π' + priority: 0 + waterway=lock: + sign: 'πͺ' + priority: 1 + waterway=lock_gate: + sign: 'πͺ' + priority: 1 + waterway=sluice_gate: + sign: 'π¦«' + priority: 0 + diff --git a/paddling_routes.yaml b/paddling_routes.yaml new file mode 100644 index 0000000..2d61e26 --- /dev/null +++ b/paddling_routes.yaml @@ -0,0 +1,102 @@ +type: overpass +name: + en: Paddling Routes +query: + '4': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn)(|;.*)$'] + '6': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn)(|;.*)$'] + '8': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn|rpn)(|;.*)$'] + '10': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn|rpn|lpn)(|;.*)$'] + '13': (relation[type=route][route~"^(|.*;)canoe(|;.*)$"] +members: true +feature: + pre: |- + {% set network = tags.network %} + {% for n in tags.network|split(';') %} + {% if n|matches('pn$') %}{% set network = n %}{% endif %} + {% endfor %} + priority: '{{ const[network].priority|default(4) }}' + description: '{% if network %}{{ tagTrans(''network'', network) }}{% endif %}' + listMarkerSymbol: '{{ markerLine({ ''width'': 4, ''color'': const[network|default('''')].color|default(const[''''].color) })|raw }}' + title: '{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}' + styles: '' + markerSymbol: '' +memberFeature: + pre: |- + {% set priority = 4 %} + {% set network = '' %} + {% set refs = [] %} + + {% for master in masters %} + {% set masterNetwork = '' %} + {% for n in master.tags.network|split(';') %} + {% if n|matches('pn$') %}{% set masterNetwork = n %}{% endif %} + {% endfor %} + {% set _p = const[masterNetwork].priority|default(4) %} + {% if _p < priority %} + {% set priority = _p %} + {% set network = masterNetwork %} + {% endif %} + {% if master.tags.ref %} + {% set refs = refs|merge([ master.tags.ref ]) %} + {% endif %} + {% endfor %} + body: |- + <h4>Routes</h4> + <ul class='overpass-layer-list'> + {% for master in masters %} + {% set masterNetwork = '' %} + {% for n in master.tags.network|split(';') %} + {% if n|matches('pn$') %}{% set masterNetwork = n %}{% endif %} + {% endfor %} + <li data-object="{{ master.id }}"><a> + <div class='marker'> + <div class='symbol'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div> + </div> + <div class='content'> + <div class='description'>{{ tagTrans('network', masterNetwork) }}</div> + <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% endif %}</div> + </div> + </a></li> + {% endfor %} + </ul> + listExclude: '1' + style: + color: '{{ const[network].color }}' + width: 4 + opacity: 1 + text: '{{ refs|join('' Β· '') }} ' + textRepeat: '1' + textOffset: '12' + textFontWeight: bold +const: + ipn: + color: '#ff0000' + priority: 0 + zoom: 10 + npn: + color: '#ff00ba' + priority: 1 + zoom: 11 + rpn: + color: '#ba00ff' + priority: 2 + zoom: 12 + lpn: + color: '#0000ff' + priority: 3 + zoom: 14 + '': + color: '#007fff' + priority: 4 + zoom: 14 +info: |- + <table> + {% for value, data in const %} + {% if data.zoom <= map.zoom %} + <tr> + <td>{{ markerLine({ 'width': 4, color: data.color })|raw }}</td> + <td>{% if value %}{{ tagTrans('network', value) }}{% else %}{{ trans('unknown') }}{% endif %}</td> + </tr> + {% endif %} + {% endfor %} + </table>