Overpass es una WEB API para la realización de consultas a la base de datos de OpenStreetMap
Overpass API dispone de dos lenguajes de consultas:
En esta charla enseñaremos a utilizar Overpass QL
Cada consulta (query) está compuesta por una o más sentencias.
Cada sentencia termina en ; (punto y coma).
El conjunto de datos que se obtiene como resultado de cada sentencia se guarda en el conjunto por defecto, salvo que se designe otro conjunto con nombre para ello.
Estado de ejecución: Se compone del conjunto por defecto, otros conjuntos con nombre y una pila para los bloques de sentencias
Las sentencias se ejecutan una trás de otra.
El conjunto de datos que se obtiene como resultado de una sentencia pasa, como entrada de datos, a la siguiente sentencia.
Cada sentencia se ejecuta sobre el estado de ejecución, esto es, sobre el conjunto de datos que recibe como entrada
Las sentencias pueden ser de varios tipos:
node(40.4447, -3.7344, 40.4487, -3.7301); out;
Podemos definir el rectángulo (Bounding Box) de dos maneras:
En este portal se pueden probar sentencias y también traducirlas entre distintos formatos
http://overpass-api.de/query_form.html
node(805202229); out;
Podemos localizar el elemento en el mapa, luego activar la edición con el editor ID (Hay que ser usuario registrado de OpenStreetMap) y finálmente pinchar en el enlace Ver en openstreetmap
Tambiénpodemos acceder a la información de un elemento del que conocemos su ID desde dentro del propio mapa de OpenStreetMap
node({{bbox}})['highway'='bus_stop']; out;
node({{bbox}})['shop'='books']; out;
node({{bbox}})['aeroway'='aerodrome']; out;
Podemos poner como condición que el valor de dos o más etiquetas esté determinado, por ejemplo, para encontrar el Restaurante ‘El Albero‘ de Moralzarzal:
node(40.6631, -4.0142, 40.6927, -3.9468)["amenity"="restaurant"]
["name"="El Albero"];out;
También podríamos encontrarlo sin especificar el bounding box, solo por etiquetas:
node["amenity"="restaurant"]["name"="El Albero"];out;
Paradas de autobus de la línea H12: Gornal => Besòs-Verneda (4799268)
rel[ref="H12"];node(r);out;
Si se conoce el id:
rel(4799268);node(r);out;
Línea de autobus de la línea H12: Gornal => Besòs-Verneda (4799268)
rel(41.3282,2.0160,41.4454,2.2443)[ref="H12"];way(r);out;
Los Nodes de las ways anteriores:
rel(41.3282,2.0160,41.4454,2.2443)[ref="H12"];way(r);node(w);out;
Ways incluyendo los Nodes:
rel(41.3282,2.0160,41.4454,2.2443)[ref="H12"];way(r);(._;>;);out;
La carretera M-607:
way(40.6573,-3.9610,40.7169,-3.7423)["ref"="M-607"];(._;>;);out;
Todos los ways con la etiqueta building=house de una determinada zona:
way(40.67441, -3.97063, 40.67812, -3.96221)["building"="house"];(._;>;);out;
Todas las ways de Madrid referenciadas en la relación de ref=M-40:
relation(40.3091,-3.7707,40.5420,-3.5702)["ref"="M-40"];way(r);out;
La misma petición, pero con sus Nodes
relation(40.3091,-3.7707,40.5420,-3.5702)["ref"="M-40"];way(r);(._;>;); out;
Nodes a una distancia de un punto de coordenadas conocidas:
node(around:100.0,41.9837,2.8243);out;
Farmacias a menos de un kilómetro de la Plaza del Carmen, en Madrid:
node(around:1000.0,40.41876,-3.70331)["amenity"="pharmacy"];out;
Bares a menos de 500 metros de la iglesia de Moralzarzal (por Id):
way(132527765);node(around:500)["amenity"="bar"];out;
Se encierran entre paréntesis las dos sentencias cuyos conjuntos de salidas queremos unir, separadas por punto y coma
(node({{bbox}})['aeroway'='aerodrome'] ;
way({{bbox}})['aeroway'='aerodrome'];); (._;>;); out;
La siguiente sentencia solicita los Nodes con ‘amenity=restaurant’ o ‘amenity=pub’ del barrio de Salamanca, en Madrid:
(node(40.4232,-3.6918,40.4378,-3.6793)["amenity"="bar"];
node(40.4232,-3.6918,40.4378,-3.6793)["amenity"="pub"];);out;
Otro ejemplo sería 'todos los edificios y piscinas de una zona':
(way(40.67441, -3.97063, 40.67812, -3.96221)["building"="house"];
way(40.67441, -3.97063, 40.67812, -3.96221)["leisure"="swimming_pool"]);
(._;>;);out;
<node id="25496583" lat="51.5173639" lon="-0.140043" version="1" changeset="203496"
user="80n" uid="1238" visible="true" timestamp="2007-01-28T11:40:26Z">
<tag k="highway" v="traffic_signals"/>
</node>
<way id="5090250" visible="true" timestamp="2009-01-19T19:07:25Z" version="8"
changeset="816806" user="Blumpsy" uid="64226">
<nd ref="822403"/>
<nd ref="21533912"/>
<nd ref="821601"/>
<nd ref="21533910"/>
<nd ref="135791608"/>
<nd ref="333725784"/>
<nd ref="333725781"/>
<nd ref="823771"/>
<tag k="highway" v="residential"/>
<tag k="name" v="Clipstone Street"/>
<tag k="oneway" v="yes"/>
</way>
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.