x

Wie mit der "overpass-api" Autobahnzubringer finden?


  1. Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 02:17 · [flux]

    Hi, ich habe da mal eine kurze Frage,

    mittels der Syntax

    http://www.overpass-api.de/api/interpreter?data=[out:json];node[highway="bus_stop"](50.89246803721,6.1166542478156,50.89966803721,6.1280542478156);out+999;
    

    kann ich für einen bestimmten Bereich alle Bushaltestellen ausgeben.

    Gibt es auch eine Möglichkeit, mit einer Syntax alle Autobahnzubringer in einem bestimmten Bereich auszugeben?

    Hoffe, das Ihr mir weiterhelfen könnt 🙂


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · jman1983 (Gast) · 18.01.2013 07:34 · [flux]

      Hi und guten morgen,

      wenn es für den selben Bereich sein soll, sollte dies hier zum Ergebnis führen (nicht getestet, nur auf die schnelle angepasst!!!

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link␣"](50.89246803721,6.1166542478156,50.89966803721,6.1280542478156);out;
      

      MfG
      jman1983


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 11:33 · [flux]

      Hi,

      danke für den Tip. Funktiniert einfach perfekt. 😎

      Kann man eigentlich auch die Namen der Autobahnen anzeigen?



    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 12:03 · [flux]

      Danke für den Link. Aber wie baue ich das in die Syntax ein? Ich denke mal, das irgendwo der Befehl

      ref=*
      

      eingebaut werden muß, oder? Aber wo? Habe schon einiges ausprobiert aber leider ohne Erfolg 🙁


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · tunnelbauer (Gast) · 18.01.2013 13:01 · [flux]

      Keine Ahnung was du probiert hast, aber eigentlich ist es ganz simpel...

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link"];way[ref="A␣8"](47.7,12.8,47.89966803721,12.9);out;
      

    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 14:32 · [flux]

      Hi Thomas,

      danke für die Antwort 😎

      Leider gibt es bei der Ausgabe nur einen Runtime Error. Mein Ziel ist es, das die Ausgabe der einzelnen Autobahnauffahrten um den Namen der Autobahnen ergänzt wird (z.B. A1 oder A2.....). Müßte ja mit "ref" erfolgen. Nur die Syntax ist falsch 🙁


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · tunnelbauer (Gast) · 18.01.2013 14:39 · [flux]

      Frag mich bitte nicht warum, aber du musst nach dem "_link" noch ein Leerzeichen einfügen, sodass die Abfrage wie folgt aussieht:

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link␣"];way[ref="A␣8"](47.7,12.8,47.89966803721,12.9);out;
      

    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 15:50 · [flux]

      Hi Thomas,

      das mit dem Leerzeichen nach dem Link ist schon seltsam. Aber Hauptsache es funktioniert. Vielen Dank 🙂

      Tja, mit der Angabe "A 8" wird die Autobahn 8 angesprochen, die ja auch dort verläuft.

      Mein Problem ist jedoch, das der Name der Autobahn(en) für ein Gebiet nicht bekannt ist und dieser Name ausgegeben werden soll. Habe es schon mit ref="*" probiert. Aber leider ohne Erfolg 😐


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · jman1983 (Gast) · 18.01.2013 16:04 · [flux]

      Wenn ich dich richtig verstehe, versuch mal:

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link␣"];way[highway="motorway"](47.7,12.8,47.89966803721,12.9);out;
      

      damit solltest du dann alle Autobahnen aus dem Bereich bekommen. Um die "Namensausgabe" müßtest du dich im Anschluss selber kümmern.

      Darf man fragen, was du vor hast?


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 17:19 · [flux]

      Hi, mann darf fragen 🙂

      Ich möchte für einen durch Variablen diffinierten Bereich später feststellen, ob es hier Autobahnzubringer gibt. Und wenn ja, welche Bezeichnung diese Autobahn(en) besitzt(en).

      Der letzte Lösungsvorschlag zeigt zwar jetzt die Namen der Autobahnen an. Jedoch werden nicht nur die Autobahnzubringer angezeigt. Und da liegt das Problem 😉


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · tunnelbauer (Gast) · 18.01.2013 18:15 · [flux]

      Dass die Zubringer nicht nagezeigt werden, liegt eigentlich nur daran, dass man das "motorway_link " falsch schreiben muss, dass die query ausgeführt wird. Dadurch ergibt sich aber zeitgleich das Problem, dass das Objekt "motorway_link " nicht existiert.

      Eventuell kannst du ja auch mit der xapi glücklich werden - da klappt es nämlich...

      http://overpass-api.de/api/xapi?*[bbox=12.7,47.6,13.0,47.8][highway=motorway_link][@meta]
      

      Achtung: api und xapi tauschen X mit Y Koordinaten! (also bei der xapi Y1,X1,Y2,X2 verwenden und nicht X1,Y1,Y2,X2)


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Netzwolf (Gast) · 18.01.2013 19:06 · [flux]

      Nahmd,

      joergi2012 wrote:

      Ich möchte für einen durch Variablen diffinierten Bereich später feststellen, ob es hier Autobahnzubringer gibt. Und wenn ja, welche Bezeichnung diese Autobahn(en) besitzt(en).

      Brauchst Du so etwas?
      Also nicht die Kartendarstellung, sondern die zugrundeliegende Daten?

      Ich habe (direkt in den OSM-Rohdaten des Regbz. Kölns) die Knoten herausgesucht, die sowohl zu einem Way(1) mit "highway=motorway" als auch zu einem Way(2) mit "highway=motorway_link" gehören und die die Ids der Objekte, die Koordinaten der Node und den "ref=" des Way(1) ausgeben lassen.

      Möglicherweise wirst Du jemanden mit einer PostGis-Datenbank bitten müssen, Deine Daten mit einer passenden Abfrage bereitzustellen.

      Gruß Wolf


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · mmd (Gast) · 18.01.2013 19:23 · [flux]

      Die Frage ist auch ob ein Autobahnkreuz als Zubringer durchgehen soll. Oft kommt man da ja gerade nicht auf die Autobahn wenn man nicht schon auf einer drauf ist.


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · tyr_asd (Gast) · 18.01.2013 19:45 · [flux]

      joergi2012 wrote:

      Ich möchte für einen durch Variablen diffinierten Bereich später feststellen, ob es hier Autobahnzubringer gibt. Und wenn ja, welche Bezeichnung diese Autobahn(en) besitzt(en).

      Wenn ich dich recht verstehe, möchtest du motorway_link Wege suchen, und herausfinden zu welcher Autobahn diese hinführen.
      Diese Frage ist mit der Overpass API allein nicht besonders leicht zu beantworten, weil die motorway_link Wege selbst diese Information nicht tragen (in der Regel - Beispiel), sonder nur die motorway Wege, an denen sie enden oder anfangen. So eine Abfrage ist zwar "irgendwie" möglich (siehe unten), aber dafür ist die Overpass API nicht wirklich geeignet.

      [out:json];
      way
      (47.7,12.8,47.89966803721,12.9)
      ["highway"="motorway"]
      ->.ab;
      foreach.ab(
      ._;
      out␣body␣qt;
      node(w);
      way(bn);
      way._["highway"="motorway_link"];
      (
      ._;
      >;
      );
      out␣body␣qt;
      );
      

      Diese Query einfach in die Query Form (http://overpass-api.de/query_form.html) posten. Diese Query liefert alle Autobahnteilstücke (motorway) und jeweils darauf folgend (wenn vorhanden) abgehende oder ankommende Auffahrten (motorway_link).


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Netzwolf (Gast) · 18.01.2013 19:46 · [flux]

      mmd wrote:

      Die Frage ist auch ob ein Autobahnkreuz als Zubringer durchgehen soll. Oft kommt man da ja gerade nicht auf die Autobahn wenn man nicht schon auf einer drauf ist.

      Das ist korrekt. Die Bewohner dieses Schlosses können das bestätigen.

      Die Nadeln gehören auch nicht an die Stelle, wo der motorway_link in einen motorway übergeht/einmündet, sondern dahin, wo ein nicht-Motorway/MotorwayLink in einen MotorWayLink übergeht, also letztendlich dahin, wo das Verkehrszeichen "Autobahn" steht.

      Ein Motorway-Link kann aus Segmenten bestehen, z.B. wenn nach gemeinsamer Einfahrt er nach Fahrtrichtung sich aufteilt. Deshalb hat das Segment, das in Verbindung zu einer Nicht-Autobahn-Straße steht, möglicherweise keinen Kontakt zur Autobahn. Um an den Namen der Autobahn zu kommen, muss man also die Links "abfahren", bis man eine Autobahn erreicht. Die Heuristik "nimm Name einer Autobahn in der Nähe" kann bei einer gerichteten Auffahrt in der Nähe eines Dreiecks irregehen.

      Die vollständige und korrekte Lösung dieser Aufgabe muss möglw. auf einen Router zurückgreifen.

      Oder man löscht einfach händisch die paar false Positives.

      Gruß Wolf


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · EvanE (Gast) · 18.01.2013 21:59 · [flux]

      Netzwolf wrote:

      mmd wrote:

      ... Oft kommt man da ja gerade nicht auf die Autobahn wenn man nicht schon auf einer drauf ist.

      Das ist korrekt. Die Bewohner dieses Schlosses können das bestätigen.

      Hallo Wolf

      Die Gäste dieses Schloßhotel (am nächsten Autobahnkreuz Richtung Südost) fragen sich wahrscheinlich auch, ob das so eine gute Idee mit der Autobahn war.
      Die Geräusche der Autobahn sind übrigens wesentlich dezenter, als man von der Lage her vermuten würde. Aber je nach Richtung in die man will, ist es schon etwas unübersichtlich, wie man fahren muss.

      Bei den Nodes, die eine Ausfahrt markieren (motorway=junction), wäre man noch an der Nummer und dem Namen interessiert.

      Edbert (EvanE)


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 23:22 · [flux]

      Hi Thomas,

      sowie ich das auf die schnelle sehe, erhält man mittels

      http://overpass-api.de/api/xapi?*[bbox=12.7,47.6,13.0,47.8][highway=motorway_link][@meta]
      

      nicht den Namen der Autobahn, oder? Zudem benötige ich auf jedenfall eine JSON Ausgabe 😐


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Netzwolf (Gast) · 18.01.2013 23:25 · [flux]

      Nahmd,

      Netzwolf wrote:

      Die Nadeln gehören auch nicht an die Stelle, wo der motorway_link in einen motorway übergeht/einmündet, sondern dahin, wo ein nicht-Motorway/MotorwayLink in einen MotorWayLink übergeht, also letztendlich dahin, wo das Verkehrszeichen "Autobahn" steht.

      Die Nadeln stehen jetzt da, wo der Link irgendetwas ungleich Link berührt (auch wenn das ein Fahrradweg ist).

      Gruß Wolf


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 23:27 · [flux]

      Hi tyr_asd

      eigentlich suche ich eine Möglichkeit, in einem bestimmten Bereich feststellen zu können, ob hioer Autobahnauffahrten existieren und wenn ja, wie die Autobahnen heißen. 😎

      tyr_asd wrote:

      joergi2012 wrote:

      Ich möchte für einen durch Variablen diffinierten Bereich später feststellen, ob es hier Autobahnzubringer gibt. Und wenn ja, welche Bezeichnung diese Autobahn(en) besitzt(en).

      Wenn ich dich recht verstehe, möchtest du motorway_link Wege suchen, und herausfinden zu welcher Autobahn diese hinführen.
      Diese Frage ist mit der Overpass API allein nicht besonders leicht zu beantworten, weil die motorway_link Wege selbst diese Information nicht tragen (in der Regel - Beispiel), sonder nur die motorway Wege, an denen sie enden oder anfangen. So eine Abfrage ist zwar "irgendwie" möglich (siehe unten), aber dafür ist die Overpass API nicht wirklich geeignet.


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · joergi2012 (Gast) · 18.01.2013 23:33 · [flux]

      Hi Netzwolf,

      wie schon geschrieben, suche ich eigentlich eine Möglichkeit, in einem bestimmten Bereich feststellen zu können, ob hier Autobahnauffahrten existieren und wenn ja, wie die Autobahnen heißen. Notfalls könnte ich auch ohne den Namen der Autobahn zurechtkommen. Aber bedeutend schöner wäre es mit Namen. Ich programmiere übrigens in PHP. Solltest Du evtl. eine fertige Lösung besitzen würde ich mich freuen, wenn Du mir diese mitteilen könntest 😉

      Netzwolf wrote:

      Nahmd,

      joergi2012 wrote:

      Ich möchte für einen durch Variablen diffinierten Bereich später feststellen, ob es hier Autobahnzubringer gibt. Und wenn ja, welche Bezeichnung diese Autobahn(en) besitzt(en).

      Brauchst Du so etwas?
      Also nicht die Kartendarstellung, sondern die zugrundeliegende Daten?

      Ich habe (direkt in den OSM-Rohdaten des Regbz. Kölns) die Knoten herausgesucht, die sowohl zu einem Way(1) mit "highway=motorway" als auch zu einem Way(2) mit "highway=motorway_link" gehören und die die Ids der Objekte, die Koordinaten der Node und den "ref=" des Way(1) ausgeben lassen.

      Möglicherweise wirst Du jemanden mit einer PostGis-Datenbank bitten müssen, Deine Daten mit einer passenden Abfrage bereitzustellen.

      Gruß Wolf


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Netzwolf (Gast) · 19.01.2013 00:00 · [flux]

      Nahmd,

      joergi2012 wrote:

      wie schon geschrieben, suche ich eigentlich eine Möglichkeit, in einem bestimmten Bereich feststellen zu können, ob hier Autobahnauffahrten existieren und wenn ja, wie die Autobahnen heißen. Notfalls könnte ich auch ohne den Namen der Autobahn zurechtkommen.

      Was sich informell so einfach anhört, ist eine nicht triviale Anfrage an die Datenbank und vollständig korrekt sehr wahrscheinlich nur mit Hilfe eines Routers zu beantworten.

      Da die Zahl und Lage der Anschlusstellen aber recht konstant ist, reicht es, die Anfrage *einmal* zustellen und das Ergebnis dann lokal zu speichern. Und wie ich oben schon schrieb: möglicherweise kann jemand, der Deinen Bereich in einer DB lokal vorhält, Deine Anfrage für Dich rechnen.

      Ich programmiere übrigens in PHP. Solltest Du evtl. eine fertige Lösung besitzen würde ich mich freuen, wenn Du mir diese mitteilen könntest 😉

      Wenn Du die Liste der Anschlusstellen hast, brauchst Du nur noch ein Skript, was bei Angabe einer Bbox die passenden Anschlusstellen aus der Bbox entnimmt und ausliefert. Das ist trivial. Die Liste zu bekommen ist die eigentliche Aufgabe.

      Gruß Wolf


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · EvanE (Gast) · 19.01.2013 02:18 · [flux]

      joergi2012 wrote:

      wie schon geschrieben, suche ich eigentlich eine Möglichkeit, in einem bestimmten Bereich feststellen zu können, ob hier Autobahnauffahrten existieren und wenn ja, wie die Autobahnen heißen. Notfalls könnte ich auch ohne den Namen der Autobahn zurechtkommen. Aber bedeutend schöner wäre es mit Namen. Ich programmiere übrigens in PHP. Solltest Du evtl. eine fertige Lösung besitzen würde ich mich freuen, wenn Du mir diese mitteilen könntest 😉

      Eigentlich sollte jede (Autobahn-)Auf- und Abfahrt eine Referenz (ref=*) auf die entsprechende Straße haben. Wenn dir also die Nummer der Autobahn reicht, wärst du damit fertig. Für Auffahrten auf die Autobahn wird das auch relativ konsequent gemacht, bei den Abfahrten wird das gelegentlich weggelassen.

      Auf dieser No-Name Karte von Simon Poole werden neben Straßen ohne Namen auch fehlende Referenzen bei Auf- und Abfahrten angezeigt. Damit kannst du recht schnell prüfen, ob in dem Bereich, der dich interessiert, alle Auf-/Abfahrten eine Referenz-Nummer haben und sie ggfs. selber ergänzen.

      Dann gibt es noch das destination-Tagg, dass die Zielrichtung wie auf den Wegweisern (meist der nächste größere Ort) angibt. Auch das könnte dir helfen, wobei das sicher nicht so konsequent in den Daten enthalten ist, wie ref=*.
      Laut Taginfo gibt es weltweit knapp 400 Tsd motorway_link, davon haben rund 9,5% ein ref-Tagg und 2,7% ein destination-Tagg. Die Anteile dürften für Deutschland deutlich besser sein.

      Hoffe das hilft dir.
      Edbert (EvanE)


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Roland Olbricht (Gast) · 20.01.2013 10:25 · [flux]

      joergi2012 wrote:

      wie schon geschrieben, suche ich eigentlich eine Möglichkeit, in einem bestimmten Bereich feststellen zu können, ob hier Autobahnauffahrten existieren und wenn ja, wie die Autobahnen heißen. Notfalls könnte ich auch ohne den Namen der Autobahn zurechtkommen. Aber bedeutend schöner wäre es mit Namen. Ich programmiere übrigens in PHP. Solltest Du evtl. eine fertige Lösung besitzen würde ich mich freuen, wenn Du mir diese mitteilen könntest 😉

      Probiere mal bitte

      http://overpass-api.de/api/interpreter?data=[out:json];(node[highway=motorway_junction](50.7,7.0,50.8,7.3);foreach(out;way(bn)[highway=motorway];out;);
      

      Das liefert jeweils einen Node pro Ausfahrt und Richtung. Im Node ist der "name"-Tag der Name der Anschlussstelle. Danach folgen ein oder mehrere Ways, die im "ref" die Nummer der Anschlusstelle tragen. Passe dann die Bbox auf Deinen Bedarf an. Wenn die Abfrage einen Runtime-Error liefert, trage bitte "[timeout:900]" nach "data=" ein - dann hat der Server für 900 statt nur 180 Sekunden Geduld.

      Im Detail: Der Server findet alle Nodes, die ein "highway=motorway_junction" Tag tragen. Das liefert die Anschlussstellen. Um die zugehörige Autobahn zu kriegen, braucht man jeweils die Wege, die durch diese Node durchlaufen. Das macht "way(bn)", und mit Zusatz "highway=motoryway" werden nur noch Wege gefunden, die als Autobahnen getaggt sind. "Foreach" sorgt dafür, dass das für jede Node einzeln erfolgt; sonst müsste man danach wieder die Nodes anhand der Ids zu den Ways sortieren.

      Viele Grüße,

      Roland


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Roland Olbricht (Gast) · 20.01.2013 10:29 · [flux]

      tunnelbauer wrote:

      Frag mich bitte nicht warum, aber du musst nach dem "_link" noch ein Leerzeichen einfügen, sodass die Abfrage wie folgt aussieht:

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link␣"];way[ref="A␣8"](47.7,12.8,47.89966803721,12.9);out;
      

      Mit und ohne Leerzeichen hat die Abfrage das gleiche Ergebnis wie

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[ref="A␣8"](47.7,12.8,47.89966803721,12.9);out;
      

      das '[highway="motorway_link "]' hat keinen Einfluss auf das Ergebnis.

      Warum nun der Runtime-Error? Die Abfrage 'way[highway="motorway_link"];' sucht nach allen Wegen (weltweit), die dieses Tag tragen. Das sind sehr viele, weswegen der Server die Abfrage hier abbricht. Mit Leerzeichen werden dagegen keine Wege gefunden, weswegen der Server die Abfrage ohne Abbruch erledigt. Das Ergebnis der Abfrage wird erst danach in "way[ref= ..." gefunden, da nur nach dieser Abfrage eine Ausgabe kommt.

      Viele Grüße,

      roland


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · tunnelbauer (Gast) · 20.01.2013 10:33 · [flux]

      @Roland:

      Danke für den Hinweis - ist eigentlich logisch (würde man nachdenken)

      Dreht man jetzt nämlich die Abfrage um:

      http://www.overpass-api.de/api/interpreter?data=[out:json];way[ref="A␣8"];way[highway="motorway_link"](47.7,12.8,47.89966803721,12.9);out;
      

      wird die Abfrage erfolgreich ausgeführt. 🙂


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · mmd (Gast) · 20.01.2013 19:09 · [flux]

      Roland Olbricht wrote:

      Probiere mal bitte

      http://overpass-api.de/api/interpreter?data=[out:json];(node[highway=motorway_junction](50.7,7.0,50.8,7.3);foreach(out;way(bn)[highway=motorway];out;);
      

      Hallo Roland,

      bei mir liefert die Anfrage leider folgenden Fehler:

      The␣data␣included␣in␣this␣document␣is␣from␣www.openstreetmap.org.␣The␣data␣is␣made␣available␣under␣ODbL.
      Error:␣line␣1:␣static␣error:␣Element␣"foreach"␣cannot␣be␣subelement␣of␣element␣"union".
      Error:␣line␣1:␣parse␣error:␣Unexpected␣end␣of␣input.
      

      Könntest Du da bitte nochmal einen Blick drauf werfen?

      Gruß,


    • Re: Wie mit der "overpass-api" Autobahnzubringer finden? · Roland Olbricht (Gast) · 21.01.2013 09:51 · [flux]

      mmd wrote:

      bei mir liefert die Anfrage leider folgenden Fehler:

      Danke für den Hinweis. Da ist eine Klammer zuviel gewesen. Mit

      http://overpass-api.de/api/interpreter?data=[out:json];node[highway=motorway_junction](50.7,7.0,50.8,7.3);foreach(out;way(bn)[highway=motorway];out;);
      

      sollte es wirklich gehen 🙂

      Viele Grüße,

      Roland