DE:Overpass turbo/Wizard
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Anwendungen · Source code and issuesOverpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · mehr (Deutsch) · Development · Source code and issues · Web siteOverpass Ultra · Examples · Overpass Ultra extensions · MapLibre stylesheets · URL Params · mehr (Deutsch) · Source code and issues · Web site
"Overpass" ist ein System, um Informationen aus der OSM Datenbank zu extrahieren("schürfen" in der Datenbank). Der Overpass „Abfrage-Assistent“ (englisch "Query Wizard") hilft dir, dies einfacher zu erledigen.
Zweck
Um Informationen von einer Datenbank zu erhalten, stellt man Abfragen ("query") in einer Sprache, die der Computer versteht (die "Abfragesprache“ oder "query language").
Overpass-Abfragen zu schreiben setzt Wissen der Overpass Abfragesprache voraus und selbst dann kann es sich manchmal um recht mühsame, sich wiederholende Arbeit handeln. [[DE:Overpass turbo]Overpass turbo]s Query Wizard hilft dir, in dem er recht einfache, vom Menschen lesbare Suchausdrücke in funktionale Overpass-Abfragen konvertiert. Ein Beispiel: Um Trinkwasserbrunnen abzufragen, ist alles, was du zu tun hast, im Assistenten das entsprechende Such-Attribut amenity=drinking_water
einzugeben.
Eine Suche besteht aus individuellen Filterausdrücken, z. B. key=value
(für ein einfaches Such-Attribut) oder type:node
(um das Ergebnis auf Knoten (nodes) zu beschränken). Diese können mit logischen Operationen wie logisches Und and
bzw. logisches Oder or
kombiniert werden. Schau dir die folgenden Beispiele an:
tourism=hotel
amenity=drinking_water and type:node
(highway=primary or highway=secondary) and type:way
Standardmäßig sind die Daten, in denen gesucht wird, beschränkt auf den aktuell angezeigten Kartenausschnitt. Der Assistent versteht aber auch weitere Ortsangaben als Filterausdrücke. Dieses Beispiel zeigt, wie man in einer bestimmten Stadt sucht:
tourism=museum in Wien
Der Overpass Turbo Assistent verwendet eine vereinfachte Abfragesyntax, die immer in das Popup-Fenster des Assistenten eingegeben werden muss, um in eine neue Overpass QL Abfrage übersetzt zu werden. Die Syntax des Assistenten, die auf dieser Wiki-Seite beschrieben ist, ist nicht kompatibel mit Overpass QL. Kombiniere diese beiden also nicht miteinander! |
Intelligenter Assistent
Am einfachsten ist es, zur Suche Objektkategorien zu verwenden. So kann man beispielsweise die Begriffe Hotel
, "Drinking Water"
, Hospital
, etc. verwenden. Das funktioniert für alle Objekte, für die eine Vorlage im iD Editor definiert ist.
Attributsuche
Die Bedeutungen von "key" und "value" sind im Glossar erläutert.
Suchbegriff mit alternativem Begriff |
Beschreibung | Beispiel |
---|---|---|
key=value key==value |
Findet alle Objekte , die das spezifizierte Schlüssel-/Wert enthalten. | tourism=museum |
key:valuefragment | Findet alle Objekte, die ein Attribut mit dem angegebenen Schlüssel haben, dessen Wert die hinter dem : angegebene Zeichenkette enthalten.
|
cycleway:opp (findet cycleway=opposite, cycleway=opposite_track, cycleway=opposite_lane, etc.) |
key~regex key~=regex key like regex |
Findet alle Objekte, die ein Attribut mit dem Schlüssel key haben, dessen Wert mit dem Regulärer Ausdruck regex übereinstimmt. | |
~keyregex~regex ~keyregex~=regex |
Findet alle Objekte, die ein Attribut haben, dass mit dem regulären Ausdruck keyregex übereinstimmt und dessen Wert mit dem Regulären Ausdruck regex übereinstimmt. | ~building~".*" (Gibt alle Gebäude zurück, inklusive denen mit Lebenszyklus-Präfix) |
key=* key==* key is not null |
Findet alle Objekt die ein Attribut mit dem Schlüssel key haben. | |
key!=value key<>value |
Findet alle Objekte, die kein Attribut mit dem Schlüssel key und dem Wert value haben. | |
key!~regex key not like value |
Findet:
|
|
key!=* key<>* key is null |
Findet alle Objekte, die kein Attribut mit dem Schlüssel key haben. |
Falls eine Zeichenkette (z.B. der Wert value in den Suchbegriffen weiter oben) Leerzeichen oder andere spezielle Zeichen (wie Komma, Schrägstriche, Nicht-ASCII-Zeichen etc.) enthält, muss sie in Anführungszeichen eingeschlossen werden:
name="New York"
"addr:housenumber" = *
Regulärer Ausdrücke können entweder als einfache Zeichenkette oder mit Schrägstrichen als Trennzeichen eingegeben werden:
ref ~ "[0-9]+"
name ~ /street$/i
(der Modifikatori
führt dazu, dass eine Übereinstimmung nur gefunden wird, wenn auch die Groß-/Kleinschreibung übereinstimmt)image ~ /wikimedia\.commons/
(das Escape-Zeichen\
bewirkt, dass "." als Zeichen betrachtet wird)
Meta-Daten-Filter
Suchbegriff | Beschreibung | Beispiel |
---|---|---|
type:osm-type | Findet alle Objekte mit dem angegebenen type (node, way oder relation). | type:node
|
id:osm-id | Findet alle Objekte, die die angegebene osm-id besitzen. | id:263621287
|
user:osm-user | Findet alle Objekte, die zuletzt von dem Benutzer mit dem angegebenen username geändert wurden. | user:SomeonesUsername
|
uid:osm-uid | Findet alle Objekte, die zuletzt von einem Benutzer mit der angegebenen user-id geändert wurden. | |
newer:dat | Findet alle Objekte, die nach dem angegebenen Datum "date" (Datum und Uhrzeit – Format siehe unten) hinzugefügt oder geändert wurden. |
Im Suchbegriff newer
kann date angegeben werden als
- ein gewöhnliches Datum, angegeben als ISO 8601 Zeitangabe (z. .B.
"2013-11-24T19:01:00Z"
) oder - ein relatives Datum, das die relative Zeitspanne in der Vergangenheit angibt:
newer:1day
(wählt alles aus, was in den letzten 24 Stunden hinzugefügt oder verändert wurde)newer:"4 weeks"
( wählt alles aus, was in den letzten 4 Wochen hinzugefügt oder verändert wurde)
Erlaubte Zeiteinheiten sind: second(s), minute(s), hour(s), day(s), week(s), month(s) and year(s).
Beispiel: amenity=drinking_water and newer:"4 weeks"
Ortsangabe-Filter
Standardmäßig erzeugt der Assistent Abfragen, die nur innerhalb des aktuell angezeigten Kartenausschnitts suchen (mittels <bbox-query {{bbox}}/>
). Durch eine Ortsangabe am Ende der Suchabfrage kann an anderen Orten oder sogar global gesucht werden:
Suchbegriff | Beschreibung |
---|---|
in bbox | (Standardwert) Findet alle Objekte, die sich innerhalb des aktuell angezeigten Kartenausschnitts befinden. |
in place | Findet alle Objekte, die sich innerhalb eines Bereichs mit dem Namen place befinden. |
around place | Findet alle Objekte, die sich in der Nachbarschaft von einem Objekt mit dem Namen place befinden. |
global | Findet global alle Objekte ohne Beachtung einer Ortsangabe. Ergebnisse, die sich außerhalb des aktuellen Kartenausschnitts befinden, können durch Verwendung des Zoom to Data Steuerung angezeigt werden. |
Die place-Namen, die oben erwähnt wurden, werden zuerst durch eine Nominatim Suche geführt. Da bedeutet, dass man jeden Ortsnamen verwenden kann, den man auch in der OSM Sucheingabe verwenden kann, wie Städtenamen, POIs, Adressen, etc. (Aber Vorsicht - man sucht dann nach allen Orten mit diesem Namen. Es gibt aber Möglichkeiten, dies durch die Verwendung weiterer Suchbegriffe zu umgehen):
tourism=museum in Wien
amenity=restaurant around "1600 Pennsylvania Ave NW, Washington"
tourism=attraction around "Riesenrad, Wien"
Boolesche Operatoren
Operator mit Alternativen |
Beschreibung | Beispiel | |
---|---|---|---|
X or Y X || Y, X | Y |
Findet alle Objekte, die entweder die Bedingung X oder die Bedingung Y erfüllen. | highway=bus_stop or railway=platform
| |
X and Y X && Y, X & Y |
Findet alle Objekte, die die Bedingung X und die Bedingung Y erfüllen. | highway=bus_stop and shelter=yes
|
Alle Booleschen Operatoren können mit Klammern verwendet werden, um die Priorität der Operatoren zu verändern (nachfolgend werden zuerst die Oder-Bedingungen ausgewertet. Das Ergebnis fließt dann in die Und-Bedingung ein):
(highway=bus_stop or railway=platform) and shelter=yes
URL-Parameter an den Assistenten übergeben
Du kannst Links zu Overpass Turbo(en) erzeugen,die den Abfrageassistenten nutzen, um eine Abfrage zu erzeugen (die beim Seitenaufruf geladen und dem Benutzer angezeigt wird). Ein Beispiel isthttp://overpass-turbo.eu/?w=pub+in+dublin
. Solche URLs für Overpass Turbo sind sowohl recht kurz und recht gut lesbar für Menschen.
Durch Ergänzung des Links um &R
wird die Abfrage sofort ausgeführt und die Ergebnisse werden in der Karte angezeigt, z. B.: http://overpass-turbo.eu/?w=pub+in+dublin&R
Diese Funktion wird auch von der Suchmaschine genutzt DuckDuckGo: Du kannst einfach deine Abfrage in deren Suchfeld eingeben ergänzt durch !otw
(was für "Overpass Turbo Wizard" steht) und wirst, sobald du die Suche startest, auf die Overpass Turbo-Seite geleitet, auf der deine Abfrage bereits eingefügt ist.
Du kannst Platzhalter verwenden
Du willst z. B. alle Amateurfunk-Repeater in einer bestimmten Region in Deutschland sehen, Das Rufzeichen der Amateurfunk-Repeater beginnen in Deutschland alle mit DB0* (zwei Beispiele: DB0XS, DB0SR) und die Rufnamen befinden sich auf dem Namensschild.
Lösung: Verwende den regulären Ausdruck: name~"^DB0.*"
.
Die unterstützte Platzhalter-Schreibweise nennt man "POSIX extended regular expressions".
Bei der Suche nach einem Tag, der aus Schlüssel=Wert besteht, sind Wildcards bisher nur bei der Definition des Wertes eines Attributs möglich, für den Schlüssel kannst Du keinen Platzhalter verwenden. Die Funktion, auch nach einem Schlüssel über einen regulären Ausdruck zu suchen, ist jetzt verfügbar, siehe above.
Zeitüberschreitung
Standardmäßig ist [timeout:25]
Teil der Abfrage.Das bedeutet, dass die Abfrage nach 25 Sekunden gestoppt wird. In manchen Situationen kann es sinnvoll sein, den Wert zu erhöhen, um Abfragen eine längere Zeit laufen zu lassen.
Beschränkungen
Mit der browserinternen Verwendung des Overpass-Turbo-Assistenten ist es unmöglich, zu viel Datenverkehr auf Servern zu verursachen (außer bei absichtlicher böswilliger Verwendung). Siehe dazu Overpass API
Technische Details
Die Syntax des Assistenten ist inspiriert von JOSMs Such(en) / Filter-Funktionen. Der Assistent definiert seine eigene Grammatik (geschrieben in PEG.js, ein einfacher Parsergenerator für JavaScript). Die geparste Abfrage (ein Baum von booleschen Operationen und Filtern) wird dann normalisiert in die Disjunktive Normalform (A∧B∧…) ∨ (X∧Y∧…) ∨ …
was sich viel einfacher als Overpass-Abfrage darstellen lässt (d.h. eine einfache Vereinigung von Abfragen). Danach wird eine kommentierte Overpass QL-Abfrage ganz trivial konstruiert. Für einige spezielle Filter können Abfrage-Abkürzung (wie z. B. {{geocodeArea:*}}
für eine … in Area
Suche) verwendet werden.