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.

112 lines
4.1 KiB

  1. {
  2. "type": "overpass",
  3. "name": {
  4. "de": "Gebäudehöhen",
  5. "en": "Building height",
  6. "fr": "Hauteur",
  7. "pt-br": "Altura"
  8. },
  9. "query": {
  10. "16": [
  11. "(",
  12. " way[building];",
  13. " relation[building];",
  14. ")"
  15. ]
  16. },
  17. "feature": {
  18. "pre": [
  19. "{% if tags.height is defined %}",
  20. "{% set approxHeight = tags.height %}",
  21. "{% set m = tags.height|matches('(.*)\\s*(m|ft)$') %}",
  22. "{% if m and m[2] == 'm' %}{% set approxHeight = m[1] %}{% endif %}",
  23. "{% if m and m[2] == 'ft' %}{% set approxHeight = m[1] / 3.2808 %}{% endif %}",
  24. "{% elseif attribute(tags, 'building:levels') is defined %}",
  25. "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
  26. "{% endif %}",
  27. "",
  28. "{% if approxHeight <= 50 %}",
  29. "{% set color = colorInterpolate(['green', 'red'], approxHeight / 50) %}",
  30. "{% elseif approxHeight %}",
  31. "{% set color = colorInterpolate(['red', 'yellow'], (approxHeight - 50) / 250) %} ",
  32. "{% else %}",
  33. "{% set color = '#7f7f7f' %}",
  34. "{% endif %}"
  35. ],
  36. "description": [
  37. "{% if tags.height is defined %}",
  38. " {% if tags.height|matches('(m|ft)$') %}{{ tags.height -}}",
  39. " {% else %}{{ tags.height }}&nbsp;m",
  40. " {%- endif -%}",
  41. "{% endif -%}",
  42. "",
  43. "{%- if attribute(tags, 'building:levels') is defined -%}",
  44. "{%- if tags.height is defined %}, {% endif %}",
  45. "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
  46. "{% endif %}"
  47. ],
  48. "markerSymbol": null,
  49. "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
  50. "priority": "{{ (approxHeight|default(0)) * -1 }}",
  51. "style": {
  52. "width": "1",
  53. "color": "#000000",
  54. "fillColor": "{{ color }}",
  55. "fillOpacity": "1"
  56. }
  57. },
  58. "info": [
  59. "<div style='display: inline-block'>",
  60. "{{ tagTrans('height') }}",
  61. "<table>",
  62. " <tr>",
  63. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
  64. " <td colspan>{{ trans('unknown') }}</td>",
  65. " </tr>",
  66. "{% for i in range(0, 50, 10) %}",
  67. " <tr>",
  68. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
  69. " <td>{{ i }}m</td>",
  70. " </tr>",
  71. "{% endfor %}",
  72. "{% for i in range(100, 250, 50) %}",
  73. " <tr>",
  74. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
  75. " <td>{{ i }}m</td>",
  76. " </tr>",
  77. "{% endfor %}",
  78. " <tr>",
  79. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}</td>",
  80. " <td>≥300m</td>",
  81. " </tr>",
  82. "</table>",
  83. "</div>",
  84. "",
  85. "<div style='display: inline-block'>",
  86. "{{ tagTrans('building:levels') }}",
  87. "<table>",
  88. " <tr>",
  89. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
  90. " <td colspan>{{ trans('unknown') }}</td>",
  91. " </tr>",
  92. "{% for i in range(0, 12, 3) %}",
  93. " <tr>",
  94. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
  95. " <td>{{ i }}</td>",
  96. " </tr>",
  97. "{% endfor %}",
  98. "{% for i in range(15, 84, 15) %}",
  99. " <tr>",
  100. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
  101. " <td>{{ i }}</td>",
  102. " </tr>",
  103. "{% endfor %}",
  104. " <tr>",
  105. " <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}</td>",
  106. " <td>≥85</td>",
  107. " </tr>",
  108. "</table>",
  109. "",
  110. "</div>"
  111. ]
  112. }