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.

209 lines
6.4 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' or type == 'node' %}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', 'unclassified'] or tags.max_speed > 30 %}
  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. style:segregated:
  71. width: |
  72. {{ const.type[type].width }}
  73. color: '#00ffaf'
  74. body: |
  75. {{ type }}, right: {{ lane_right }}, left: {{ lane_left }}<br>
  76. default{{ lane_left ? ',lane_left' : '' }}{{ lane_right ? ',lane_right' : '' }}<br>
  77. {{ segregated }}{{ segregated ? 'segregated' : 'not segregated' }}: {{ main_style_segregated|json_encode }}
  78. const:
  79. type:
  80. cycleway:
  81. width: 4
  82. color: '#007f00'
  83. cycleway_oneway:
  84. width: 2.5
  85. color: '#007f00'
  86. noClip: true
  87. dashArray: '25,10'
  88. pattern: arrowHead
  89. pattern-repeat: 35
  90. pattern-offset: 30.5
  91. pattern-polygon: true
  92. pattern-pixelSize: 9
  93. pattern-path-width: 0
  94. pattern-path-color: '#007f00'
  95. pattern-path-fillOpacity: 1
  96. pedestrian:
  97. width: 4
  98. color: '#00ffaf'
  99. living_street:
  100. width: 4
  101. color: '#00afaf'
  102. bicycle_road:
  103. width: 4
  104. color: '#00afff'
  105. mixed_low:
  106. width: 4
  107. color: '#efaf00'
  108. mixed_high:
  109. width: 4
  110. color: '#ff7f00'
  111. mixed_low_oneway:
  112. width: 4
  113. color: '#efaf00'
  114. noClip: true
  115. dashArray: '25,10'
  116. pattern: arrowHead
  117. pattern-repeat: 35
  118. pattern-offset: 30.5
  119. pattern-polygon: true
  120. pattern-pixelSize: 12
  121. pattern-path-width: 0
  122. pattern-path-color: '#efaf00'
  123. pattern-path-fillOpacity: 1
  124. mixed_high_oneway:
  125. width: 4
  126. color: '#ff7f00'
  127. noClip: true
  128. dashArray: '25,10'
  129. pattern: arrowHead
  130. pattern-repeat: 35
  131. pattern-offset: 30.5
  132. pattern-polygon: true
  133. pattern-pixelSize: 12
  134. pattern-path-width: 0
  135. pattern-path-color: '#ff7f00'
  136. pattern-path-fillOpacity: 1
  137. other:
  138. width: 4
  139. color: '#ff0000'
  140. lane:
  141. opposite_lane:
  142. width: 2
  143. color: '#00af00'
  144. offset: 4
  145. noClip: true
  146. dashArray: '25,10'
  147. pattern: arrowHead
  148. pattern-repeat: 35
  149. pattern-angleCorrection: 180
  150. pattern-offset: 0
  151. pattern-lineOffset: 4
  152. pattern-polygon: true
  153. pattern-pixelSize: 9
  154. pattern-path-width: 0
  155. pattern-path-color: '#00af00'
  156. pattern-path-fillOpacity: 1
  157. lane:
  158. width: 2
  159. color: '#00af00'
  160. offset: 4
  161. noClip: true
  162. dashArray: '25,10'
  163. pattern: arrowHead
  164. pattern-repeat: 35
  165. pattern-offset: 30.5
  166. pattern-lineOffset: 4
  167. pattern-polygon: true
  168. pattern-pixelSize: 9
  169. pattern-path-width: 0
  170. pattern-path-color: '#00af00'
  171. pattern-path-fillOpacity: 1
  172. opposite_track:
  173. width: 2.5
  174. color: '#007f00'
  175. offset: 4
  176. noClip: true
  177. dashArray: '25,10'
  178. pattern: arrowHead
  179. pattern-repeat: 35
  180. pattern-angleCorrection: 180
  181. pattern-offset: 0
  182. pattern-lineOffset: 4
  183. pattern-polygon: true
  184. pattern-pixelSize: 9
  185. pattern-path-width: 0
  186. pattern-path-color: '#007f00'
  187. pattern-path-fillOpacity: 1
  188. track:
  189. width: 2.5
  190. color: '#007f00'
  191. offset: 4
  192. noClip: true
  193. dashArray: '25,10'
  194. pattern: arrowHead
  195. pattern-repeat: 35
  196. pattern-offset: 30.5
  197. pattern-lineOffset: 4
  198. pattern-polygon: true
  199. pattern-pixelSize: 9
  200. pattern-path-width: 0
  201. pattern-path-color: '#007f00'
  202. pattern-path-fillOpacity: 1