Routing offline auf Kommantozeile für Fußgänger

Hallo,

ich habe trotz Suche nichts für mich passendes gefunden, daher hier jetzt die Frage:

Ich möchte (für meine Diplomarbeit) skriptbar (also auf der Kommandozeile) ermitteln können, wie weit ein Fußgänger, von einer deutschen Adresse bis zu einer GPS-Position innerhalb der gleichen Stadt laufen müsste.

Also z.B:
Distanz zu Fuß von “Berlinerstraße 12, 10212 Berlin” nach [52.1717,11.1818]
(Werte und Adressen sind frei erfunden)

Ich werde wahrscheinlich mehrfach 100.000 fach diese Abfrage brauchen und vermute, dass das sich das kein Server von mir gefallen lassen würde. Ich brauche also eine offline-Kopie mit Routingfähigkeit für Fußgänger und eingebauter Adressauflösung.

Der stärkste Rechner, der mir zur Verfügung steht, läuft unter Linux (Debian), aber auch Windows und MacOS wären möglich.

Bisherige Erfahrungen:
Es gibt ein Program, traveling_salesman-1.0.3-RC1.jar, welches das theoretisch leisten kann, der Aufruf wäre z.B.
java -Xmx4096m -jar traveling_salesman-1.0.3-RC1.jar route -csv file.csv [51.502368,11.955579] [51.506245,11.960313]
dabei wird dann ein CSV-File erzeugt, und in der letzten Spalte Distanzen in Metern angegeben.
Das Problem hier ist: Diese Distanzen beziehen sich auf die Fahrstrecke mit dem Auto und übertreffen entsprechend den Fußweg häufig bei weitem. Außerdem kann ich keine Adressen eingeben, sondern nur GPS-Daten und ich kenne nur echte Adressen.
Tatsächlich gibt es hier wohl ein Plugin für Fußgängernavigtion, ich kann dieses aber nicht finden (so es wirklich existiert) und es fehlt eben die Adressauflösung.

Die tatsächliche Routenführung interessiert mich nicht direkt, es geht nur um die Distanz, auch eine Oberfläche brauche ich nicht.

Ich fasse meine Anforderungen nochmal zusammen:

  • offline oder ein wirklich belastbarer Server
  • Betriebssystem egal
  • Adressauflösung
  • Fußgängernavigation
  • Skriptbarer Aufruf (Komandozeile, CSV-Import …)
  • möglichst effizient, da wirklich häufiger Aufruf notwendig

Ich wäre für eine detailierte Anleitung wirklich dankbar.

Kannst ja mal probieren, ob Du
https://github.com/DennisOSRM/Project-OSRM/wiki
auf “Fußgänger getrimmt” und “ohne Kartenanzeigekladderadatsch” hinbekommt.
Im Zweifel DennisL vom Projekt “anhauen”.

PS
“Berlinerstraße 12, Berlin” nach [52.1717,11.1818] wären demnach 221 km :wink:

Das kannst Du auch mit “gosmore” machen, public domain, einfache Routing-Engine, schnell aufsetzbar, kann Fusswegrouting.

Aber: Keine dieser Routing-Engines hat einen eigenen Geocoder. Den Schritt von “Adresse” nach “Koordinate” musst Du separat vorher machen. Dazu kannst Du Dir “Nominatim” installieren, oder eventuell den Mapquest-Nominiatim-Dienst ansprechen. Diese Geocoding-Ergebnisse solltest Du Dir dann speichern, und nicht bei jeder Berechnung neu holen. Allerdings kann es sein, dass die OSM-Daten Dir nicht gut genug sind (vielerorts ja keine Hausnummern, d.h. Deine Adresse wird irgendwo auf der Strasse positioniert, was im schlechtesten Fall ja durchaus mal 1km Fussweg mehr sein kann). In dem Fall musst Du Dich nach einer anderen Geocoding-Quelle umsehen - Google ginge, ist aber vermutlich nicht erlaubt (lies die AGB), und ansonsten gibts natuerlich gewerbliche Dienste, die kosten dann aber meist so ab 10 Cent pro Adresse.

Bye
Frederik

Hi,

Fall die vielen sich dabei ergebenden Wege sehr oft mehrfach benutzt werden (z.B. bei “Wie lange braucht man von einem Punkt aus zu allen Kreuzungen in 2km Umkreis”), dann sind Einzelabfragen nach der Weglänge sehr viel weniger effizient als eine gemeinsame Berechnung aller Werte.

Nur für den Fall…
Weide

http://wiki.openstreetmap.org/wiki/Traveling_salesman wurde von Marcus Wolschon entwickelt. Der ist zumindest bei der aktuellen Entwicklung des OSM-Android-Editord Vespucci noch aktiv. Vielleicht ihn mal anschreiben.

Und ich gehe davon aus, dass du sämtliche Übersichten auf http://wiki.openstreetmap.org/wiki/Routing schon kennst …

Vielen Dank für die vielen Hinweise, in der aktuellen immer-viel-zu-tun-Phase habe ich nicht gleich geantwortet, wohl aber verschiedene Tipps ausprobiert und durchdacht.

Traveling_Salesman habe ich ausprobiert, da es eben die gewünschte Aufrufbarkeit aus Skripten bietet. Den Weg, wie ich als “engine” Fußgänger einstellen kann, der erschließt sich mir dabei leider nicht, es soll wohl ein PlugIn o.Ä. geben, aber das konnte ich nirgendsfinden.

Danke auch an Weide, verschiedene Caching-Strategien habe ich mir auch schon durchdacht. Wenn man den weiß, dass der kürzeste Weg von A nach C über B führt, dann ergibt sich auch der kürzeste Weg von C nach B, außerdem kann man auch über Luftlinienberechnung recht trivial viele uninteressante Paare von Clients und Servern ausklammern. Leider habe ich aber noch keine Informationen, die ich versuchen könnte effizient zu cachen.

gosmore mit Nominatim werde ich noch ausprobieren. Bei GMaps braucht man nicht jenseits der 100 Anfragen zu probieren und ein IP-Wechsel-Router-Script … nee.

Recht fetzig, schnell und genau scheint mit bahn.de (von der Deutschen Bahn) zu sein, auch auf dem Server echt schnell und keine AGB dazu, dürfte man also Powerusen dürfen :). Vllt. kann ich da mit cUrl was machen. Da könnte man den Client-Menschen auch noch ÖPNV-Nutzung unterstellen, so bin ich drauf gekommen.

OSRM habe ich schon ausprobiert, hatte aber bei der Installation auf dem Mac erstmal größere Probleme. Ideen habe ich erstmal genug, werde jetzt demnächst alle mal antesten und hier gerne auch Ergebnisse verbreiten.

Vielen Dank soweit.