Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix overpass URL and support for Note 12+ #54

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions content/de/index.md

This file was deleted.

2 changes: 1 addition & 1 deletion content/en/exercises/intro/3.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ code: |
out;
instructions: |
1. Seems that we weren’t specific enough! However, we do know that Bob is next to the tallest tree in the area, let’s use that info to search for him! Click on the nodes on the map view and find the tallest tree!
2. You can combine filters by just typing them in next to the query statement just like what we did with `[natural=tree`]. Remember to put the second filter before the semicolon!
2. You can combine filters by just typing them in next to the query statement just like what we did with `[natural=tree]`. Remember to put the second filter before the semicolon!
hint: Try testing for the height of the tallest tree. Combine the filters by putting them next to each other.
answer: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)
Expand Down
2 changes: 1 addition & 1 deletion content/en/exercises/intro/4.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---
w---
date: "2015-07-04T16:35:50+08:00"
title: "Filter by Tag III?"
type: "exercise"
Expand Down
4 changes: 2 additions & 2 deletions content/en/exercises/intro/6.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ code: |
out;
instructions: |
1. Our `around` filter gave us a bunch of nodes around our first node, but there are no restaurants in it, and there are too many nodes!
2. Increase our around distance a bit more. Bob says he sees a restaurant about a 150 meters distance from him, so go ahead and use that as a distance filter for around.
2. Increase our around distance a bit more. Bob says he sees a restaurant about a 450 meters distance from him, so go ahead and use that as a distance filter for around.
3. Use a filter by tag to query for restaurants. You can use the tag `[amenity=restaurant]` for this.
4. Remember that we are filtering our data from our around set, so make sure to add the filter tag after our around filter.
hint: Remember to make a new query statement! Don't just add around to the first line.
answer: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

---
Expand Down
4 changes: 2 additions & 2 deletions content/en/exercises/intro/7.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ type: "exercise"
section: "exercise"
code: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

area;
Expand All @@ -22,7 +22,7 @@ instructions: |
hint: Remember to use an `area` query!
answer: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

area[name=Inn];
Expand Down
8 changes: 4 additions & 4 deletions content/en/exercises/intro/8.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,25 @@ type: "exercise"
section: "exercise"
code: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

area[name=Inn];
node(area)["tower:type"=observation];
out;

instructions: |
1. We need to find Bob’s bicycle, which he knows is about 100 meters away from the restaurant. We will have to use the `around` statement again.
1. We need to find Bob’s bicycle, which he knows is about 120 meters away from the restaurant. We will have to use the `around` statement again.
2. Bicycle parking areas are tagged as `[amenity=bicycle_parking]`. You should now be comfortable knowing what statement we need to use.
3. Note that our statement uses `around`, so make sure to place the statement properly so that it finds the parking space around _the restaurant_ instead of _the tower_. Remember that Overpass has the concept of ‘flow’. Where do you think you should put our _around_ statement?
4. Once you’ve added it, make sure to also add `out;` after your statement to print the bicycle parking node.
hint: The around query relies on the result set (in this case the result of the query above it)
answer: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

node(around:100)[amenity=bicycle_parking];
node(around:120)[amenity=bicycle_parking];
out;

area[name=Inn];
Expand Down
6 changes: 3 additions & 3 deletions content/en/exercises/intro/9.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ type: "exercise"
section: "exercise"
code: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676)[natural=tree][height=20];
node(around:150)[amenity=restaurant];
node(around:450)[amenity=restaurant];
out;

node(around:100)[amenity=bicycle_parking];
node(around:120)[amenity=bicycle_parking];
out;

area[name=Inn];
Expand All @@ -31,6 +31,6 @@ Bob carefully examines the bike in the parking space, trying to find his bike.

Now that Bob is on his bike, he now needs to go the observatory to find his wallet. Since we already know Bob has a bad sense of direction (I mean, he did get lost!) it’d be best to show Bob the main road he needs to take to reach the observatory.

If you look at the map viewer closely, you will see that between the bicycle parking spot and the observatory tower is the main road "Innstraße". as the main road Bob needs to take in order to reach the observatory. How can we possibly show this? By using `node`, and having `[name="Innstraße"]` as a filter perhaps?
If you look at the map viewer closely, you will see that between the bicycle parking spot and the observatory tower is the main road "Innstraße". As the main road Bob needs to take in order to reach the observatory. How can we possibly show this? By using `node`, and having `[name="Innstraße"]` as a filter perhaps?

