Die Abfrage liefert alle Bänke in dem angezeigten Kartenbereich zurück. Dieser wird als bbox (bounding box) bezeichnet.
In der Abfrage wurde ein Timeout definiert, da eine entsprechende Abfrage nicht lange dauert. Dauert die Abfrage länger wurde ein zu großer Bereich ausgewählt und die Abfrage wird nach dieser Zeit abgebrochen
Such-Tags: #timeout, #bbox, #out
try it yourself in overpass-turbo
// timeout wird in Sekunden angegeben - max. Laufdauer der Abfrage, sonst wird diese automatisch abgebrochen[timeout:20];// Die bbox wird mit "{{bbox}}" definiert und reprässentiert den Suchbereich. Die runden Klammern gehören dazu.node[amenity=bench]({{bbox}});//Die generierten Ergebnisse müssen ausdrücklich ausgegeben werden. Sonst erhält man eine leere Ergebnismenge - also nix.outmeta;
Leerzeichen, Sonderzeichen und Umlaute
Sobald Bezeichnungen Leerzeichen, Sonderzeichen oder Umlaute enthalten müssen diese in Anführungszeichen geschrieben werden.
Zulässig sind auch einfach Hochkommas
Achtung! Da kein Gebiet definiert wurde erfolgt die Abfrage global auf dem Gesamten Datenbestand von OSM!
[timeout:20];//Eine Abfrage über die gesamten OSM-Daten geht, da es in diesem Fall nur ein Ergebnis gibt...node[place=city][name="Düsseldorf"];//Es geht auch mit einfachen Hochkommas//node[place=city][name='Düsseldorf'];outmeta;
Suchbereich Düsseldorf - besser als bbox...
Anstatt im aktuell dargestellten Kartenauschschnitt zu suchen, kann der Bereich definiert werden.
Achtung: Bei der Suche nach Bezeichnungen die es in der OSM-Datenbank(weltweit) mehrfach gibt. Wie damit umgegangen wird siehe weiter unten.
Hinweis: Das Ergebnis einer Gebietsabfrage ist eine Fläche (area). Flächen stellen eine 4. Objekttyp neben node, way und relation dar.
[timeout:25];//Anführungszeichen sind hier nicht zwingend erforderlich{{geocodeArea:Düsseldorf}}->.searchArea;//Die gefundene Fläche (area) wird in eine Variable geschriebennode["amenity"="bench"](area.searchArea);//In der Fläche wird nach nodes gesucht die zum Kriterium passenoutmeta;
Abfrage nach Bänken mit Suchkriterien
Bänke die gewisse Kriterien erfüllen. Die Kriterien werden UND-Verknüpft
Anstatt nach Schlüssel und Wert kann auch nur nach einem Schlüssel (mit beliebigen Wert) gesucht werden. Die Reihenfolge der Suchkriterien ist beliebig.
Such-Tags: #and, #und
[timeout:25];{{geocodeArea:Wersten}}->.searchArea;//Alle Bänke im Suchbereich... UND mit Lehe UND mit einer Material-Angabe//Ohne Angabe von einem Wert werden alle Objekte mit dem Schlüssel genommennode(area.searchArea)[amenity=bench][backrest=yes][material];//Oder kompakt in einer Zeile...//node[amenity=bench][backrest=yes][material](area.searchArea);outmeta;
Mehrere Dinge in eine Abfrage packen
Werden alle Ergebnisse der einzelnen Abfragen benötigt, müssen diese in rude Klammern gepackt werden.
Der Mechanismus wird als "union", als die Vereinigung der Mengen bezeichnet.
Und nicht das Semikolon nach der Anweisung vergessen.
Such-Tags: #union
//Mithilfe der Einklammerung werden die Ergebnisse der Einzelabfragen zusammengefaßt.[timeout:25];{{geocodeArea:Wersten}}->.searchArea;(node[amenity=bench](area.searchArea);node[amenity=waste_basket](area.searchArea);node[amenity=bicycle_parking](area.searchArea);way[amenity=bicycle_parking](area.searchArea););outmeta;
Alle Schulen, alle Objekttypen
Betroffen können alle 3 Objekttypen sein. Daher müssen alle abgefragt werden.
Die einzelnen Abfrageergebnisse müssen zusammengefaßt werden.
Such-Tags: #union
//Zu beachten: In Frage kommen nodes, ways und relations. Es müssen daher alle 3 Typen abgefragt werden.{{geocodeArea:Düsseldorf}}->.searchArea;//Wichtig: Über die Klammerung werden die Ergebnisse der einzelnen Abfragen zusammengefaßt. Anderenfalls bleibt nur das Ergebnis der letzten Abfrage übrig!(node[amenity=school](area.searchArea);way[amenity=school](area.searchArea);rel[amenity=school](area.searchArea););//Jede Anweisung muss mit mit einem ";" abgeschlossen werden.outgeom;
Alle Schulen, alle Objekttypen, aber viel einfacher
Wie in der Abfrage oben wird nach allen Schulen abgefragt
Über die "spezial" Objekt "nwr", "nw", "wr" und "nr" können gezielt alle entsprechenden Objekttypen direkt abgefragt werden.
Such-Tags: #nwr
{{geocodeArea:Düsseldorf}}->.searchArea;nwr(area.searchArea)[amenity=school];//NodesWaysRels - alles in einem//nw(area.searchArea)[amenity=school]; //NodesWays - Knoten und Wege//wr(area.searchArea)[amenity=school]; //WaysRels - Wege und Relationen//nr(area.searchArea)[amenity=school]; //NodesRels - Knoten und Relationenoutgeom;
Einfach, aber etwas mehr in die Tiefe gehend....
Suche in Mühlhausen - in welchem Mühlhausen denn???
Es gibt Orte / Gebiets-Bezeichnungen, die sind eindeutig und die gibt es auf der Welt nur einmal
Die Suche nach "Berlin" liefert im Moment die Deutsche Hauptstadt zurück. Es gibt jedoch auch mehrere Berlins in den USA. Es ist nicht garantiert, dass immer der "wichtigere" Ort gewinnt.
Und dann gibt es Orte, die es dutzendfach gibt. Da hilft nur genauer Definieren!
Such-Tags: #geocdeArea
{{geocodeArea:Mühlhausen}}->.searchArea;//In Thüringen{{geocodeArea:Mühlhausen,Baden-Württemberg}}->.searchArea;//Eine Gemeinde in BW{{geocodeArea:Mühlhausen,Stuttgart}}->.searchArea;//Stadtteil von Stuttgart{{geocodeArea:Mühlhausen,Stuttgart,Baden-Württemberg,Deutschland}}->.searchArea;// Würde auch gehen...node(area.searchArea)[amenity=bench];//Beispiel mit Berlin//{{geocodeArea:Berlin}} ->.searchArea;//{{geocodeArea:Berlin, Vereinigte Staaten von Amerika}} ->.searchArea;//node(area.searchArea)[amenity=bench];//PS: Das Berlin, USA ist ein Waldgebiet und hat keine Bänke... Aber es gibt ja mehrere Berlins in den USA...outmeta;
Die Suche nach OSM-Benutzer einschränken
Wenn man geziehlt nach Objekten suchen will die durch einen OSM-Benutzer bearbeitet wurden (in irgend einer Version vom Objekt)
Such-Tags: #user, #uid
{{geocodeArea:Düsseldorf}}->.searchArea;nwr[amenity=bicycle_parking](area.searchArea)(user:EinKonstanzer);//Anstatt dem Namen würde auch die ID gehen wenn man diese hat... -> EinKonstanzer = 128720//nwr[amenity=bicycle_parking](area.searchArea) (uid:128720);outgeom;
Mit Variablen arbeiten
Variablen können beliebige Namen gegeben werden. Wichtig ist der Punkt (.) am Anfang. Ohne diesen geht nichts!
Ein Zuordnung von Ergebnissen zu einer Variable erfolgt durch "->".
Wird keine Variable angegeben wird automatisch mit der Variablen "_" (Unterstrich) gearbeitet. Auf diese Variable kann auch jederzeit zugegriffen werden.
Such-Tags: #Variablen, #Unterstrich, #union
//Die Fläche die der geocodeArea liefert muss nicht zwingend in eine Variable geschrieben werden... {{geocodeArea:Wersten}};//Der Unterstrich ist die interne Standardvariable.node[amenity=bicycle_parking](area._)->.Alle_nodes;way[amenity=bicycle_parking](area._)->.Alle_ways;rel[amenity=bicycle_parking](area._)->.Alle_rels;(//So werden die blanken Variablen benutzt..Alle_nodes;.Alle_ways;.Alle_rels;)->.Ergebnis;// Man kann auch genau definieren was ausgegeben werden soll..Ergebnisoutgeom;
Abfrage über mehrere Gebiete
Die Zusammenfassung funktioniert auch für Gebiete die über den "geocodeArea" ermittelt werden.
Such-Tags: #union, #geocodeArea
try it yourself in overpass-turbo
[timeout:20];({{geocodeArea:Wersten}};//Um böse Überraschungen zu vermeiden sollten Gebiete/Orte genauer eingegrenzt werden{{geocodeArea:Holthausen,Düsseldorf}};{{geocodeArea:Himmelgeist}};{{geocodeArea:Itter,Düsseldorf}};)->.Suchbereich;node(area.Suchbereich)[amenity=bench];outmeta;
Erweiterte Suchkriterien
Eine Abfrage muss immer einen Key enthalten! Ist der Wert/Tag nicht relevant, kann dieser weggelassen werden.
Der gleich-Operator (=) ist der Trenner zwischen Key und Tag
Der gleich-Operator erwartet, das die Suche und das Ergebnis exakt übereinstimmen.
[timeout:25];{{geocodeArea:Wersten}}->.searchArea;//Eine Einfach Und-Verknüpfung von Kriterien//Wird der Tag weggelassen, wird nur geschaut ob das Element einen entsprechen Schlüssel enthält.node(area.searchArea)[amenity=bench][backrest=yes][material];outmeta;
So ungefähr / enthält folgende Zeichen
Ab jetzt ist nicht mehr das Gleichzeichen sondern die Tile (~) der richtig Operator.
Der Suchstring muss irgendwo im Text vorkommen. Egal an welcher Stelle.
Such-Tags: #Tilde, #ungefähr
{{geocodeArea:Wersten}}->.searchArea;//Liefert alle Objekt die im Namen "Wersten" enthalten. Wo genau sich das Gesuchte im String befindet ist dabei völlig egal.nwr(area.searchArea)[name~Wersten];outgeom;
Alles das mit "Düsseldorf" beginnt oder endet
Wenn das Gesuchte mit bestimmten Zeichen beginnen oder enden soll.
Alle weiteren Zeichen am Ende oder am Anfang werden ignoriert
Da es sich bei dem Dächen oder Dollarzeichen um Steuerzeichen handelt muss der Ausdruck in Anführungszeichen gepackt werden
Such-Tags: #Tilde, #Anfang, #Ende
[timeout:30];{{geocodeArea:Düsseldorf}}->.DD;//Alles was mit Düsseldorf Anfängt...: Anführungszeichen + Tilde & Dächennwr(area.DD)[name~"^Düsseldorf"];//Oder alles was mit Düsseldorf Aufhört...: Anführungszeichen + Tilde & Dollar-Zeichen//nwr(area.DD)[name~"Düsseldorf$"];outgeom;
Beliebige Schlüssel mit einem bestimmten Wert
Es wird nach belieben Ojekten, mit beliebigen Schlüsseln gesucht, die jedoch einen speziellen Wert haben
Wie der Tag in den vorhergehenden Beispielen wird jetzt auch der Schlüssel wie ein String behandelt und beginnt mit der Tilde
Eine beliebige Zeichenfolge wird durch ".*" reprässentiert.
Für den Schlüssel muss zwingend die Tile als Operator genommen werden. Damit man exakt den Suchbegriff erhält, muss signalisiert wie der Schlüssel anfängt und wie er aufhören muss.
Such-Tags: #Tilde, #Anfang, #Ende, #Schlüssel
[timeout:20];{{geocodeArea:Düsseldorf}}->.DD;// Es werden nun alle Schlüssel aller Objekte in Düsseldorf überprüft. Objekte müssen einen Schlüssel haben dessen Wert exakt "Liebfrauenstraße" ist.nwr(area.DD)[~".*"~"^Liebfrauenstraße$"];outgeom;
Alles, aber 'nicht' oder 'ungleich'
Durch das Ausrufezeichen wird der Ausdruck negiert.
Aus gleich wird ungleich und aus Ja (ist der Schlüssel "water" vorhanden) wird ein Nein
Such-Tags: #ungleich, #nicht
[timeout:20];{{geocodeArea:Düsseldorf}}->.DD;nwr(area.DD)[natural=water][water!=pond];//water *ungleich* pond//nwr(area.DD)[natural=water][!water]; // *kein* water - es ist kein entsprechender Schlüssel vorhandenoutgeom;
Einfache Oder-Verknüpfung von Suchkriterien
Die Suchkriterien sind dazu durch das Pipe-Zeichen von einander zu getrennt
Zu beachten ist, daß als Operator das Tile-Zeichen benutzt werden muß.
Es muß dabei beachtet werden, daß der Operator mit dem Tildezeichen automatisch nach Teilbezeichnungen sucht und nicht exakt nach der Bezeichnung selbst.
Such-Tags: #or, #oder, #Tilde
try it yourself in overpass-turbo
[timeout:20];{{geocodeArea:Düsseldorf}}->.DD;//Es gibt 2 Stadtteil mit der Bezeichnung "bilk" im Namen. Es werden beide ausgegeben!nwr(area.DD)[admin_level=10][name~"Wersten|bilk|Flehe"];outgeom;
//Es werden die Wege der Relationen ermittelt und in Variablen geschrieben//Mit "way.Wege1.Wege2" wird die Schnittmenge gebildet.{{geocodeArea:Düsseldorf}}->.DD;rel(area.DD)[name="Radverkehrsnetz NRW, Stadt Düsseldorf"]->.Rel1;way(r.Rel1)->.Wege1;rel(area.DD)[name="Lokales Radverkehrsnetz Düsseldorf"]->.Rel2;way(r.Rel2)->.Wege2;way.Wege1.Wege2;outmeta;>;outskel;
Eine Teilmenge ermitteln, und dann innerhalb der Teilmenge suchen
Alle Spielplätze welche sich in Parks von Düsseldorf befinden:
//Fragestellung: Alle Spielplätze der Stadt, aber nur die, die in Parks sind{{geocodeArea:Düsseldorf}}->.searchArea;//Ergibt die Fläche von Düsseldorfwr[leisure=park](area.searchArea);//Alle Parks (nur als way und rel)map_to_area;//Zu den ways und rels die Flächen ermittelnnwr(area._)[leisure=playground];// Alle Spielplätze innerhalb der Flächen(._;>;);//Relationen und Wege und natürlich die untergeordneten Elementeoutmeta;
Aktuelle PLZ ermitteln
//Fragestellung: Gib mir die PLZ vom aktuellen Ort.//Geht nur wenn Postleitzahlen als Relationen erfaßt sind wie in Deutschland//a) Konkrete node als Eingabenode(461989176);//b) Ein Ausschnitt (bbox) -> Es werden dann alle nodes darin ermittelt//node(51.238,6.781,51.239,6.782);is_in->.AlleAreas;//Liefert alle areas (das meiste naütrlich Relationen) innerhalb sich die Eingabe-Menge befindetrel(pivot.AlleAreas)[boundary=postal_code];//Flächen sind schön... Alle Basis-Relationen der Flächen. Und natürlich nur die PLZ-Gebiete. Hoffentlich nur eines!outmeta;>;outskel;
Wo fehlen noch Mülleimer?
//Fragestellung: Im Umkreis von 10m um eine Bank sollte es auch einen Mülleimer haben. Wo fehlen noch Mülleimer?//Alle Mülleimer suchen//Alle Bänke finden die im Umkreis von 10m um einen Mülleimer sind//Alle Bänke suchen//Alle Bänke - Bänke mit Mülleimer = Bänke ohne Mülleimer im Kreis von 10m{{geocodeArea:Wersten}}->.Wersten;node(area.Wersten)[amenity=waste_basket];node(around:10)[amenity=bench]->.mit_muell;node(area.Wersten)[amenity=bench]->.alle;(.alle;-.mit_muell;);out;
Alle Stadtteile durch die die Umweltzone geht
{{geocodeArea:Düsseldorf}}->.DD;//Fragestellung: Welche Stadtteile werden von der Grenze der Umweltzone durchschnitten?//PS: Sehr interessantes Ergebnis. Auch Stadtteile von Neuss sind dabei... :-)rel(area.DD)[name="Umweltzone Düsseldorf"];>;//Es werden nur Linie und Knoten gebraucht.is_in;//Alle Flächen ermitteln die durch die Eingabe durchkreuzt werden.area._[admin_level=10];//Nur Stadtteil-Flächen(rel(pivot._);// Jetzt alle Basis-Relationen der Flächen>;// Zu den Relationen auch ways und nodes);outmeta;//Fertig ist die Kiste
OSM-Daten Stand 01.12.2012 - Mit Datums-Funktion
Das Gebäude - heute, damals und beide gleichzeitg (Stand heute und Stand damals)
Deklarationen im Kopf kennen keine Trennzeichen und müssen Abschließend mit Semikolon abgeschlossen werden
Es handelt sich hier um eine spezielle Ausgabeart indem nur die direkten Tags der Objekte ausgegeben werden.
Routen oder Grenzen bestehen häufig aus hunderten Teilobjekten die jedoch für eine reine Übersichtsliste nicht relevant sind.
Such-Tags: #tags, #Ausgabe, #Format
try it yourself in overpass-turbo
{{geocodeArea:Düsseldorf}}->.searchArea;//Alle Fahrradrouten mit einer Zuordnung zu Düsseldorfrel(area.searchArea)[route=bicycle];//Eine Auflistung der Routenrelationen ohne weitere Infos.outtags;
Nur die Summe der Objekte
Das Ergebnis soll nur eine Summe der einzelnen Objekte (nodes, ways, rels und areas) sein, die eine Abfrage geliefert hat.
Areas sind von Overpass automatisch generierte Objekte, die in OSM eine Fläche darstellen.
Such-Tags: #zählen, #count, #Anzahl
try it yourself in overpass-turbo
{{geocodeArea:Düsseldorf}}->.searchArea;//Alle Objekt mit amenity=schoolnwr(area.searchArea)[amenity=school];//Jetzt aber nur Summe der einzelnen Objekte. Also nodes, ways, rels und areasoutcount;
Ausgabe im CSV-Format
In der Kopfzeile der Abfrage wird das Ausgabeformat über "out:csv(...)" eingestellt. Die Deklaration beginnt mit "[" und endet mit "]";
Die Ausgabe-Spalten werden durch Komma getrennt. OSM-Basis-Felder (Datenbankstruktur von OSM) beginngen mit 2 Doppelpunkten. Alle weiteren Felder sind die gewünschten Schlüssel der OSM-Objekte zu denen die Tags ausgeben werden sollen.
Parameter-Blöcke innerhalb der CSV-Deklartation werden Semikolon (;) getrennt. Weitere Parameterblöcke sind optional.
Zu beachten ist, daß weitere Parameter der Kopfzeile einer Abfrage ohne Trennzeichen angefügt werden. Abschließend ist jedoch ein Semikolon (;) erforderlich.
//Daten im CSV-Format können leicht in Excel oder Calc bearbeitet werden[out:csv(::id,::type,::lon,::lat,"name","operator","cuisine","addr:postcode","addr:city","addr:street","addr:housenumber","contact:phone","contatct:fax","contact:website"," contact:email","opening_hours";true;";")][timeout:20];{{geocodeArea:Wersten}}->.We;//Gesucht wird nach allen Restaurants im Stadtteil Werstennwr(area.We)[amenity=restaurant];outmeta;
Buntes... mit MapCSS
Zwei Relationen mit unterschiedlichen Farben darstellen - (mit MapCSS)
{{geocodeArea:Düsseldorf}}->.DD;(rel(area.DD)[name="Radverkehrsnetz NRW, Stadt Düsseldorf"];>;rel(area.DD)[name="Lokales Radverkehrsnetz Düsseldorf"];>;);outmeta;{{style:relation[name=LokalesRadverkehrsnetzDüsseldorf]way[highway]{fill-color:red;fill-opacity:0.3;color:red;}relation[name=RadverkehrsnetzNRW,StadtDüsseldorf]way[highway]{fill-color:green;fill-opacity:0.3;color:darkgreen;}}}
Sonstiges
Alternativer Server
Soll die Overpass API von einem anderen Server benutzt werden...
Suchen nach bicycle=use_sidepath auf Wegen von Radrouten
try it yourself in overpass-turbo
{{geocodeArea:Düsseldorf}}->.DD;//{{geocodeArea:Nordrhein-Westfalen}} -> .DD;//{{geocodeArea:Deutschland}} -> .DD;//Alle Fahrradrouten-Relationen ermittelnrel(area.DD)[route=bicycle]->.Rels;(//Alle Wegabschnitte der entsprechenden Relation die das Kriterium enthalten.way(r.Rels)[bicycle=use_sidepath];//Basiselemente ermitteln (Knoten der Wege)>;);// Zählen und Ausgabe der Objekte geht in einem...outcount;outmeta;
Tags aller Fahrradrouten in Düsseldorf mit "Düsseldorf" im Namen
try it yourself in overpass-turbo
{{geocodeArea:Düsseldorf}}->.DD;//Typisch für Radrouten ist ein "route=bicycle"rel(area.DD)[route=bicycle][name~"Düsseldorf"];outtags;