Filtrado de Overpass-API por país

9

¿Alguien sabe cómo realizar una solicitud de API de paso superior como esta?

"Muéstrame todos los bancos en Alemania"?

Podría mostrar todo 'amenity = bank' en un cuadro delimitador específico. Pero Alemania (o la mayoría de todos los países) no encaja muy bien en ese bbox.

¿Hay alguna forma de hacer esto? ¿Tienes un ejemplo? El rendimiento del servidor o el tiempo de ejecución es secundario ya que podríamos alojar un servidor propio o algo así :)

Cem Özdemir
fuente

Respuestas:

11

Usando Overpass turbo, la sintaxis es:

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

nwres una abreviatura de node- way-relation

AndreJ
fuente
Me ayudó a escribir ">;" después del corchete de cierre ");" y antes de "salir". De lo contrario, no se mostrarán nodos con coordenadas en el mapa.
qräbnö
@ qräbnö tienes razón, actualicé mi respuesta.
AndreJ
7

El complemento Quick OSM para QGIS genera la siguiente consulta de trabajo de 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>

para obtener más información, consulte Consultas de paso elevado turbo / paso elevado

bajo oscuro
fuente