Not quite. Remember that `node`s are __strictly__ for _points_ of interest. They can’t map roads, as that doesn’t really exist as a single point.
13 changes: 13 additions & 0 deletions content/es/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
+++
Description = ""
date = 2015-05-06T11:09:35Z
title = "Overpass API es una API de sólo lectura altamente optimizada, creada para recopilar datos de mapas OSM."
type = "front"
layout = "single"
ref = "Documentación del API"
learn = "Comienza tu viaje por Overpass"
learnsub = "¡Aprende Overpass con nuestros divertidos ejercicios interactivos!"
github = "Ver en github"
+++

Tanto si eres un completo principiante como un desarrollador experimentado, encontrarás en LearnOverpass el recurso más completo para aprender a utilizar la API Overpass. En poco tiempo, aprenderás a utilizar el potente lenguaje de consulta y recopilar datos de diversos criterios: desde la ubicación, los tipos de objetos, las propiedades de las etiquetas hasta las proximidades.
32 changes: 32 additions & 0 deletions content/es/exercises/intro/1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
date: "2015-07-01T16:35:50+08:00"
title: "Introducción"
type: "exercise"
code: |
node;
out;
instructions: |
1. `node` consulta un nodo, pero en realidad no decimos QUÉ nodos. ¿Cómo los buscamos?
2. Hay muchas formas de hacerlo, pero para este ejemplo, vamos a realizar la consulta utilizando la posición __latitude__ y __longitude__. Nuestro amigo "Bob" está en algún lugar de Europa con un GPS, lo que nos da su ubicación aproximada: está en algún lugar entre estas posiciones aproximadas:
- south = 48.5657094
- west = 13.4490548
- north = 48.5662416
- east = 13.4501676
3. Utiliza esta posición para buscar la posición aproximada de Bob. Añádelas en un formato tal que la primera línea se convierta en `node(sur, oeste, norte, este);`, donde sur, etc, es la coordenada específica dada por el GPS de Bob más arriba. No olvides el punto y coma al final.
4. Una vez hecho esto, verás que en la segunda línea aparece la palabra `out;`. Puedes ignorarla por ahora.
5. Pulsa el botón verde "Run Query" (Ejecutar consulta).
hint: Asegúrate de que su consulta tiene el formato t `node(south, west, north, east)`
answer: |
node(48.5657094, 13.4490548, 48.5662416, 13.4501676);
out;

---
¡Hola y bienvenido a LearnOverpass!

La API Overpass es una potente API que te permite consultar datos de OpenStreetMap. Puedes encontrar diferentes lugares, rutas a lugares, y todo bajo el sol, ¡literalmente! Puedes "hablar" con ella y solicitar datos para tu uso específico, utilizando su propio lenguaje, el "Lenguaje de consulta de Overpass" (QL).

Lo que ves a la derecha es un editor de texto donde puedes escribir tus comandos QL. ¿Ves la sentencia con la palabra `nodo`? Se trata de una instrucción QL que pide (consulta) a la API un único punto de interés (un nodo) en OpenStreetMap.

El mapa del mundo debajo del editor es una visualización de los datos que recibe tu sentencia. Ahora mismo no contiene nada, porque nuestra sentencia está incompleta - aunque _consultamos un nodo_ con la primera línea, no sabe qué o cuál es el nodo que nos interesa, ¡así que la API no sabe qué hacer con él!

¡Cambiemos eso!
27 changes: 27 additions & 0 deletions content/es/exercises/intro/10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
date: "2015-07-10T16:35:50+08:00"
title: "Way como Area"
type: "exercise"
section: "exercise"
code: |
way[name="Innstraße"];
out geom;
instructions: |
1. Sólo tenemos que buscar vías en Passau. Las vías pueden filtrarse por zonas del mismo modo que los nodos.
2. Busca un `area` que tenga la clave `name` y el valor `Passau`. Recuerda que nuestra área debe colocarse antes de nuestra consulta de camino, de lo contrario el `area` no _fluirá_ al filtro de camino.
3. Añade el filtro de área en nuestra sentencia way. Recuerda que los nodos se filtran por área con la forma `node(area);`.
hint: ¡Utiliza el filtro de área en el camino existente!
answer: |
area[name=Passau];
way(area)[name="Innstraße"];
out geom;

