Der einfachste Weg, um an OpenStreetMap-Daten in einem Ausschnitt zu kommen.
Der einfachste Weg, an alle Daten in einer Bounding-Box zu kommen, ist, dies explizit so zu formulieren (Link):
nwr(51.477,-0.001,51.478,0.001); out;
Dabei steht (51.477,-0.001,51.478,0.001)
für die Bounding Box.
Die Reihenfolge der Ränder im Ausdruck ist dabei immer gleich:
51.477
ist der Breitengrad (Latitude) des südlichen Randes-0.001
ist der Längengrad (Longitude) des westlichen Randes51.478
ist der Breitengrad (Latitude) des nördlichen Randes0.001
ist der Längengrad (Longitude) des östlichen RandesDie Overpass API verwendet ausschließlich Dezimalbrüche, die Minuten-Sekunden-Notation oder Minuten-Dezimalbruch-Notation wird nicht unterstützt.
Der Wert für den südlichen Rand muss stets kleiner sein als der Wert für den nördlichen Rand, da im Breitengrad-Längengrad-Koordinatensystem die Grade vom Südpol zum Nordpol wachsen, von -90.0 bis +90.0.
Im Gegensatz dazu steigen die Längengrade zwar von Westen nach Osten ebenfalls fast überall an. Es gibt aber den sogenannten Antimeridian, im Deutschen oft mit der "Datumsgrenze" verwechselt; dort springt der Wert von +180.0 auf -180.0. Er verläuft zwischen Nordpol und Südpol durch den Pazifik. In nahezu allen Fällen ist also ebenfalls der westliche Wert kleiner als der östliche Wert, es sei denn, man will eine Bounding-Box über den Antimeridian spannen.
Meistens ist es recht mühsam,
die passende Bounding-Box selbst herauszufinden.
Daher haben fast alle der unter Verwendung beschriebenen Programme Komfortfunktionen dafür.
Bei Overpass Turbo und auch JOSM
werden vor dem Absenden der Anfrage alle Vorkommen der Zeichenfolge {{bbox}}
durch die sichtbare Bounding-Box ersetzt. Damit kann man eine Abfrage wie oben allgemeiner schreiben als (Link)
nwr({{bbox}}); out;
Die Abfrage wirkt dann in der jeweils sichtbaren Bounding-Box.
Beachten Sie, dass einige Elemente in der Darstellung gestrichelt werden. Das ist der Hinweis auf ein größere Problematik, dem wir im nächsten Abschnitt nachgehen werden: Es werden zwar formal vollständige Objekte geliefert, aber diese Objekte haben hier unvollständige Geometrien, da wir dies in der Abfrage so spezifiziert haben.
Eine zweite Situation, in der Bounding-Boxen vorkommen,
ist bei der Ausgabebegrenzung mit out geom
.
Möchte man einen Way oder eine Relation auf der Karte visualisieren,
so muss die Overpass API explizit anweisen,
das Objekt entgegen der OSM-Konventionen mit Koordinaten auszustatten.
Im Falle von Relationen kann dies zu großen Datenmengen führen. So wird in diesem Beispiel ungefragt Geometrie quer durch England ausgeliefert, obwohl nur ein paar hundert Quadratmeter im Fokus gewesen sind:
relation(51.477,-0.001,51.478,0.001); out geom;
Die Datenmenge kann eingeschränkt werden, indem bei der Ausgabe explizit nur Koordinaten aus einer übergebenen Bounding-Box angefordert werden:
relation(51.477,-0.001,51.478,0.001); out geom(51.47,-0.01,51.49,0.01);
Die Bounding-Box wird direkt hinter geom
notiert.
Sie kann sowohl gleich als auch verschieden von Bounding-Boxen aus vorangehenden Statements sein.
In diesem Fall haben wir uns durch verschiedene Bounding-Boxen zu einem sehr breiten Reserverand entschieden.
Zu explizit vorkommenden Nodes werden dabei die Koordinaten genau dann mitgeliefert, wenn diese innerhalb der Bounding-Box liegen.
Bei Ways nicht nur die Koordinaten aller Nodes in der Bounding-Box mitgeliefert, sondern auch die jeweils nächste und vorausgehende Koordinate, auch wenn sie bereits außerhalb der Bounding-Box liegt. Um dies im Beispiel zu sehen, bitte nach dem Ausführen auf Daten oben rechts klicken; Herumschieben der Karte zeigt auch, wo abgeschnitten worden ist:
way[name="Blackheath Avenue"](51.477,-0.001,51.478,0.001); out geom(51.477,-0.002,51.479,0.002);
Nur ein Teil der Nodes im Way hat hier Koordinaten.
Die mit Koordinaten versehenen Abschnitte des Ways können unzusammenhängend sein, auch bei einem einzelnen Way:
way[name="Hyde Vale"]; out geom(51.472,-0.009,51.475,-0.005);
Es reicht dazu eine mäßige Kurve aus der Bounding-Box und wieder hinein wie in diesem Beispiel.
Bei Relations werden Member vom Typ Way expandiert, wenn zumindest eine der Nodes dieses Ways innerhalb der Bounding-Box liegt. Andere Member vom Typ Way werden nicht expandiert. Innerhalb dieser Ways werden wie bei einzelnen Ways die Nodes innerhalb der Bounding Box plus eine Extra-Node mit Koordinaten versehen.
Ebenso wie bei der Bounding-Box als Filter haben die meisten Programme einen Mechanismus,
um die Bounding Box selbsttätig einzufügen.
Bei Overpass Turbo tut dies wie oben {{bbox}}
, (Beispiel):
relation({{bbox}}); out geom({{bbox}});
...
weiter: Geometrien