Фільтрування API Overpass за країною


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


Це допомогло мені написати ">;" після закриваючої круглої дужки ");" і перед "вийти". Інакше на карті не відображалися жодні вузли з координатами.
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 / Extended Qupass Queries

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.