---

"Ahm, ¿estás seguro de que esto está bien?" Dice Bob al ver las diferentes formas. ¡oh oh!

Hemos conseguido buscar vías con el nombre "Innstraße", pero desgraciadamente parece que hay bastantes vías que se llaman igual.

Esto es obviamente inaceptable - Overpass nos mostró todas las vías llamadas "Innstraße" alrededor del mundo, pero sólo estamos interesados en la "Innstraße" cerca de Bob.

Como sabemos que Bob está en _Passau_, lo que podemos hacer es buscar las vías que sólo están en _Passau_. De nuevo, utilizamos la consulta `area` para hacerlo.
36 changes: 36 additions & 0 deletions content/es/exercises/intro/11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
date: "2015-07-11T16:35:50+08:00"
title: "Modificadores Out"
type: "exercise"
section: "exercise"
code: |
area[name=Passau];
way(area)[name="Innstraße"];
out geom;
instructions: |
1. Modifica la consulta existente para que utilice una sentencia `out` eliminando el modificador `geom`. Ten cuidado de no eliminar el punto y coma.
hint: Elimina geom del código de muestra.
answer: |
area[name=Passau];
way(area)[name="Innstraße"];
out;

---

¡Increíblemente buen trabajo!

"¡Gracias!" Dijo Bob mientras se subía a su moto. "¡Entonces seguiré este camino hasta el observatorio!".

Los dos últimos ejercicios introdujeron bastantes cosas, en concreto, `way` y el modificador `out geom`.

Un `way` es otro elemento OSM (como `node`) que describe una característica lineal o área. Por ahora, acepta que una "vía" también puede definir áreas. La información relevante que necesitamos aprender es que una "vía" se utiliza normalmente para definir carreteras, arroyos y autopistas, entre otras cosas. Si necesitas buscar una ruta, o algo que crees que no puede ser definido como un simple "punto", lo más probable es que sea un elemento "camino".

En OSM, las vías se representan simplemente como un conjunto de puntos. Si lo piensas, podemos usar un par de puntos para definir una línea (que puede usarse para definir rutas).

Dado que las vías se representan internamente como un conjunto de puntos, una vía es en realidad una lista ordenada de nodos. Impresionante, ¿verdad? Debido a esto, podemos consultar los nodos individuales de una vía, aunque no es algo que vayamos a hacer por ahora.

Te habrás dado cuenta de que hemos utilizado `out geom;` en lugar de nuestra habitual sentencia `out` en nuestra última consulta. ¿Por qué?

Para entenderlo, hablemos primero de `out`. La sentencia `out` es una llamada _action_, la única _action_ en el Overpass QL. Lo que hace es tomar el conjunto de entrada (el conjunto de resultados/datos que le precede) e `imprimirlo`, para que podamos utilizar los datos (que vemos en el visor de mapas).

Hasta ahora, sólo hemos utilizado la sentencia `out`. ¿Qué pasaría si utilizáramos `out` en lugar de `out geom` en nuestra última consulta? Intentémoslo.
28 changes: 28 additions & 0 deletions content/es/exercises/intro/12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
date: "2015-07-12T16:35:50+08:00"
title: "Datos del modificador Out"
type: "exercise"
section: "exercise"
code: |
area[name=Passau];
way(area)[name="Innstraße"];
out;
instructions: |
1. Volvemos a modificar nuestra consulta para incluir el modificador `geom`, de forma que nuestra consulta diga `out geom;`, y observamos qué ocurre con los datos.
hint: Vuelve a añadir geom al código de ejemplo.
answer: |
area[name=Passau];
way(area)[name="Innstraße"];
out geom;

---

"¡Uaaghhh! Qué le ha pasado a mi mapa!" Bob exclama al ver el mapa vacío.

Como ves, al usar una sentencia `out` se producía un mapa vacío.

Verás, nuestra sentencia `out` _imprime_ los datos que recibe, eso si puede. Una vía sólo lleva una referencia a la lista de nodos que la componen - prueba a hacer clic en el botón `data` de la parte superior derecha de la vista del mapa. Esto te mostrará los 'datos' en bruto que devuelve el paso elevado. Adelante, pruébalo.

