Main categories of OpenStreetBrowser
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.

623 lines
24 KiB

  1. query:
  2. 15: |
  3. (
  4. way[highway~"^(footway|pedestrian|steps|path|platform)$"];
  5. way[highway=cycleway][foot~"^(yes|designated)$"];
  6. way[footway];
  7. way["area:highway"~"^(footway|pedestrian|steps|path|platform|sidewalk)$"];
  8. relation["area:highway"~"^(footway|pedestrian|steps|path|platform|sidewalk)$"];
  9. relation[type=multipolygon]["highway"~"^(footway|pedestrian|steps|path|platform|sidewalk)$"];
  10. way[sidewalk~"^(yes|both|left|right|no|separate|none)$"];
  11. way["sidewalk:left"~"(yes|no|separate)$"];
  12. way["sidewalk:right"~"(yes|no|separate)$"];
  13. way["sidewalk:both"~"(yes|no|separate)$"];
  14. nwr["railway"="platform"];
  15. node[highway=crossing];
  16. )
  17. feature:
  18. pre: |
  19. {% set sides = ['default'] %}
  20. {% set sidewalk_left = null %}{% set sidewalk_right = null %}
  21. {% set cycleway = false %}
  22. {% set category = tags.highway %}
  23. {% if attribute(tags, 'sidewalk:both') == 'yes' or tags.sidewalk in ['yes', 'both', 'left', 'both', 'right'] or tags.footway == 'sidewalk' %}
  24. {% set category = 'sidewalk' %}
  25. {% endif %}
  26. {% if tags.highway in ['pedestrian', 'footway','steps','path','cycleway','platform'] %}
  27. {% set sides = sides|merge(['main']) %}
  28. {% endif %}
  29. {% if tags.highway in ['cycleway'] %}
  30. {% set category = 'footway' %}
  31. {% set cycleway = true %}
  32. {% set sides = sides|merge(['cycleway']) %}
  33. {% endif %}
  34. {% if tags.highway in ['path'] and tags.bicycle in ['yes', 'designated'] %}
  35. {% set cycleway = true %}
  36. {% set sides = sides|merge(['cycleway']) %}
  37. {% endif %}
  38. {% if attribute(tags, 'area:highway') in ['footway'] %}
  39. {% set sides = sides|merge(['main']) %}
  40. {% set category = attribute(tags, 'area:highway') %}
  41. {% endif %}
  42. {% if tags.railway in ['platform'] %}
  43. {% set sides = sides|merge(['main']) %}
  44. {% set category = 'platform' %}
  45. {% endif %}
  46. {% if tags.footway == 'crossing' %}
  47. {% set category = 'crossing' %}
  48. {% endif %}
  49. {% if tags.sidewalk in ['no', 'none'] %}
  50. {% set sidewalk_left = 'no' %}
  51. {% set sidewalk_right = 'no' %}
  52. {% set sides = sides|merge(['leftr', 'rightr']) %}
  53. {% endif %}
  54. {% if tags.sidewalk == 'separate' %}
  55. {% set sidewalk_left = 'separate' %}
  56. {% set sidewalk_right = 'separate' %}
  57. {% set sides = sides|merge(['leftr', 'rightr']) %}
  58. {% endif %}
  59. {% if attribute(tags, 'sidewalk:both') %}
  60. {% set sidewalk_left = attribute(tags, 'sidewalk:both') %}
  61. {% set sides = sides|merge(['leftr', 'rightr']) %}
  62. {% endif %}
  63. {% if attribute(tags, 'sidewalk:left') %}
  64. {% set sidewalk_left = attribute(tags, 'sidewalk:left') %}
  65. {% set sides = sides|merge(['leftr']) %}
  66. {% endif %}
  67. {% if attribute(tags, 'sidewalk:left') == 'yes' or attribute(tags, 'sidewalk:both') == 'yes' or tags.sidewalk in ['left', 'both'] %}
  68. {% set sidewalk_left = 'yes' %}
  69. {% set sides = sides|merge(['leftr', 'left']) %}
  70. {% endif %}
  71. {% if attribute(tags, 'sidewalk:right') %}
  72. {% set sidewalk_right = attribute(tags, 'sidewalk:right') %}
  73. {% set sides = sides|merge(['rightr']) %}
  74. {% endif %}
  75. {% if attribute(tags, 'sidewalk:right') == 'yes' or attribute(tags, 'sidewalk:both') == 'yes' or tags.sidewalk in ['right', 'both'] %}
  76. {% set sidewalk_right = 'yes' %}
  77. {% set sides = sides|merge(['rightr', 'right']) %}
  78. {% endif %}
  79. {% if type == 'node' %}
  80. {% set sides = ['node'] %}
  81. {% endif %}
  82. description: |
  83. {% if tags.footway %}
  84. {{ tagTrans('footway', tags.footway) }}
  85. {% elseif tags.highway %}
  86. {% if tags.highway in ['path', 'cycleway'] and tags.segregated %}
  87. {{ tagTrans('highway', 'cycleway segregated=' ~ tags.segregated) }}
  88. {% else %}
  89. {{ tagTrans('highway', tags.highway) }}
  90. {% endif %}
  91. {% elseif tags.railway %}
  92. {{ tagTrans('railway', tags.railway) }}
  93. {% elseif attribute(tags, 'area:highway') %}
  94. {{ tagTrans('highway', attribute(tags, 'area:highway')) }}
  95. {% endif %}
  96. body: |
  97. <ul>
  98. {% if 'main' in sides or 'node' in sides %}
  99. {% if tags.crossing %}<li>
  100. <span class='key'>{{ keyTrans('crossing') }}:</span>
  101. <span class='value'>{{ tagTrans('crossing', tags.crossing) }}</span>
  102. </li>{% endif %}
  103. {% if tags.width %}<li>
  104. <span class='key'>{{ keyTrans('width') }}:</span>
  105. <span class='value'>{{ tags.width|formatUnit }}</span>
  106. </li>{% endif %}
  107. {% if tags.wheelchair %}<li>
  108. <span class='key'>{{ keyTrans('wheelchair') }}:</span>
  109. <span class='value'>{{ tagTrans('wheelchair', tags.wheelchair) }}</span>
  110. </li>{% endif %}
  111. {% if tags.surface %}<li>
  112. <span class='key'>{{ keyTrans('surface') }}:</span>
  113. <span class='value'>{{ tagTrans('surface', tags.surface) }}</span>
  114. </li>{% endif %}
  115. {% if tags.tactile_paving %}<li>
  116. <span class='key'>{{ keyTrans('tactile_paving') }}:</span>
  117. <span class='value'>{{ tagTrans('tactile_paving', tags.tactile_paving) }}</span>
  118. </li>{% endif %}
  119. {% if tags.smoothness %}<li>
  120. <span class='key'>{{ keyTrans('smoothness') }}:</span>
  121. <span class='value'>{{ tagTrans('smoothness', tags.smoothness) }}</span>
  122. </li>{% endif %}
  123. {% set v = tags.incline %}
  124. {% if v %}<li>
  125. <span class='key'>{{ keyTrans('incline') }}:</span>
  126. <span class='value'>{{ v in ['up', 'down', 'yes'] ? tagTrans('incline', v) : v }}</span>
  127. </li>{% endif %}
  128. {% endif %}
  129. {% if attribute(tags, 'sidewalk:left')|default(attribute(tags, 'sidewalk:both')) or tags.sidewalk in ['left', 'both'] %}
  130. <li>{{ keyTrans('sidewalk:left') }}:<ul>
  131. <li>{{ tagTrans('sidewalk', attribute(tags, 'sidewalk:left')|default(attribute(tags, 'sidewalk:both'))) }}</li>
  132. {% if attribute(tags, 'sidewalk:left:width')|default(attribute(tags, 'sidewalk:both:width')) %}<li>
  133. <span class='key'>{{ keyTrans('width') }}:</span>
  134. <span class='value'>{{ attribute(tags, 'sidewalk:left:width')|default(attribute(tags, 'sidewalk:both:width'))|formatUnit }}</span>
  135. </li>{% endif %}
  136. {% if attribute(tags, 'sidewalk:left:wheelchair')|default(attribute(tags, 'sidewalk:both:wheelchair')) %}<li>
  137. <span class='key'>{{ keyTrans('wheelchair') }}:</span>
  138. <span class='value'>{{ tagTrans('wheelchair', attribute(tags, 'sidewalk:left:wheelchair')|default(attribute(tags, 'sidewalk:both:wheelchair'))) }}</span>
  139. </li>{% endif %}
  140. {% if attribute(tags, 'sidewalk:left:surface')|default(attribute(tags, 'sidewalk:both:surface'))|default(attribute(tags, 'sidewalk:surface')) %}<li>
  141. <span class='key'>{{ keyTrans('surface') }}:</span>
  142. <span class='value'>{{ tagTrans('surface', attribute(tags, 'sidewalk:left:surface')|default(attribute(tags, 'sidewalk:both:surface'))|default(attribute(tags, 'sidewalk:surface'))) }}</span>
  143. </li>{% endif %}
  144. {% if attribute(tags, 'sidewalk:left:tactile_paving') %}<li>
  145. <span class='key'>{{ keyTrans('tactile_paving') }}:</span>
  146. <span class='value'>{{ tagTrans('tactile_paving', attribute(tags, 'sidewalk:left:tactile_paving')|default(attribute(tags, 'sidewalk:both:tactile_paving'))) }}</span>
  147. </li>{% endif %}
  148. {% if attribute(tags, 'sidewalk:left:smoothness')|default(attribute(tags, 'sidewalk:both:smoothness'))|default(attribute(tags, 'sidewalk:smoothness')) %}<li>
  149. <span class='key'>{{ keyTrans('smoothness') }}:</span>
  150. <span class='value'>{{ tagTrans('smoothness', attribute(tags, 'sidewalk:left:smoothness')|default(attribute(tags, 'sidewalk:both:smoothness'))|default(attribute(tags, 'sidewalk:smoothness'))) }}</span>
  151. </li>{% endif %}
  152. {% set v = attribute(tags, 'sidewalk:left:incline')|default(attribute(tags, 'sidewalk:both:incline'))|default(tags.incline) %}
  153. {% if v %}<li>
  154. <span class='key'>{{ keyTrans('incline') }}:</span>
  155. <span class='value'>{{ v in ['up', 'down', 'yes'] ? tagTrans('incline', v) : v }}</span>
  156. </li>{% endif %}
  157. </ul></li>
  158. {% endif %}
  159. {% if attribute(tags, 'sidewalk:right')|default(attribute(tags, 'sidewalk:both')) or tags.sidewalk in ['right', 'both'] %}
  160. <li>{{ keyTrans('sidewalk:right') }}:<ul>
  161. <li>{{ tagTrans('sidewalk', attribute(tags, 'sidewalk:right')|default(attribute(tags, 'sidewalk:both'))) }}</li>
  162. {% if attribute(tags, 'sidewalk:right:width')|default(attribute(tags, 'sidewalk:both:width')) %}<li>
  163. <span class='key'>{{ keyTrans('width') }}:</span>
  164. <span class='value'>{{ attribute(tags, 'sidewalk:right:width')|default(attribute(tags, 'sidewalk:both:width'))|formatUnit }}</span>
  165. </li>{% endif %}
  166. {% if attribute(tags, 'sidewalk:right:wheelchair')|default(attribute(tags, 'sidewalk:both:wheelchair')) %}<li>
  167. <span class='key'>{{ keyTrans('wheelchair') }}:</span>
  168. <span class='value'>{{ tagTrans('wheelchair', attribute(tags, 'sidewalk:right:wheelchair')|default(attribute(tags, 'sidewalk:both:wheelchair'))) }}</span>
  169. </li>{% endif %}
  170. {% if attribute(tags, 'sidewalk:right:surface')|default(attribute(tags, 'sidewalk:both:surface'))|default(attribute(tags, 'sidewalk:surface')) %}<li>
  171. <span class='key'>{{ keyTrans('surface') }}:</span>
  172. <span class='value'>{{ tagTrans('surface', attribute(tags, 'sidewalk:right:surface')|default(attribute(tags, 'sidewalk:both:surface'))|default(attribute(tags, 'sidewalk:surface'))) }}</span>
  173. </li>{% endif %}
  174. {% if attribute(tags, 'sidewalk:right:tactile_paving') %}<li>
  175. <span class='key'>{{ keyTrans('tactile_paving') }}:</span>
  176. <span class='value'>{{ tagTrans('tactile_paving', attribute(tags, 'sidewalk:right:tactile_paving')|default(attribute(tags, 'sidewalk:both:tactile_paving'))) }}</span>
  177. </li>{% endif %}
  178. {% if attribute(tags, 'sidewalk:right:smoothness')|default(attribute(tags, 'sidewalk:both:smoothness'))|default(attribute(tags, 'sidewalk:smoothness')) %}<li>
  179. <span class='key'>{{ keyTrans('smoothness') }}:</span>
  180. <span class='value'>{{ tagTrans('smoothness', attribute(tags, 'sidewalk:right:smoothness')|default(attribute(tags, 'sidewalk:both:smoothness'))|default(attribute(tags, 'sidewalk:smoothness'))) }}</span>
  181. </li>{% endif %}
  182. {% set v = attribute(tags, 'sidewalk:right:incline')|default(attribute(tags, 'sidewalk:both:incline'))|default(tags.incline) %}
  183. {% if i %}<li>
  184. <span class='key'>{{ keyTrans('incline') }}:</span>
  185. <span class='value'>{{ v in ['up', 'down', 'yes'] ? tagTrans('incline', v) : v }}</span>
  186. </li>{% endif %}
  187. </ul></li>
  188. {% endif %}
  189. </ul>
  190. markerSymbol: ""
  191. listMarkerSymbol: |
  192. {% if tags.area == 'yes' or tags.type == 'multipolygon' or attribute(tags, 'area:highway') %}
  193. polygon
  194. {% elseif 'node' in sides %}
  195. {{ markerCircle({ width: 0, radius: 5, fillOpacity: 1, fill: true, color: const.categories[category].color }) }}
  196. {% else %}
  197. {{ markerLine({
  198. 'styles': sides|join(','),
  199. 'style:main': {
  200. width: cycleway and tags.segregated == 'yes' ? 2 : const.categories[category].width|default(3),
  201. color: const.categories[category].color,
  202. dashArray: tags.highway == 'steps' ? '3,3' :
  203. cycleway and tags.segregated != 'yes' ? '8,8' :
  204. '',
  205. lineCap: tags.highway == 'steps' or (cycleway and tags.segregated != 'yes') ? 'butt' : 'round',
  206. offset: cycleway and tags.segregated == 'yes' ? 1 : 0
  207. },
  208. 'style:cycleway': {
  209. fill: false,
  210. width: cycleway and tags.segregated == 'yes' ? 2 : 3,
  211. color: const.categories.cycleway.color,
  212. dashArray: cycleway and tags.segregated != 'yes' ? '8,8' : '',
  213. dashOffset: 8,
  214. lineCap: cycleway and tags.segregated != 'yes' ? 'butt' : 'round',
  215. offset: cycleway and tags.segregated == 'yes' ? -1 : 0
  216. },
  217. 'style:left': {
  218. width: 3,
  219. offset: -6,
  220. color: const.categories.sidewalk.color
  221. },
  222. 'style:right': {
  223. width: 3,
  224. offset: 6,
  225. color: const.categories.sidewalk.color
  226. },
  227. 'style:leftr': {
  228. width: sidewalk_left ? 5 : 0,
  229. offset: -2.5,
  230. opacity: 0.3,
  231. dashArray: '1,10',
  232. lineCap: butt,
  233. color: sidewalk_left in ['no', 'none'] ? '#000000' : const.categories.sidewalk.color
  234. },
  235. 'style:rightr': {
  236. width: sidewalk_right ? 5 : 0,
  237. offset: 2.5,
  238. opacity: 0.3,
  239. dashArray: '1,10',
  240. lineCap: butt,
  241. color: sidewalk_left in ['no', 'none'] ? '#000000' : const.categories.sidewalk.color
  242. },
  243. }) }}
  244. {% endif %}
  245. style:
  246. opacity: 0
  247. fillOpacity: 0
  248. width: 5
  249. style:node:
  250. width: 0
  251. radius: 5
  252. fillOpacity: 1
  253. fill: true
  254. color: |
  255. {{ const.categories[category].color }}
  256. style:main:
  257. fill: |
  258. {% if tags.area == 'yes' or tags.type == 'multipolygon' or attribute(tags, 'area:highway') %}true{% else %}false{% endif %}
  259. width: |
  260. {% if attribute(tags, 'area:highway') %}
  261. 0
  262. {% elseif tags.area == 'yes' or tags.type == 'multipolygon' %}
  263. 1
  264. {% elseif cycleway and tags.segregated == 'yes' %}
  265. 3
  266. {% else %}
  267. {{ const.categories[category].width|default(3) }}
  268. {% endif %}
  269. color: |
  270. {{ const.categories[category].color }}
  271. dashArray: |
  272. {% if tags.highway == 'steps' %}
  273. 3,3
  274. {% elseif cycleway and tags.segregated != 'yes' %}
  275. 8,8
  276. {% endif %}
  277. lineCap: |
  278. {% if tags.highway == 'steps' or (cycleway and tags.segregated != 'yes') %}butt{% else %}round{% endif %}
  279. offset: |
  280. {% if cycleway and tags.segregated == 'yes' %}1.5{% else %}0{% endif %}
  281. style:cycleway:
  282. fill: false
  283. width: 3
  284. color: |
  285. {{ const.categories.cycleway.color }}
  286. dashArray: |
  287. {% if cycleway and tags.segregated != 'yes' %}
  288. 8,8
  289. {% endif %}
  290. dashOffset: 8
  291. lineCap: |
  292. {% if cycleway and tags.segregated != 'yes' %}butt{% else %}round{% endif %}
  293. offset: |
  294. {% if cycleway and tags.segregated == 'yes' %}-1.5{% else %}0{% endif %}
  295. style:left:
  296. fill: false
  297. width: 3
  298. offset: |
  299. {{ -5 / map.metersPerPixel }}
  300. color: |
  301. {{ const.categories.sidewalk.color }}
  302. style:right:
  303. fill: false
  304. width: 3
  305. offset: |
  306. {{ 5 / map.metersPerPixel }}
  307. color: |
  308. {{ const.categories.sidewalk.color }}
  309. style:leftr:
  310. fill: false
  311. width: |
  312. {{ sidewalk_left ? 5 / map.metersPerPixel : 0 }}
  313. offset: |
  314. {{ -2.5 / map.metersPerPixel }}
  315. opacity: 0.3
  316. dashArray: '1,10'
  317. lineCap: butt
  318. color: |
  319. {{ sidewalk_left in ['no', 'none'] ? '#000000' : const.categories.sidewalk.color }}
  320. style:rightr:
  321. fill: false
  322. width: |
  323. {{ sidewalk_right ? 5 / map.metersPerPixel : 0 }}
  324. offset: |
  325. {{ 2.5 / map.metersPerPixel }}
  326. opacity: 0.3
  327. dashArray: '1,10'
  328. lineCap: butt
  329. color: |
  330. {{ sidewalk_right in ['no', 'none'] ? '#000000' : const.categories.sidewalk.color }}
  331. styles: |
  332. {{ sides|join(',') }}
  333. info: |
  334. <table>
  335. {% for k, d in const.categories if k != 'cycleway' %}
  336. <tr>
  337. <td>{{ markerLine({
  338. width: d.width|default(3),
  339. color: d.color,
  340. dashArray: d.dashArray
  341. }) }}</td>
  342. <td>{{ tagTrans(d.key|default('highway'), k) }}</td>
  343. </tr>
  344. {% endfor %}
  345. <tr>
  346. <td>{{ markerPolygon({
  347. styles: 'default',
  348. style: {
  349. width: 1,
  350. color: const.categories.footway.color,
  351. fillColor: const.categories.footway.color
  352. }
  353. }) }}</td>
  354. <td>{{ tagTrans('highway', 'footway') }} ({{ keyTrans('area') }})</td>
  355. </tr>
  356. <tr>
  357. <td>
  358. <svg anchorx="13" anchory="8" width="25" height="19">
  359. <rect x="3" y="0" width="18" height="19" style="stroke-width: 0;fill: #ab00ff;fill-opacity: 0.2;"></rect>
  360. <line x1="3" y1="10" x2="21" y2="10" style="stroke: #ab00ff;stroke-width: 3;stroke-dasharray: undefined;stroke-dasharray: undefined;fill: #ab00ff;fill-opacity: 0.2;"></line>
  361. </svg>
  362. </td>
  363. <td>{{ tagTrans('highway', 'footway') }} ({{ keyTrans('area:highway') }})</td>
  364. </tr>
  365. <tr>
  366. <td>{{ markerCircle({
  367. width: 0,
  368. radius: 5,
  369. fillOpacity: 1,
  370. fill: true,
  371. color: const.categories.crossing.color
  372. }) }}</td>
  373. <td>{{ tagTrans('highway', 'crossing') }}</td>
  374. </tr>
  375. <tr>
  376. <td>{{ markerLine({
  377. styles: 'default,foot',
  378. style: {
  379. width: 4,
  380. color: const.categories.cycleway.color,
  381. dashArray: '8,8'
  382. },
  383. 'style:foot': {
  384. width: 4,
  385. color: const.categories.footway.color,
  386. dashArray: '8,8',
  387. dashOffset: 8
  388. }
  389. }) }}</td>
  390. <td>{{ tagTrans('highway', 'cycleway segregated=no') }}</td>
  391. </tr>
  392. <tr>
  393. <td>{{ markerLine({
  394. styles: 'default,foot',
  395. style: {
  396. width: 3,
  397. color: const.categories.cycleway.color,
  398. offset: -1.5
  399. },
  400. 'style:foot': {
  401. width: 3,
  402. color: const.categories.footway.color,
  403. offset: 1.5
  404. }
  405. }) }}</td>
  406. <td>{{ tagTrans('highway', 'cycleway segregated=yes') }}</td>
  407. </tr>
  408. {% for k, d in const.sidewalks %}
  409. <tr>
  410. <td>{{ markerLine({
  411. styles: d.styles,
  412. 'style:leftr': {
  413. width: 9,
  414. offset: -1,
  415. opacity: 0.3,
  416. dashArray: '1,10',
  417. lineCap: butt,
  418. color: d.color
  419. },
  420. 'style:left': {
  421. width: 3,
  422. offset: -7,
  423. color: d.color
  424. }
  425. }) }}</td>
  426. <td>{{ tagTrans('sidewalk', k) }}</td>
  427. </tr>
  428. {% endfor %}
  429. </table>
  430. filter:
  431. access:
  432. name: '{{ keyTrans("access") }}'
  433. type: select
  434. placeholder: '<{{ trans("any value") }}>'
  435. valueName: '{{ tagTrans("access", value) }}'
  436. values:
  437. 'yes': {}
  438. private: {}
  439. permissive: {}
  440. customers: {}
  441. discouraged: {}
  442. '!':
  443. name: <{{ trans('empty value') }}>
  444. query: nwr[!access]
  445. weight: -3
  446. '?':
  447. name: <{{ trans("other") }}>
  448. query: nwr[access]["access"!~"^(public|private|permissive|customers|discouraged|unknown|yes)$"]
  449. weight: -2
  450. unknown:
  451. name: '<{{ trans("unknown") }}>'
  452. query: nwr["access"="unknown"]
  453. weight: -1
  454. surface:
  455. name: '{{ keyTrans("surface") }}'
  456. type: select
  457. placeholder: '<{{ trans("any value") }}>'
  458. valueName: '{{ tagTrans("surface", value) }}'
  459. query: |
  460. {% if value == 'all_paved' %}
  461. {% set value = "(paved|asphalt|chipseal|concrete|concrete:lanes|concrete:plates|paving_stones|sett|unhewn_cobblestone|cobblestone|metal|wood|rubber)" %}
  462. {% elseif value == 'all_unpaved' %}
  463. {% set value = "(unpaved|compacted|fine_gravel|gravel|rock|pebblestone|ground|dirt|earth|grass|grass_paver|mud|sand|woodchips|snow|ice|salt|clay)" %}
  464. {% endif %}
  465. (
  466. nwr[!sidewalk][!"sidewalk:both"][!"sidewalk:right"][!"sidewalk:left"][surface~"^{{ value }}$"];
  467. nwr[~"sidewalk(:left|:right|:both|):surface"~"^{{ value }}$"];
  468. )
  469. values:
  470. all_paved:
  471. name: "<{{ tagTrans('surface', 'paved') }}>"
  472. weight: -1
  473. all_unpaved:
  474. name: "<{{ tagTrans('surface', 'unpaved') }}>"
  475. weight: -1
  476. acrylic: {}
  477. artificial_turf: {}
  478. asphalt: {}
  479. carpet: {}
  480. chipseal: {}
  481. clay: {}
  482. cobblestone: {}
  483. compacted: {}
  484. concrete: {}
  485. concrete:lanes: {}
  486. concrete:plates: {}
  487. dirt: {}
  488. earth: {}
  489. fine_gravel: {}
  490. grass: {}
  491. grass_paver: {}
  492. gravel: {}
  493. ground: {}
  494. ice: {}
  495. metal: {}
  496. metal_grid: {}
  497. mud: {}
  498. paved: {}
  499. paving_stones: {}
  500. pebblestone: {}
  501. rock: {}
  502. rubber: {}
  503. salt: {}
  504. sand: {}
  505. sett: {}
  506. snow: {}
  507. stepping_stones: {}
  508. tartan: {}
  509. unhewn_cobblestone: {}
  510. unpaved: {}
  511. wood: {}
  512. woodchips: {}
  513. '!':
  514. name: <{{ trans('empty value') }}>
  515. query: |
  516. (
  517. nwr[!sidewalk][!"sidewalk:both"][!"sidewalk:right"][!"sidewalk:left"][!"surface"];
  518. nwr["sidewalk:left"="yes"][!"sidewalk:left:surface"];
  519. nwr["sidewalk:right"="yes"][!"sidewalk:right:surface"];
  520. nwr["sidewalk:both"="yes"][!"sidewalk:both:surface"][!"sidewalk:surface"][!"sidewalk:left:surface"];
  521. nwr["sidewalk:both"="yes"][!"sidewalk:both:surface"][!"sidewalk:surface"][!"sidewalk:right:surface"];
  522. nwr["sidewalk"="left"][!"sidewalk:left:surface"];
  523. nwr["sidewalk"="right"][!"sidewalk:right:surface"];
  524. nwr["sidewalk"="both"][!"sidewalk:both:surface"][!"sidewalk:surface"][!"sidewalk:left:surface"];
  525. nwr["sidewalk"="both"][!"sidewalk:both:surface"][!"sidewalk:surface"][!"sidewalk:right:surface"];
  526. )
  527. weight: -4
  528. '?':
  529. name: <{{ trans("other") }}>
  530. query: nwr[surface]["surface"!~"^(acrylic|artificial_turf|asphalt|carpet|chipseal|clay|cobblestone|compacted|concrete|concrete:lanes|concrete:plates|dirt|earth|fine_gravel|grass|grass_paver|gravel|ground|ice|metal|metal_grid|mud|paved|paving_stones|pebblestone|rock|rubber|salt|sand|sett|snow|stepping_stones|tartan|unhewn_cobblestone|unpaved|wood|woodchips)$"]
  531. weight: -3
  532. unknown:
  533. name: '<{{ trans("unknown") }}>'
  534. weight: -2
  535. smoothness:
  536. name: '{{ keyTrans("smoothness") }}'
  537. type: select
  538. placeholder: '<{{ trans("any value") }}>'
  539. valueName: '{{ tagTrans("smoothness", value) }}'
  540. query: '(nwr[smoothness="{{ value }}"];nwr[~"sidewalk:(left|right|both):smoothness"~"{{ value }}"];)'
  541. values:
  542. bad: {}
  543. excellent: {}
  544. good: {}
  545. horrible: {}
  546. impassable: {}
  547. intermediate: {}
  548. very_bad: {}
  549. very_horrible: {}
  550. '!':
  551. name: <{{ trans('empty value') }}>
  552. query: |
  553. (
  554. nwr[!"smoothness"];
  555. nwr["sidewalk:left"="yes"][!"sidewalk:left:smoothness"];
  556. nwr["sidewalk:right"="yes"][!"sidewalk:right:smoothness"];
  557. nwr["sidewalk:both"="yes"][!"sidewalk:both:smoothness"][!"sidewalk:smoothness"][!"sidewalk:left:smoothness"];
  558. nwr["sidewalk:both"="yes"][!"sidewalk:both:smoothness"][!"sidewalk:smoothness"][!"sidewalk:right:smoothness"];
  559. nwr["sidewalk"="left"][!"sidewalk:left:smoothness"];
  560. nwr["sidewalk"="right"][!"sidewalk:right:smoothness"];
  561. nwr["sidewalk"="both"][!"sidewalk:both:smoothness"][!"sidewalk:smoothness"][!"sidewalk:left:smoothness"];
  562. nwr["sidewalk"="both"][!"sidewalk:both:smoothness"][!"sidewalk:smoothness"][!"sidewalk:right:smoothness"];
  563. )
  564. weight: -3
  565. '?':
  566. name: <{{ trans("other") }}>
  567. query: nwr[smoothness]["smoothness"!~"^(bad|excellent|good|horrible|impassable|intermediate|very_bad|very_horrible)$"]
  568. weight: -2
  569. unknown:
  570. name: '<{{ trans("unknown") }}>'
  571. weight: -1
  572. const:
  573. categories:
  574. sidewalk:
  575. color: '#ff007f'
  576. key: footway
  577. pedestrian:
  578. color: '#ff00c8'
  579. width: 5
  580. footway:
  581. color: '#ab00ff'
  582. path:
  583. color: '#ee922d'
  584. steps:
  585. color: '#ab00ff'
  586. dashArray: '3,3'
  587. crossing:
  588. color: '#964e00'
  589. cycleway:
  590. color: '#002aff'
  591. platform:
  592. key: railway
  593. color: '#00ff00'
  594. sidewalks:
  595. 'yes':
  596. color: '#ff007f'
  597. styles: 'leftr,left'
  598. 'separate':
  599. color: '#ff007f'
  600. styles: 'leftr'
  601. 'no':
  602. color: '#000000'
  603. styles: 'leftr'