6 Commits

  1. 4
      lang/en.json
  2. 3
      outdoor.json
  3. 5
      paddling.yaml
  4. 104
      paddling_amenities.yaml
  5. 73
      paddling_hazards.yaml
  6. 100
      paddling_routes.yaml

4
lang/en.json

@ -57,6 +57,10 @@
"category:osm-qa": "OpenStreetMap Quality Control",
"category:other": "Other",
"category:outdoor": "Outdoor activities",
"category:paddling": "Paddling",
"category:paddling_amenities": "Paddling Amenities",
"category:paddling_hazards": "Paddling Hazards",
"category:paddling_routes": "Paddling Routes",
"category:phone": "Phone",
"category:places": "Places",
"category:places_geo": "Places",

3
outdoor.json

@ -13,6 +13,9 @@
},
{
"id": "climbing"
},
{
"id": "paddling"
}
]
}

5
paddling.yaml

@ -0,0 +1,5 @@
type: index
subCategories:
- id: paddling_amenities
- id: paddling_hazards
- id: paddling_routes

104
paddling_amenities.yaml

@ -0,0 +1,104 @@
type: overpass
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 == 'portage' and ( not attribute(tags, 'surface') or attribute(tags, 'surface') == 'water' ) %}
{% set key = 'waterway' %}
{% set value = 'portage' %}
{% elseif 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 = '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''] | raw }}'
markerSymbol: |
{% if item['sign'] %}{{ markerPointer({ fillColor: '#FFFFFF' }) }}{% endif %}
listMarkerSymbol: |
{% if item['sign'] %}{{ markerCircle({ fillColor: '#FFFFFF' }) }}{% endif %}
priority: |-
{% if item is defined %}
{{ item['priority'] }}
{% else %}
10
{% endif %}
const:
canoe=portage:
sign: <i class="fas fa-walking"></i>
priority: 2
canoe=put_in:
sign: <i class="fas fa-expand-alt"></i>
priority: 0
leisure=slipway:
sign: <i class="fas fa-ship"></i>
priority: 1
shop=shop:
sign: <i class="fas fa-store-alt"></i>
priority: 3
shop=rental:
sign: <i class="fas fa-store"></i>
priority: 3
waterway=portage:
sign:
priority: 2

73
paddling_hazards.yaml

@ -0,0 +1,73 @@
type: overpass
query:
'12': |-
(
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'] | raw }} {{ 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: <i class="fas fa-exclamation-triangle"></i>
markerSymbol: |
{{ markerPointer({ fillColor: '#ff6700' }) }}
listMarkerSymbol: |
{{ markerCircle({ fillColor: '#ff6700' }) }}
priority: |-
{% if const[constIndex] is defined %}
{{ const[constIndex]['priority'] }}
{% else %}
10
{% endif %}
const:
waterway=dam:
sign: <i class="fas fa-sort-amount-down-alt"></i>
priority: 0
waterway=weir:
sign: <i class="fas fa-sort-amount-up-alt"></i>
priority: 0
waterway=waterfall:
sign: <i class="far fa-chart-bar"></i>
priority: 0
waterway=rapids:
sign: <i class="fas fa-water"></i>
priority: 0
waterway=lock:
sign: <i class="fas fa-lock"></i>
priority: 1
waterway=lock_gate:
sign: <i class="fas fa-torii-gate"></i>
priority: 1
waterway=sluice_gate:
sign: <i class="fas fa-grip-lines"></i>
priority: 0

100
paddling_routes.yaml

@ -0,0 +1,100 @@
type: overpass
query:
'2': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn)(|;.*)$']
'4': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn)(|;.*)$']
'6': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn|rpn)(|;.*)$']
'8': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn|rpn|lpn)(|;.*)$']
'10': (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>
Loading…
Cancel
Save