Vaya. Puede parecer un poco complicado, pero lo básico que tenemos que mirar aquí es que el camino, tiene una lista de nodos (nd). Así que ya ves, en realidad sólo consultamos por el "camino", específicamente, la lista de nodos que lo componen.

Vamos a cambiar nuestra consulta de nuevo para ver la ruta.
36 changes: 36 additions & 0 deletions content/es/exercises/intro/13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
date: "2015-07-13T16:35:50+08:00"
title: "Around II"
type: "exercise"
section: "exercise"
code: |
area[name=Inn];
node(area)["tower:type"=observation];
out;
instructions: |
1. Vaya, parece que Bob sigue teniendo problemas. Probablemente se llevó el dinero de su cartera mientras nadaba de vuelta a la orilla. Por suerte, sus tarjetas de cajero automático siguen intactas, así que Bob sólo tiene que sacar dinero de un cajero cercano.
2. Bob dice que vio un cajero automático de camino a la torre. Calcula que el cajero está a 150 m, más o menos.
3. A partir de la quinta línea en blanco, crea una nueva consulta `node around` para imprimir los atm. Los ATMs son de tipo clave `amenity`, y toma el valor clave `atm`.
4. Asegúrate de imprimir el conjunto resultante con `out;`.
hint: Vuelve a utilizar una consulta `around`
answer: |
area[name=Inn];
node(area)["tower:type"=observation];
out;

node(around:150)[amenity=atm];
out;

---

"¡Gracias!" dice Bob mientras buscamos la ruta de vuelta. Él la sigue hasta llegar a la torre del observatorio. Una vez en la orilla del río, decide dejar la bici y ¡nadar hasta el observatorio!

Al cabo de unos minutos, Bob regresa temblando y mojado.

"Brrrr... ¡el agua está fría!" exclama Bob, cuando, de la nada, aparece el camarero del restaurante, todo vestido de blanco. De hecho, ¡ha seguido a Bob todo el camino!

"Señor" dice el camarero, jadeando "¡Todavía necesito esos 25 euros!". "Sí, seguro" dice Bob mientras saca su cartera mojada del bolsillo.

"Oh" una expresión inexpresiva sale de él. "¡Lo siento, parece que he perdido todo mi dinero nadando de vuelta aquí!".

Camarero: *Facepalm*
31 changes: 31 additions & 0 deletions content/es/exercises/intro/14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
date: "2015-07-14T16:35:50+08:00"
title: "Polígono Way cerrado"
type: "exercise"
section: "exercise"
code: |
area[name=Inn];
node(area)["tower:type"=observation];
node(around:150)[amenity=atm];
out;
instructions: |
1. Como puedes ver, las primeras cuatro líneas de nuestra consulta sólo buscan el cajero automático. Como vamos a buscar tanto el cajero automático como el edificio, deja las cuatro líneas intactas y crea unas líneas en blanco a continuación, donde escribiremos la consulta para el edificio.
2. Como ya hemos dicho, las "vías", además de representar rutas y carreteras, también pueden representar "áreas". Un ejemplo concreto es un edificio, que es una estructura poligonal cerrada definida como una serie de puntos (que podemos representar como un camino).
3. Así que para buscar el edificio, tendríamos que hacer una consulta `way`. Escribe una consulta `way`, filtrándola para que su nombre sea el que veas en el visor de mapas.
4. Como puede haber otros edificios que se llamen así, filtremos también por la dirección. Añade `["addr:city"=Passau]` como filtro adicional para nuestra consulta.
5. Una vez consultado el edificio con éxito, nos quedaría imprimirlo para el visor de mapas. Hazlo usando `out` con el modificador que hemos usado hasta ahora para las formas.
hint: Utiliza una consulta de forma filtrada por el nombre del edificio
answer: |
area[name=Inn];
node(area)["tower:type"=observation];
node(around:150)[amenity=atm];
out;

way["addr:city"=Passau][name="Wirtschaftswissenschaften (WIWI)"];
out geom;

---

"Hmm, no lo veo desde el observatorio, pero sí desde el mapa de consulta del paso elevado", dice Bob. Efectivamente, el cajero está en el lado opuesto de un edificio (el polígono parduzco del visor de mapas).

Sigamos adelante y consultemos tanto el cajero como el edificio, para que Bob pueda tener una mejor idea de dónde está el cajero.
Loading