Muellabfuhr: Unterschied zwischen den Versionen

Aus /dev/tal
Wechseln zu: Navigation, Suche
K (Wie man die Straßenposition aus OSM Daten abruft)
(Wie man die Straßenposition aus OSM Daten abruft)
Zeile 13: Zeile 13:
 
Über die OSM API v0.6 kann man alle OSM Daten einer bestimmten Region über eine Bounding Box abrufen. Die genau Beschreibung der API-Anfrage findet man auf der [http://wiki.openstreetmap.org/wiki/API_v0.6#Retrieving_map_data_by_bounding_box:_GET_.2Fapi.2F0.6.2Fmap OSM API v0.6].
 
Über die OSM API v0.6 kann man alle OSM Daten einer bestimmten Region über eine Bounding Box abrufen. Die genau Beschreibung der API-Anfrage findet man auf der [http://wiki.openstreetmap.org/wiki/API_v0.6#Retrieving_map_data_by_bounding_box:_GET_.2Fapi.2F0.6.2Fmap OSM API v0.6].
  
# Laden einer definierten Region
+
# Suchen der Straße über der Straßennamen (in Wuppertal)
# Identifizieren der gesuchten Straße über den Straßennamen (Suche im XML-Baum)  
+
# Bestimmen aller Ways die zur Straße gehören
# Bestimmen aller Nodes die zur Straße gehören
+
# Bestimmen aller Nodes die zur all diesen Ways gehören
 
# Ermitteln der Postionen von all diesen Nodes
 
# Ermitteln der Postionen von all diesen Nodes
  
Zeile 22: Zeile 22:
 
Zur Verdeutlichung der Funktion hier mal ein kleines Beispiel.
 
Zur Verdeutlichung der Funktion hier mal ein kleines Beispiel.
  
Mit der folgenden Kommandozeile lässt sich der Bereich um um das /dev/tal abfragen:
+
Mit der folgenden Abfrage lässt sich nach dem Namen "Mirker Straße" in Wuppertal suchen:
  
  curl http://api.openstreetmap.org/api/0.6/map?bbox=7.14419,51.26616,7.14657,51.26710
+
  http://nominatim.openstreetmap.org/search?street=Mirker+Stra%C3%9Fe&city=Wuppertal&country=Germany&format=xml
  
Die Mirker Straße findet sich z.B. wie folgt in der XML-Ausgabe wieder:
+
Die in der XML-Ausgabe finden sich mehrere Ergebnisse (places).
  
  <way id="233759747" ...>
+
  <searchresults ...>
   <nd ref="2420975486"/>
+
   <place ... osm_type="way" osm_id="42258384" ... />
  <nd ref="2420975763"/>
+
   <place ... osm_type="way" osm_id="188836503" ... />
   <nd ref="2420975488"/>
+
   <place ... osm_type="way" osm_id="233759747" ... />
  <nd ref="2420975487"/>
+
  </searchresults>
   <tag k="highway" v="service"/>
+
  <tag k="name" v="Mirker Straße"/>
+
  </way>
+
  
Wobei die 4 refs auf die Nodes verweisen die zur Straße gehören. Diese Nodes mit ihrer Position finden sich auch in der XML-Ausgabe.
+
Uns interessieren nur die osm_ids von allen places mit osm_type="way". Für die einzelnen osm_ids können wir nun die beteiligten refs abfragen. Für eine der ids sieht die Abfrage wie follgt aus:
  
  <node id="2420975486" ... lat="51.2671375" lon="7.1465396"/>
+
http://api.openstreetmap.org/api/0.6/way/233759747
<node id="2420975763" ... lat="51.2667434" lon="7.1454972"/>
+
 
<node id="2420975488" ... lat="51.2664044" lon="7.1445584"/>
+
XML-Ausgabe wieder:
  <node id="2420975487" ... lat="51.2663023" lon="7.1445433"/>
+
 
 +
  <osm ...">
 +
  <way id="233759747" ...>
 +
    <nd ref="2420975486"/>
 +
    <nd ref="2420975763"/>
 +
    <nd ref="2420975488"/>
 +
    <nd ref="2420975487"/>
 +
    <tag k="highway" v="service"/>
 +
    <tag k="name" v="Mirker StraÃe"/>
 +
  </way>
 +
</osm>
 +
 
 +
Wenn alle Referenzen bestimmt sind und Duplikate entfernt wurden, kann für jede ref die Details angefragt werden.
 +
 
 +
http://api.openstreetmap.org/api/0.6/node/2420975486
 +
 
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
  <osm ...>
 +
  <node id="2420975486" ... lat="51.2671375" lon="7.1465396" .../>
 +
</osm>
  
 
= Weblinks =
 
= Weblinks =

Version vom 12. Oktober 2013, 01:15 Uhr

Müllabfuhr

Hier entsteht eine Dokumentation zu der API von AWG [1] und der weiteren Möglichkeit zur Auswertung.




Wie man die Straßenposition aus OSM Daten abruft

Über die OSM API v0.6 kann man alle OSM Daten einer bestimmten Region über eine Bounding Box abrufen. Die genau Beschreibung der API-Anfrage findet man auf der OSM API v0.6.

  1. Suchen der Straße über der Straßennamen (in Wuppertal)
  2. Bestimmen aller Ways die zur Straße gehören
  3. Bestimmen aller Nodes die zur all diesen Ways gehören
  4. Ermitteln der Postionen von all diesen Nodes

Ein Beispiel

Zur Verdeutlichung der Funktion hier mal ein kleines Beispiel.

Mit der folgenden Abfrage lässt sich nach dem Namen "Mirker Straße" in Wuppertal suchen:

http://nominatim.openstreetmap.org/search?street=Mirker+Stra%C3%9Fe&city=Wuppertal&country=Germany&format=xml

Die in der XML-Ausgabe finden sich mehrere Ergebnisse (places).

<searchresults ...>
 <place ... osm_type="way" osm_id="42258384" ... />
 <place ... osm_type="way" osm_id="188836503" ... />
 <place ... osm_type="way" osm_id="233759747" ... />
</searchresults>

Uns interessieren nur die osm_ids von allen places mit osm_type="way". Für die einzelnen osm_ids können wir nun die beteiligten refs abfragen. Für eine der ids sieht die Abfrage wie follgt aus:

http://api.openstreetmap.org/api/0.6/way/233759747

XML-Ausgabe wieder:

<osm ...">
  <way id="233759747" ...>
    <nd ref="2420975486"/>
    <nd ref="2420975763"/>
    <nd ref="2420975488"/>
    <nd ref="2420975487"/>
    <tag k="highway" v="service"/>
    <tag k="name" v="Mirker StraÃe"/>
  </way>
</osm>

Wenn alle Referenzen bestimmt sind und Duplikate entfernt wurden, kann für jede ref die Details angefragt werden.

http://api.openstreetmap.org/api/0.6/node/2420975486
<?xml version="1.0" encoding="UTF-8"?>
<osm ...>
  <node id="2420975486" ... lat="51.2671375" lon="7.1465396" .../>
</osm>

Weblinks