osm2pgrouting - Entfernungen?

Hallo Leute,

wir haben aktuell ein Projekt mit osm2pgrouting und den Kartendaten (als OSM) von Sachsen-Anhalt am Laufen.
Hierfür möchte ich gern die Entfernung der gesamten gefahrenen Route berechnen. Das geht problemlos über length(the_geom) bzw. ST_length(the_geom). Leider bekomme ich da öfter so kleine Werte zurück - das kann nicht sein.

Weiß einer, in welcher “Maßeinheit” in den OSM-Daten hierbei die Entfernung angegeben wird? Meter können es nicht sein - dafür ist die Entfernung auf der Karte viel zu groß (auch wenn ich sie nicht exakt kenne, aber allein die Entfernung einzelner Straßen innerhalb eines Ortes dieser Route ist mehr als 7km lang).

Kann einer sagen, in welcher “Maßeinheit” hier die Daten angegeben werden?

Noch eine kurze Frage zu PGRouting:
Ist es möglich, an die Funktion zur Routen-Berechnung gleich mehrere Punkte zu übergeben - einen festen Startpunkt, einen festen Endpunkt und ein paar Punkte dazwischen, sodass pgrouting automatisch die kürzeste Route über diese Punkte ermittelt? Oder muss ich das via Hand ermitteln, indem ich immer mehrere Routen errechne und die gesamte Entfernung vergleiche?

Hi,
Dann ist es ein Fehler in Eurer Software.

In den OSM Daten werden Entfernungen nicht gespeichert.

Sollte es aber nicht über das Berechnen der Länge über die Geometrie funktionieren?
Die Kosten für das Routing müssen ja auch irgendwie berechnet werden - imho funktioniert das ja z.B. über die Entfernung (und ich glaube, to_cost deckt sich mit length(the_geom)).
Irgendwie müssen sich ja Entfernungen berechnen lassen - ansonsten wäre wohl das ganze pgrouting recht sinnfrei, da Routen ja meist über Entfernungen berechnet werden.

Es muss also einen Weg geben, irgendwie an eine Entfernung zwischen zwei Punkten zu kommen. Und dafür benötige ich eine Maßeinheit. Im Internet habe ich mal etwas gelesen, dass es hierbei auf die “Kodierung” (also die Maßeinheiten) der Ursprungsdaten ankommt. Und da wäre es hilfreich zu wissen, wie die Entfernungen via pgrouting mit OSM-Daten angegeben sind.

Die OSM Koordinaten(Ortsdaten) sind als Längen- / Breitengrade angegeben. Aus jeweils zwei Koordinaten lässt sich dann
natürlich ein Abstand berechnen.

Gibt es denn eine “Umrechnungszahl” von Längen-/Breitengrade in “Meter” oder “Kilometer”?
Ich habe jetzt eben (wie erwähnt) irgendwelche Zahlen, die wohl eine Längenangabe darstellen. Wie genau bekomme ich die aber in Meter umgerechnet?
Es gibt wohl die Möglichkeit, einen Abstand zwischen zwei Punkten in lat/lon umzurechnen nach Meter - das habe ich aber nicht, ich habe da “irgendeine Zahl” mit Hilfe von length(the_geom) errechnet.

Das müsste man eben irgendwie in Meter bekommen.

P.S.:
Die zweite Frage steht noch:
Weiß einer, wie ich MEHRERE Punkte gleichzeitig an pgrouting übergebe und die kürzeste Route bekomme?

Auch wenn der Artikel etwas älter ist: http://wiki.osgeo.org/wiki/Anleitung_f%C3%BCr_Routing_%28Pgrouting%29_und_UMN_MapServer_mit_den_Freien_Geodaten_aus_Osnabr%C3%BCck_%28Frida%29
so beantwortet er doch die Frage wie mehrere Punkte in die DB kommen.

Ich will doch aber nicht mehrere Punkte in die DB einfügen, sondern die kürzeste Route über mehrere, vorgegebene Punkte berechnen.
Oder habe ich da jetzt was überlesen/falsch verstanden?

Also ich habe es nicht ausprobiert, aber ich würde sagen ja du hast etwas überlesen:
“Abbildung 9: Start- und Endpunkte der Strassengeometrien erstellen”

Für mich sieht das nach dem Skript so aus als ob hier viele Punkte eingelesen wurden. Das Endprodukt ist dann eine Website wo jede Straße Start und jede andere Straße Endpunkt sein kann. Sind diese ausgewählt wird die kürzeste Route angezeigt. Daher dachte ich, ist das genau wonach du suchst.

Für Breitengrade gilt überall näherungsweise: 1 gradLat = 111km.
Für Längengrade ist die Umrechnung breitengradabhängig, es gilt (wiederum näherungsweise) 1 gradLon = 111km * cosinus (Lat).
Bei uns in der Gegend (50. Breitengrad) sind es 71 km / gradLon .

PGrouting läuft doch in Postgis, oder?
Täte mich sehr wundern, wenn es da nicht eine simple Funktion gäbe, die Entfernungen zwischen 2 Punkten millimetergenau aus jedem beliebigen Koordinatensystem berechnen kann.

EDIT: du suchst das hier:
http://blog.5ws.de/index.php/2010/03/03/entfernungsberechnung-mit-postgis/

Gruß,
ajoessen

Hallo ajoessen - ich suche leider nicht die Entfernung zwischen zwei Geometrien, sondern die “Länge” einer Geometrie.

Die Länge einer Geometrie ergibt sich aus der Summe der Abstände der die Geometrie definierenden Punkte.

Gibt es denn die Möglichkeit, eine vorliegende Geometrie in ihre einzelnen Punkte zu “zerlegen”? Für mich klingt das schon wieder nach einem recht großem Programmieraufwand, den ich mir eigentlich weniger antun wollte.
Daten auslesen, Foreach-Schleife für einzelne Punkte durchlaufen, Länge berechnen lassen, …

Wo PostGIS doch so mächtig ist - das hatte ich mir alles irgendwie ein wenig kompakter vorgestellt. Für alles gibt es vordefinierte Funktionen - aber für solch eher “triviale” Dinge dann nicht.