User:Penpendede/Around für eine Vielzahl von Punkten

From OpenStreetMap Wiki
Jump to navigation Jump to search

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