Contribute to project
Intro

Por zona Improve page

“¡Bingo!” dice Bob mientras camina hacia el restaurante.

¿Ves lo poderoso que es Overpass QL en la consulta de datos OSM? Tiene una plétora de diferentes filtros y declaraciones, y la combinación de ellos entre sí puede crear consultas aún más específicas para sus casos de uso.

Nuestro ejemplo anterior introduce una metáfora muy importante en el Lenguaje de Consulta de Overpass, que es el ‘flujo’. Una buena manera de pensar en la API Overpass es que permite que los datos OSM (nodos, etc.) sean generados y modificados a medida que ‘fluyen’ de una declaración a otra.

Como ejemplo concreto, nuestra consulta de bounding box (los puntos lat/lon) encuentra los nodos de esa zona. Los datos resultantes “fluirán” y se filtrarán como [natural=tree], [height=20], etc.

Si te fijas, (around:n) funciona de la misma manera, en el sentido de que nuestros datos iniciales fluyen en él, y se modifica para mostrar los nodos alrededor de los datos iniciales que se producen por nuestra primera línea.

“¡Vaya!” exclama Bob, “¡Ha sido una comida muy buena!”.

“Serían 25 euros señor” dice el camarero, vestido con un atuendo totalmente blanco.

“¡Ya voy!” dice Bob orgulloso, cuando…

“¡Uh oh! Parece que me he dejado la cartera en el observatorio!”.

Nervioso, Bob salió corriendo del restaurante, con la esperanza de recuperar su cartera.

Instructions
  1. Bob se dejó la cartera mientras recorría la ciudad. Recordaba perfectamente haber dejado la cartera en cierta torre del observatorio en el río Inn.
  2. Ese observatorio está bastante lejos, así que sería mejor asegurarnos de que nuestra consulta resultante también muestra nuestra posición actual (¡para no perdernos!) Si te fijas en el editor de la derecha, tenemos dos sentencias out, con una línea en blanco entre ellas. Overpass QL puede usar múltiples sentencias out. Si piensas en las sentencias QL como sentencias, puedes pensar en nuestra estructura aquí como dos párrafos diferentes. Nuestro primer ‘párrafo’ es la consulta que hemos estado utilizando hasta ahora, y sólo imprime el restaurante donde se encuentra Bob. El segundo ‘párrafo’ es lo que necesitas editar.
  3. Necesitamos encontrar un nodo que sea una torre de observación. Para ello podemos utilizar el filtro ["tower:type"=observation]. Observa que entrecomillamos el tipo de filtro porque contiene un carácter no alfabético (:).
  4. Encontrar nodos de torres de observatorio es fácil, pero ¿cómo podemos limitar nuestros resultados observatorios en el río Inn? Utilizar un bounding box sería demasiado complicado. Lo que podemos optar por hacer es consultar por área. Como sabemos que la torre está en una zona concreta (el río Inn), podemos utilizar esa información para hacer nuestra consulta.
  5. Como puedes ver en el editor, la 5a. línea tiene la palabra clave area. Es igual que la palabra clave node que hemos utilizado hasta ahora, pero en lugar de buscar un único punto de interés como un nodo, “área” busca un… bueno, ¡un área!
  6. Sabemos que el nombre del río es Inn. Podemos utilizarlo como filtro para nuestra área. Sigue adelante y utiliza [name=Inn] como filtro en la sentencia area.
  7. En realidad no queremos consultar el área, sino que sólo queremos utilizar el área para encontrar un nodo concreto en ella. Así que en la sexta línea, escribe tu declación nodo, junto con el filtro de tipo torre discutido en 3.
  8. Una vez hecho esto, tenemos que asegurarnos de que el nodo sólo consulta dentro del área que hemos definido. Para ello, cambia la sentencia node por node(area). Esto le dice a overpass que sólo busque nodos dentro del área definida en la sentencia area.
That doesn't seem right! No olvides utilizar una consulta area.
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20]; node(around:450)[amenity=restaurant]; out; area[name=Inn]; node(area)["tower:type"=observation]; out;