Фильтрация Overpass-API по стране

9

Кто-нибудь знает, как выполнить запрос overpass-api, как это?

"Покажите мне все банки в Германии"?

Я мог бы просто показать все «amenity = bank» в определенной ограничительной рамке. Но Германия (или большинство стран) не очень хорошо вписывается в такой bbox.

Есть какой-либо способ сделать это? У вас есть пример? Производительность или время выполнения сервера вторичны, так как мы можем разместить собственный сервер или что-то в этом роде :)

Джем Оздемир
источник

Ответы:

11

Используя Overpass Turbo, синтаксис:

area["name"="Nordrhein-Westfalen"]->.boundaryarea;
(
nwr(area.boundaryarea)[amenity=bank];
);
out meta;

nwrэто сокращение для node- way-relation

Andrej
источник
Это помогло мне написать ">;" после закрывающей круглой скобки ");" и перед тем как "выйти". В противном случае никакие узлы с координатами на карте не отображались.
qräbnö
@ qräbnö ты прав, я обновил свой ответ.
AndreJ
7

Плагин Quick OSM для QGIS генерирует следующий рабочий запрос Overpass:

<osm-script output="xml" timeout="200"> 
 <id-query {{nominatimArea:Austria}} into="area"/> 
 <union>
      <query type="node">
           <has-kv k="amenity" v="bank"/> 
           <area-query from="area"/>
      </query>
      <query type="way">
           <has-kv k="amenity" v="bank"/> 
           <area-query from="area"/>
      </query>
      <query type="relation">
           <has-kv k="amenity" v="bank"/> 
           <area-query from="area"/>
      </query>
 </union>
 <union>
      <item />
      <recurse type="down"/>
 </union>
 <print mode="body" />
</osm-script>

подробнее см. Overpass Turbo / Расширенные запросы Overpass

Подземье
источник