DE:Overpass turbo/Wizard

From OpenStreetMap Wiki
Jump to navigation Jump to search
Overpass API logo.svg
edit
Overpass API · Referenz der Sprache · Leitfaden der Sprache · Technical terms · Bereiche · Beispielabfragen · Sparse Editing · Permanent ID · FAQ · mehr (Deutsch) · Web site
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Anwendungen · Source code and issues
Overpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · mehr (Deutsch) · Development · Source code and issues · Web site
Overpass Ultra · Examples · Overpass Ultra extensions · MapLibre stylesheets · URL Params · mehr (Deutsch) · Source code and issues · Web site
Besuche overpass-turbo.eu und führe folgende Schritte durch: # Wähle den Assistenten ("Wizard") aus der Symbolleiste # Gib die Befehle ein, um dein gewünschtes Ergebnis zu erhalten # Klicke die Schaltfläche
4. Erfreue dich an den Ergebnissen

"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

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:
  1. alle Objekte, die ein Attribut mit dem Schlüssel key haben und deren Wert nicht mit dem Regulären Ausdruck regex übereinstimmt.
  2. alle Objekte, die kein Attribut mit dem Schlüssel key haben.
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 Modifikator i 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.