Filtrowanie interfejsu API Overpass według kraju

9

Czy ktoś wie, jak wykonać takie żądanie interfejsu overpass-api?

„Pokaż mi wszystkie banki w Niemczech”?

Mógłbym po prostu pokazać całą „amenity = bank” w konkretnym obwiedni. Ale Niemcy (lub większość krajów) nie mieszczą się zbyt dobrze w takiej skrzynce.

Czy jest na to sposób? Czy masz przykład? Wydajność serwera lub środowisko wykonawcze ma drugorzędne znaczenie, ponieważ moglibyśmy hostować własny serwer lub coś takiego :)

Cem Özdemir
źródło

Odpowiedzi:

11

Przy użyciu Overpass turbo składnia jest następująca:

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

nwrjest skrótem od node- way-relation

AndreJ
źródło
Pomogło mi napisać „>;” po zamykającym nawiasie okrągłym „);” i przed „out”. W przeciwnym razie nie zostaną wyświetlone węzły o współrzędnych na mapie.
qräbnö
@ qräbnö masz rację, zaktualizowałem swoją odpowiedź.
AndreJ
7

Wtyczka Quick OSM dla QGIS generuje następujące działające zapytanie 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>

Szczegółowe informacje można znaleźć w części Overpass turbo / Extended Overpass Queries

podmrok
źródło