From bca053c467d050499b2619f01f4587cbeb9758e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Fri, 12 May 2023 16:07:01 +0200 Subject: [PATCH] cycle_route_infrastructure: show infrastructure of cycle routes --- cycle_route_infrastructure.yaml | 205 ++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 cycle_route_infrastructure.yaml diff --git a/cycle_route_infrastructure.yaml b/cycle_route_infrastructure.yaml new file mode 100644 index 0000000..4eede6b --- /dev/null +++ b/cycle_route_infrastructure.yaml @@ -0,0 +1,205 @@ +query: + 10: relation[route=bicycle] +members: true +feature: + markerSymbol: '' + styles: '' +memberFeature: + exclude: | + {% if type == 'relation' %}true{% endif %} + pre: | + {% set type = 'other' %} + {% set lane_left = null %} + {% set lane_right = null %} + {% set segregated = 'xxx' %} + + {% if attribute(tags, 'bicycle_road') == 'yes' or attribute(tags, 'cyclestreet') == 'yes' %} + {% set type = 'bicycle_road' %} + {% elseif tags.highway == 'cycleway' or (tags.highway == 'path' and tags.bicycle == 'designated') %} + {% set type = tags.oneway in ['yes', '1'] ? 'cycleway_oneway' : 'cycleway' %} + {% set segregated = tags.segregated != 'no' %} + {% elseif tags.highway in ['living_street', 'pedestrian'] %} + {% set type = tags.highway %} + {% elseif tags.highway in ['residential', 'service'] %} + {% set type = 'mixed_low' %} + + {% if tags.oneway in ['yes', '1'] %} + {% set type = type ~ '_oneway' %} + {% set lane_left = attribute(tags, 'oneway:bicycle') in ['no'] ? 'opposite_lane' : null %} + {% endif %} + {% elseif tags.highway in ['primary_link', 'primary', 'secondary_link', 'secondary', 'tertiary_link', 'tertiary'] %} + {% set type = 'mixed_high' %} + + {% if tags.oneway in ['yes', '1'] %} + {% set type = type ~ '_oneway' %} + {% set lane_left = attribute(tags, 'oneway:bicycle') in ['no'] ? 'opposite_lane' : null %} + {% endif %} + {% endif %} + + {% if attribute(tags, 'cycleway:right') in ['lane', 'track'] %} + {% set lane_right = attribute(tags, 'cycleway:right') %} + {% set type = null %} + {% endif %} + + {% if attribute(tags, 'cycleway') in ['opposite_lane', 'opposite_track'] %} + {% set lane_left = attribute(tags, 'cycleway') %} + {% endif %} + + {% if attribute(tags, 'cycleway:left') in ['lane', 'track'] %} + {% set lane_left = 'opposite_' ~ attribute(tags, 'cycleway:left') %} + {% elseif attribute(tags, 'cycleway:left') in ['opposite_lane', 'opposite_track'] %} + {% set lane_left = attribute(tags, 'cycleway:left') %} + {% endif %} + + {% set main_style_segregated = {} %} + {% if not segregated %} + {% if const.type[type].dashArray %} + {% set main_style_segregated = { dashArray: '5,5,5,5,5,10', lineCap: 'butt' } %} + {% else %} + {% set main_style_segregated = { dashArray: '5,5', lineCap: 'butt' } %} + {% endif %} + {% endif %} + styles: | + {% set list = type ? ['default'] : [] %} + {% if lane_left %}{% set list = list|merge(['lane_left']) %}{% endif %} + {% if lane_right %}{% set list = list|merge(['lane_right']) %}{% endif %} + {% if not segregated %}{% set list = ['segregated']|merge(list) %}{% endif %} + {{ list|join(',')|debug }} + style: | + {{ const.type[type]|default({})|merge(main_style_segregated)|json_encode|raw }} + style:segregated: + width: 4 + color: '#00000000' + style:lane_right: | + {{ const.lane[lane_right]|default({})|json_encode|raw }} + style:lane_left: | + {{ const.lane[lane_left]|default({})|merge({ offset: const.lane[lane_left].offset * -1, 'pattern-lineOffset': const.lane[lane_left]['pattern-lineOffset'] * -1 })|json_encode|raw }} + body: | + {{ type }}, right: {{ lane_right }}, left: {{ lane_left }}
+ default{{ lane_left ? ',lane_left' : '' }}{{ lane_right ? ',lane_right' : '' }}
+ {{ segregated }}{{ segregated ? 'segregated' : 'not segregated' }}: {{ main_style_segregated|json_encode }} +const: + type: + cycleway: + width: 4 + color: '#007f00' + cycleway_oneway: + width: 2.5 + color: '#007f00' + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-offset: 30.5 + pattern-polygon: true + pattern-pixelSize: 9 + pattern-path-width: 0 + pattern-path-color: '#007f00' + pattern-path-fillOpacity: 1 + pedestrian: + width: 4 + color: '#00ffaf' + living_street: + width: 4 + color: '#00afaf' + bicycle_road: + width: 4 + color: '#00afff' + mixed_low: + width: 4 + color: '#efaf00' + mixed_high: + width: 4 + color: '#ff7f00' + mixed_low_oneway: + width: 4 + color: '#efaf00' + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-offset: 30.5 + pattern-polygon: true + pattern-pixelSize: 12 + pattern-path-width: 0 + pattern-path-color: '#efaf00' + pattern-path-fillOpacity: 1 + mixed_high_oneway: + width: 4 + color: '#ff7f00' + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-offset: 30.5 + pattern-polygon: true + pattern-pixelSize: 12 + pattern-path-width: 0 + pattern-path-color: '#ff7f00' + pattern-path-fillOpacity: 1 + other: + width: 4 + color: '#ff0000' + lane: + opposite_lane: + width: 2 + color: '#00af00' + offset: 4 + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-angleCorrection: 180 + pattern-offset: 0 + pattern-lineOffset: 4 + pattern-polygon: true + pattern-pixelSize: 9 + pattern-path-width: 0 + pattern-path-color: '#00af00' + pattern-path-fillOpacity: 1 + lane: + width: 2 + color: '#00af00' + offset: 4 + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-offset: 30.5 + pattern-lineOffset: 4 + pattern-polygon: true + pattern-pixelSize: 9 + pattern-path-width: 0 + pattern-path-color: '#00af00' + pattern-path-fillOpacity: 1 + opposite_track: + width: 2.5 + color: '#007f00' + offset: 4 + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-angleCorrection: 180 + pattern-offset: 0 + pattern-lineOffset: 4 + pattern-polygon: true + pattern-pixelSize: 9 + pattern-path-width: 0 + pattern-path-color: '#007f00' + pattern-path-fillOpacity: 1 + track: + width: 2.5 + color: '#007f00' + offset: 4 + noClip: true + dashArray: '25,10' + pattern: arrowHead + pattern-repeat: 35 + pattern-offset: 30.5 + pattern-lineOffset: 4 + pattern-polygon: true + pattern-pixelSize: 9 + pattern-path-width: 0 + pattern-path-color: '#007f00' + pattern-path-fillOpacity: 1