“¡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.
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.["tower:type"=observation]
. Observa que entrecomillamos el tipo de filtro porque contiene un carácter no alfabético (:
).área
. Como sabemos que la torre está en una zona concreta (el río Inn), podemos utilizar esa información para hacer nuestra consulta.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![name=Inn]
como filtro en la sentencia area
.nodo
, junto con el filtro de tipo torre discutido en 3.node
por node(area)
. Esto le dice a overpass que sólo busque nodos dentro del área definida en la sentencia area.