[Talk-de] Schwierige Frage: OSM-Shapes Routingfähig machen
Kai Behncke
Kai-Behncke at gmx.de
Mo Apr 20 12:22:01 UTC 2009
Hallo Liste,
folgendes Problem wurde hier festgestellt.
Für pgRouting wurden die Straßenshapes von hier genommen:
http://download.geofabrik.de/osm/europe/germany/niedersachsen.shp.zip
Es wurden dann mittels unterschiedlicher Werkzeuge die Daten von Osnabrück extrahiert
(Einmal mit Quantum GIS und, um einen weiteren Datensatz zu haben, einmal mit ogr2ogr).
Das daraus entstandene Shapefile wurde dann mittels shp2pgsql in eine PostgreSQL/PostGIS-Datenbank
transportiert und entsprechende pgRouting-Funktionen eingeladen.
Die Daten wurden entsprechend aufbereitet:
http://pgrouting.postlbs.org/wiki/Workshop-PrepareDikstra
Leider ohne Erfolg. Das Routing (Dijkstra) funktioniert in den meisten Fällen nicht.
Die selben Schritte wurden dann auch mit Straßendaten aus Victoria(Kanada) vollzogen.
In eigener Anwendung (mit eigener Datenbank etc.) funktionierte hier alles reibungslos:
Screenshot 1:
http://www.selbstverwaltung-bundesweit.de/correct.PNG
Bei einer anschließenden Fehlersuche wurden die Daten aus dem OSM-Shapefile dann analysiert.
Nach der Funktion, welche die Daten routing fähig macht:
SELECT assign_vertex_id('victoria', 0.001, 'the_geom', 'gid');
wurde evaluiert, ob die Daten korrekt Anfangs- und Endvertices haben.
Über den MapServer wurden die Punkte herausgefunden, welche letztlich als "dead end" vorliegen (in rot).
Screenshot 2:
http://www.selbstverwaltung-bundesweit.de/too_many_dead_ends.png
Wie Screenshot 2 zeigt sind es viel zu viele.
Es wurde sicherheitshalber versucht die Funktion
SELECT assign_vertex_id('victoria', 0.001, 'the_geom', 'gid'); mit verschiedenen größeren Toleranzräume durchlaufen zu lassen, zudem wurde auch neben 4326 ein anderes Referenzsystem getestet (900913), und zusätzlich
anfänglich ein ogr2ogr über das Shapefile laufen lassen (repariert ja oft).
Das Resultat war immer das selbe (zu viele dead ends), oder bei zu großem Toleranzraum
nicht genügend vertices (Screenshot 3)
Screenshot 3:
http://www.selbstverwaltung-bundesweit.de/not_enough_vertices.png
Interessant wird es dann hier:
Screenshot 4
http://www.selbstverwaltung-bundesweit.de/weird_numbers.png
Die Abbildunbg zeigt:
a) genügend vertices sind vorhanden
b) Die drei Zahlen (schwarz auf grau) zeigen gid, source-Wert (Vertex) und target-Wert (Vertex),
diese Werte stimmen aber z.Teil nicht überein mit den tatsächlichen Vertices (rot=Fehler, blau=korrekt).
Und um das ganze dann komplett verwirrend zu machen: Wenn ich mir mittels osmosis aus dem Niedersachsen-osm-Satz
Osnabrück extrahiere und das ganze dann über osm2pgrouting in meine Datenbank einlese, dann ist alles wunderbar, 1a korrekt und völlig fehlerfrei.
Die Frage also:
Könnte ich bei der Umwandlung der Shapes von hier:
http://download.geofabrik.de/osm/europe/germany/niedersachsen.shp.zip
etwas übersehen haben?
Nur wieso bringen dieselben Schritte bei den Victoria-Testdaten
http://geobase.ca/geobase/en/data/nrn/index.html
ein fehlerfreies Ergebnis?
Hat jemand eine Vermutung woran das liegen könnte (ich dachte immer in Bezug auf Topologien ist ein Shape ein Shape)?
Auf der pgRouting-Seite wird augenblicklich auch noch gerätselt....
Viele Grüße, Kai
--
Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dslspecial.gmx.de/freedsl-surfflat/?ac=OM.AD.PD003K11308T4569a
Mehr Informationen über die Mailingliste Talk-de