A repository for testing purposes.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
6.3 KiB

  1. query:
  2. 10: relation[route=bicycle]
  3. members: true
  4. feature:
  5. markerSymbol: ''
  6. styles: ''
  7. memberFeature:
  8. exclude: |
  9. {% if type == 'relation' %}true{% endif %}
  10. pre: |
  11. {% set type = 'other' %}
  12. {% set lane_left = null %}
  13. {% set lane_right = null %}
  14. {% set segregated = 'xxx' %}
  15. {% if attribute(tags, 'bicycle_road') == 'yes' or attribute(tags, 'cyclestreet') == 'yes' %}
  16. {% set type = 'bicycle_road' %}
  17. {% elseif tags.highway == 'cycleway' or (tags.highway == 'path' and tags.bicycle == 'designated') %}
  18. {% set type = tags.oneway in ['yes', '1'] ? 'cycleway_oneway' : 'cycleway' %}
  19. {% set segregated = tags.segregated != 'no' %}
  20. {% elseif tags.highway in ['living_street', 'pedestrian'] %}
  21. {% set type = tags.highway %}
  22. {% elseif tags.highway in ['residential', 'service'] %}
  23. {% set type = 'mixed_low' %}
  24. {% if tags.oneway in ['yes', '1'] %}
  25. {% set type = type ~ '_oneway' %}
  26. {% set lane_left = attribute(tags, 'oneway:bicycle') in ['no'] ? 'opposite_lane' : null %}
  27. {% endif %}
  28. {% elseif tags.highway in ['primary_link', 'primary', 'secondary_link', 'secondary', 'tertiary_link', 'tertiary'] %}
  29. {% set type = 'mixed_high' %}
  30. {% if tags.oneway in ['yes', '1'] %}
  31. {% set type = type ~ '_oneway' %}
  32. {% set lane_left = attribute(tags, 'oneway:bicycle') in ['no'] ? 'opposite_lane' : null %}
  33. {% endif %}
  34. {% endif %}
  35. {% if attribute(tags, 'cycleway:right') in ['lane', 'track'] %}
  36. {% set lane_right = attribute(tags, 'cycleway:right') %}
  37. {% set type = null %}
  38. {% endif %}
  39. {% if attribute(tags, 'cycleway') in ['opposite_lane', 'opposite_track'] %}
  40. {% set lane_left = attribute(tags, 'cycleway') %}
  41. {% endif %}
  42. {% if attribute(tags, 'cycleway:left') in ['lane', 'track'] %}
  43. {% set lane_left = 'opposite_' ~ attribute(tags, 'cycleway:left') %}
  44. {% elseif attribute(tags, 'cycleway:left') in ['opposite_lane', 'opposite_track'] %}
  45. {% set lane_left = attribute(tags, 'cycleway:left') %}
  46. {% endif %}
  47. {% set main_style_segregated = {} %}
  48. {% if not segregated %}
  49. {% if const.type[type].dashArray %}
  50. {% set main_style_segregated = { dashArray: '5,5,5,5,5,10', lineCap: 'butt' } %}
  51. {% else %}
  52. {% set main_style_segregated = { dashArray: '5,5', lineCap: 'butt' } %}
  53. {% endif %}
  54. {% endif %}
  55. styles: |
  56. {% set list = type ? ['default'] : [] %}
  57. {% if lane_left %}{% set list = list|merge(['lane_left']) %}{% endif %}
  58. {% if lane_right %}{% set list = list|merge(['lane_right']) %}{% endif %}
  59. {% if not segregated %}{% set list = ['segregated']|merge(list) %}{% endif %}
  60. {{ list|join(',')|debug }}
  61. style: |
  62. {{ const.type[type]|default({})|merge(main_style_segregated)|json_encode|raw }}
  63. style:segregated:
  64. width: 4
  65. color: '#00000000'
  66. style:lane_right: |
  67. {{ const.lane[lane_right]|default({})|json_encode|raw }}
  68. style:lane_left: |
  69. {{ 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 }}
  70. body: |
  71. {{ type }}, right: {{ lane_right }}, left: {{ lane_left }}<br>
  72. default{{ lane_left ? ',lane_left' : '' }}{{ lane_right ? ',lane_right' : '' }}<br>
  73. {{ segregated }}{{ segregated ? 'segregated' : 'not segregated' }}: {{ main_style_segregated|json_encode }}
  74. const:
  75. type:
  76. cycleway:
  77. width: 4
  78. color: '#007f00'
  79. cycleway_oneway:
  80. width: 2.5
  81. color: '#007f00'
  82. noClip: true
  83. dashArray: '25,10'
  84. pattern: arrowHead
  85. pattern-repeat: 35
  86. pattern-offset: 30.5
  87. pattern-polygon: true
  88. pattern-pixelSize: 9
  89. pattern-path-width: 0
  90. pattern-path-color: '#007f00'
  91. pattern-path-fillOpacity: 1
  92. pedestrian:
  93. width: 4
  94. color: '#00ffaf'
  95. living_street:
  96. width: 4
  97. color: '#00afaf'
  98. bicycle_road:
  99. width: 4
  100. color: '#00afff'
  101. mixed_low:
  102. width: 4
  103. color: '#efaf00'
  104. mixed_high:
  105. width: 4
  106. color: '#ff7f00'
  107. mixed_low_oneway:
  108. width: 4
  109. color: '#efaf00'
  110. noClip: true
  111. dashArray: '25,10'
  112. pattern: arrowHead
  113. pattern-repeat: 35
  114. pattern-offset: 30.5
  115. pattern-polygon: true
  116. pattern-pixelSize: 12
  117. pattern-path-width: 0
  118. pattern-path-color: '#efaf00'
  119. pattern-path-fillOpacity: 1
  120. mixed_high_oneway:
  121. width: 4
  122. color: '#ff7f00'
  123. noClip: true
  124. dashArray: '25,10'
  125. pattern: arrowHead
  126. pattern-repeat: 35
  127. pattern-offset: 30.5
  128. pattern-polygon: true
  129. pattern-pixelSize: 12
  130. pattern-path-width: 0
  131. pattern-path-color: '#ff7f00'
  132. pattern-path-fillOpacity: 1
  133. other:
  134. width: 4
  135. color: '#ff0000'
  136. lane:
  137. opposite_lane:
  138. width: 2
  139. color: '#00af00'
  140. offset: 4
  141. noClip: true
  142. dashArray: '25,10'
  143. pattern: arrowHead
  144. pattern-repeat: 35
  145. pattern-angleCorrection: 180
  146. pattern-offset: 0
  147. pattern-lineOffset: 4
  148. pattern-polygon: true
  149. pattern-pixelSize: 9
  150. pattern-path-width: 0
  151. pattern-path-color: '#00af00'
  152. pattern-path-fillOpacity: 1
  153. lane:
  154. width: 2
  155. color: '#00af00'
  156. offset: 4
  157. noClip: true
  158. dashArray: '25,10'
  159. pattern: arrowHead
  160. pattern-repeat: 35
  161. pattern-offset: 30.5
  162. pattern-lineOffset: 4
  163. pattern-polygon: true
  164. pattern-pixelSize: 9
  165. pattern-path-width: 0
  166. pattern-path-color: '#00af00'
  167. pattern-path-fillOpacity: 1
  168. opposite_track:
  169. width: 2.5
  170. color: '#007f00'
  171. offset: 4
  172. noClip: true
  173. dashArray: '25,10'
  174. pattern: arrowHead
  175. pattern-repeat: 35
  176. pattern-angleCorrection: 180
  177. pattern-offset: 0
  178. pattern-lineOffset: 4
  179. pattern-polygon: true
  180. pattern-pixelSize: 9
  181. pattern-path-width: 0
  182. pattern-path-color: '#007f00'
  183. pattern-path-fillOpacity: 1
  184. track:
  185. width: 2.5
  186. color: '#007f00'
  187. offset: 4
  188. noClip: true
  189. dashArray: '25,10'
  190. pattern: arrowHead
  191. pattern-repeat: 35
  192. pattern-offset: 30.5
  193. pattern-lineOffset: 4
  194. pattern-polygon: true
  195. pattern-pixelSize: 9
  196. pattern-path-width: 0
  197. pattern-path-color: '#007f00'
  198. pattern-path-fillOpacity: 1