User:Penpendede/Around für eine Vielzahl von Punkten
Kurzes Vorwort
Nachfolgend findet Ihr eine Übersetzung eines Blogeintrags des Benutzers mmd (http://www.openstreetmap.org/user/mmd/diary/42055), in dem er seine Erweiterung von around
auf eine ganze Reihe von Punkten vorstellt. Der englischsprachige Text hat bei unserem
lokalen OSM-Stammtisch für etwas Verwirrung gesorgt, da zunächst nicht klar war, dass es sich um eine Erweiterung handelt, nicht um ein standardmäßig vorhandenes Feature. Klar zu erkennen ist es nur an der Zeile
{{data:overpass,server=http://dev.overpass-api.de/api_mmd/}}
Ich habe den die Overpass-Befehle in diese Seite integriert, da ich sie klarer formatieren wollte. Nun aber zur Übersetzung.
Download entlang eines virtuellen Weges mit Overpass API
Wieder ein bisschen Prototyping
Ich habe mich immer gefragt, wie ich mit der Overpass API am besten alle Objekte entlang eines GPX-Tracks (allgemeiner: einer Liste von Längengrad-Breitengrad-Paaren) herunterladen.
Normalerweise willst du dafür keinen komplexen Poly-Filter entwerfen oder gar den GPX-Track nur zu dem Zweck nach OSM hochladen, um herauszufinden, was sich in der Nähe findet.
Vielleicht ist euch schon einmal der `around`-Filter über den Weg gelaufen, der praktisch ist, um Objekte rund um einen Mittelpunkt zu finden. Ich habe diese Idee ein bisschen erweitert, um auch Linienzüge zu verarbeiten.
Hier ist das erste Ergebnis; ein türkiser Kreis in der Mitte ist unser toller ausgedachter GPX-Track, der aus insgesamt 20 Punkten besteht. Der ganze gelbe Kram im Hintergrund ist das, was die Overpass-API für Schnellstraßen in maximal 500 Meter Entfernung von unserem Kreis zurückgegeben hat. Offensichtlich gibt es diesen Kreis nicht in OSM, daher sehen wir tatsächlich, was sich in der Nähe unseres virtuellen Weges befindet.
Kreis
Bild: https://user-images.githubusercontent.com/5842757/29240646-95dbbd7c-7f69-11e7-91f5-002debd6d97b.png
Live demo: http://overpass-turbo.eu/s/qX9
Overpass-Befehl
way[highway]( around: 500, 50.540853270068986, 8.048780365649707, 50.53106288705902, 8.030823236553783, 50.51780737956311, 8.019643105996508, 50.50287491071276, 8.016749912560886, 50.48828159051387, 8.022534398052139, 50.47599950382573, 8.036215335651725, 50.467689755650376, 8.055945038928135, 50.46447690759688, 8.079058902127825, 50.46679590711731, 8.102435269947343, 50.47433280529453, 8.122917034379736, 50.48606755168466, 8.137738019645033, 50.50041288059356, 8.144896569557243, 50.51542994506574, 8.143425882283827, 50.529090915610794, 8.13352458229042, 50.53955268865336, 8.11652989500613, 50.545404823255616, 8.09473704711951, 50.545858734919165, 8.07108928349599, 50.540853270068986, 8.048780365649707 ); (._;>;); out meta; {{data:overpass,server=http://dev.overpass-api.de/api_mmd/}}
Autoreise
Stell dir vor, du willst eine Karte mit nur ein Minimum an Objekten (Schnellstraßen, einige wichtige Nodes) und einigen Ortsnamen enlang deiner eigenen Längengrad-Breitengrad-Paare. Hier ist ein Beispiel für eine Reise von Frankfurt am Main nach Basel, als 10 Megabyte große PBF-Datei heruntergeladen, mittels osm2pgsql verarbeitet und mit Kosmtik gerendert:
Bild: https://user-images.githubusercontent.com/5842757/29248519-61e1cf6e-801a-11e7-8256-87917b134971.png
Live demo: http://overpass-turbo.eu/s/qXI
Overpass-Befehl
[maxsize:4000000000][timeout:3600][out:pbf][regexp:ICU]; ( way[highway~"^(trunk|motorway|primary|secondary|tertiary)(_link)?$"] ( around: 20000, 50.16634404911624, 8.633879241943358, 49.01715821614669, 8.374327239990235, 48.288676648581344, 7.775572357177735, 47.768872096323875, 7.503656616210939, 47.53482074712603, 7.630003509521484 ); node[place=city] ( around: 20000, 50.16634404911624, 8.633879241943358, 49.01715821614669, 8.374327239990235, 48.288676648581344, 7.775572357177735, 47.768872096323875, 7.503656616210939, 47.53482074712603, 7.630003509521484 ); ); (._;>;); out meta; {{data:overpass,server=http://dev.overpass-api.de/api_mmd/}}
Github issue: https://github.com/drolbr/Overpass-API/issues/418