Java-Bibliotheken für Routing gesucht

Nur aus Interesse: kennst Du da konkrete Vergleiche/Benchmarks mit Routing in Java vs. C/C++?

Also, ich suche immer noch einen wirklich guten Rad-Routenplaner, der flexibel konfigurierbar und anpassbar ist :wink:

So in die Richtung:
http://openrouteservice.org/ - mehrere Rad-Profile + Rad-Routen bevorzugen
http://www.routino.org/uk/router.html - konfigurierbar
http://igf-project.igf.uos.de/fahrradies/ - mehrere Rad-Profile + Profileditor
http://www.komoot.de/ - berechnet Rundtour (im Idealfall) mit POIs

Nur halt eine Mischung aus allen, Open Source und bevorzugt in Java.

Mit Berücksichtigung (bevorzugen/vermeiden) von:

  • neben highway weitere Tags wie tracktype, surface,…
  • Steigung
  • Wanderwege und Radrouten (route Relationen)
  • Umgebung/POIs, z.B. “im Wald”, “am Wasser entlang”, Aussichtspunkte

Gruß,
Norbert

opentripplaner ist so ein multiple attribute routing engine. evtl. geht das ja schon für dich? (BTW: opentripplaner braucht relativ viel RAM)

Nur aus Interesse: kennst Du da konkrete Vergleiche/Benchmarks mit Routing in Java vs. C/C++?

generell kann man sagen dass C/C++ ca. 2-3 mal schneller ist und weniger RAM braucht. wieviel weniger es braucht hängt davon ab (grob gesagt) wie viel man von den object oriented features in java nutzt.

Danke. Den hatte ich mir auch schon vorgemerkt, falls ich tatsächlich selbst mal selbst zu basteln anfange. Das reine Radrouting auf trimet.org hat mich aber noch nicht so überzeugt.

also reines radrouting sollte mit graphhopper schon jetzt (mit minimalen aufwand) möglich sein, jedoch gibts von deiner seite her ja viel mehr anforderungen :slight_smile:

Also, ich suche immer noch einen wirklich guten Rad-Routenplaner, der flexibel konfigurierbar und anpassbar ist wink
So in die Richtung:
http://openrouteservice.org/ - mehrere Rad-Profile + Rad-Routen bevorzugen

was sind rad profile? und wie sind rad routen in OSM gespeichert?

http://www.komoot.de/ - berechnet Rundtour (im Idealfall) mit POIs

aha, aber das ist ja dann eher traveling salesman als shortest path :slight_smile:

(a) z.B. Profil MTB-Rad oder Rennrad
(b) als Relation mit type=route, route=bicycle

Ich hatte einfach mal laut geträumt, in der Hoffnung, dass sich evtl. jemand für die Umsetzung begeistern kann :wink:

Also im Prinzip Fahrzeug/Nutzer-Typen, für die es bestimmte Präferenzen gibt. D.h. für die jeweils eine spezielle Gewichtung z.B. je highway Tag hinterlegt ist. Im Wiki hat sich zum Beispiel mal jemand Gedanken zu Routing profiles gemacht.

Zu sehen z.B. bei http://opencyclemap.org/ oder http://cycling.waymarkedtrails.org/de

Aber würde mich doch jetzt glatt mal interessieren, was ein sinnvolles Rad-Routing überhaupt ist.
Annahme: Man ignoriert, motorways und trunks. Nimmt an, dass man secondaries und tertiaries befahren kann. Residentials sowieso. Geht davon aus, dass Fahrradfahrer für gewöhnlich notfalls auch Einbahnstraßen ignorieren, von Abbiegevorschriften ganz zu schweigen… evtl. notfalls auch den Fußweg nehmen oder auf Schotterpisten fahren, jedoch Matschwege (Grade5) doch lieber Wanderern mit Gummistiefeln überlassen … hmmm… ???
Was ist also Radrouting?

Kommt drauf an ob legal oder, wie Du schreibst, Einbahnstraßen ignoriert werden. Der Rest ist eine Frage des Malus/Bonus Systems. Wobei da nicht nur Wege (u.A. Primary und Steps hast Du in Deiner Aufzählung vergessen) oder Eigenschaften von Ways (bspw cobblestone) sondern auch Nodes (bspw cycle barrier) berücksichtigt werden müssen.
aighes ist hier einer der Experten dafür. Falls er nicht mitliest, schreib ihn mal an

Es gibt nicht ein Radrouting sondern viele, je nach den Bedürfnissen der unterschiedlichen Radfahrergruppen.

Beim Garmin Oregon z.B. gibt es Cycling, Tour_Cycling und Mountain_Biking.
Beim Mio Cyclo 300 gibt es Stadtrad, RennRad und Mountainbike.

Nach meiner Meinung gibt es mindestens vier Nutzertypen.

  • Stadtrad: Liebt es gemütlich und sicher, kein sportlicher Ehrgeiz.
    Bevorzugt Radwege und Seitenstraßen.
  • Rennrad: Liebt es schnell zu fahren, oft auch mit sportlichen Ehrgeiz.
    Bevorzugt glatte Straßen und Wege.
  • Mountainbike: Nimmt auch mal gerne kleine schwierige Wege.
    Wirtschafts- und Waldwege sind kein Problem.
  • Tourenfahrer: Fährt gerne Strecken abseits der großen Straßen.
    Feld- und Waldwege (grade=1/2, zum Teil grade=3) sind kein Problem.
    Ein Mittelding zwischen Rennrad (Strecke) und MTB (muss nicht alles glatt sein).

Es gibt natürlich nicht “den” MTBler, da gibt es viele Abstufungen, vom Tourenfahrer, der auch mal schwierige Wege fahren will, bis zum Downhill-Freak.

Edbert (EvanE)

Kernfrage: Macht es da eigentlich noch Sinn über “Routing” zu diskutieren?
Ich meine, ein Routing soll mir ja helfen, den schnellsten oder kürzesten Weg von A nach B zu finden.
Ob es geeignet ist, möglichst viele Umwege zu fahren, damit bestimmte Matschpisten möglichst dreimal umrundet werden und danach zur nächstgelegenen Dusche zu routen…
Ich denke, dass es sinnvoll ist, ein Fahrrad als Verkehrsmittel zu betrachten. Nicht unbedingt als Sportgerät.

Der einzige Router, den ich kenne, der Rundkurse vorschlägt, ist http://www.komoot.de/

Beim MTB-Profil gibt es eine “Alpin”-Einstellung, weiß aber nicht, ob das jetzt Höhenmeter meint oder nur Pfade bevorzugt. Ich komme mit Komoot allerdings nicht so klar, liefert mir zu viele Vorschläge mit Rückweg auf gleicher Strecke und ist mir zu sehr auf abklappern von POIs fixiert.

Eine Alternative ist die Suche bei einem Tourenportal, z.B. http://www.gpsies.com/trackList.do mit u.a. Länge von/bis und Gesamtanstieg von/bis.

Gruß,
Norbert

Ja, zumindest ein Teil der Anforderungen ist bestimmt auch mit einem normalen Routing-Algo zu lösen. Wir können es von mir aus aber auch “softwaregestützte Freizeit-Tourenplanung” nennen. :wink:

Mir nicht. Mir soll es helfen, den ruhigsten und schönsten Weg von A über B, C und D wieder zurück nach A zu finden. Umwege nehme ich in Kauf. Die Zwischenpunkte setze ich im einfachen Fall so lange selbst, bis das Ergebnis passt. Zwischen den Punkten ist es jeweils wieder A nach B Routing mit Gewichtung zusätzlich zur Länge/Geschwindigkeit. Und je passender das Routing, desto weniger Zwischenpunkte muss ich setzen, um die Route zu korrigieren.

Da machst Du es Dir als Entwickler halt einfach, blendest damit aber die Zielgruppe der Outdoor-Navis aus.

Ich gebe zu, es ist nicht einfach zu definieren, was z.B. “ruhig” und “schön” ist und jeder hat da andere Vorstellungen. Deshalb wäre für mich ein guter Rad/Freizeit-Router vor allem eines: konfigurierbar. Zum Beispiel wie bei Routino oder den verschiedenen Garmin-Karten.

Gruß,
Norbert

Ja es macht Sinn, auch Routing für den Freizeit-Bereich vorzusehen.
Schließlich ist das beim Radfahren und Wandern oft der Hauptzweck. Beim Auto mag das anders sein, aber schon die Motorradfahrer wünschen sich auch die Berücksichtigung/Bevorzugung von ‘schönen’ Strecken.

Beim Radfahren sind die Wünsche je nach Ausprägung (Stadt, Tour, MTB, Rennrad) sehr unterschiedlich. Und in der Freizeit sind Rundtouren durchaus gewünscht. Schließlich will man oft am Ende seiner Tour wieder zurück nach Hause. Und was die Höhenmeter und die Steilheit angeht sind die Wünsche durchaus verschieden. Der Eine will möglichst wenige und wenn dann sanfte Anstiege (z.B. Familien-Ausflug), während das für den Anderen gerade die sportliche Herausforderung ist (z.B. Rennrad, MTB).

Edbert (EvanE)

Weichen wir jetzt nicht ein wenig vom eigentlichen Thema Java-Bibliothek für Routing gesucht ab?

Natürlich kann ein normaler Router die Kosten aufgrund von Straßenbeschaffenheiten bewerten und entsprechend die “schönsten” Strecken wählen, wenn diese z.B. nicht länger als z.B. Faktor 1.5 der kürzesten Strecke sind. Das sollte eigentlich jeder Router können.
Ist nur eine Frage der Bewertung der Weg-Typen.

Die meisten der obigen Fragestellungen sind Sonderlocken.
z.B. Aneinanderkettungen von Teil-Routen, manuelle Eingriffsmöglichkeiten oder eben Rundreiseprobleme (TSP).

Nun ja, es gibt einfach die Frage ein Ausgangs-/Endpunkt und eine Rundstrecke mit xx km oder yy Stunden usw. Das Mio-Cyclo hat so eine Funktion (SurpriseMe Modus) implementiert. Das hat nun wenig mit dem Traveling Salesman Problem (Optimierung der Reihenfolge vorgegebener Anlaufpunkte) zu tun. Hier ist nur ein Punkt festgelegt.

Edbert (EvanE)

Ich will das jetzt auch nicht weiter vertiefen. Ich wollte nur die Gelegenheit nutzen - wenn schon mal zwei Autoren da sind - und Werbung für ein Anwendungsgebiet machen, das im Gegensatz zur Autonavigation noch nicht so gut abgedeckt ist.

Und um zurück zum Thema zu kommen:

@TrafficJam: seit ihr mit GeoTools noch klargekommen oder habt ihr was anderes verwendet?

Gruß,
Norbert

Weichen wir jetzt nicht ein wenig vom eigentlichen Thema Java-Bibliothek für Routing gesucht ab?

Nö, oder :slight_smile: ? Was heißt denn Routing? Nur kürzesten/schnell Wege?

Ich denke, es sind eher “beste” Wege und da ist multi-attribute halt das allgemeinste und (noch) kompliziertere … allerdings sobald mehr als 2 (oder 3) punkte involviert sind tritt der traveling salesman auf, was dann für mich ne andere problemstellung als routing wäre…

aber danke allen für den input :slight_smile: !

so ne fahrradgeschichte, am besten kombiniert mit DB, wäre cool und ist durch nen trick auch praktisch möglich. mal schauen was die nächsten monate so bringen.

Ich glaube du verwechselt da zwei Dinge:

  • Traveling Salesman (T-S) hat als Aufgabenstellung:
    Ich will x Punkte anfahren, suche mir die günstigste Reihenfolge
    mit der insgesamt optimalen (nach den vorgegebenen Kritereien)
    Route heraus. (Oft auch mit Rückkehr zum Startpunkt)
  • ‘Normales’ Routing hat als Aufgabenstellung:
    Ich will von A nach E mit den Zwischenpunkten B, C und D.

Der Unterschied ist bei T-S ist die Reihenfolge der Punkte variabel (und zu optimieren), während beim normalen Routing die Reihenfolge der Zwischenpunkte vorgegeben ist. Sofern der Abstand (Luftlinie) zwischen zwei aufeinanderfolgenden Punkten geringer ist als der Abstand zwischen den Endpunkten, dürfte dies das Routing sogar erleichtern, da kürzere Teilstrecken zu berechnen sind.

Selbst bei Rundstrecken dürfte sich die Berechnung vereinfachen, da die Unterteilug in mehrere Teilstrecken die Komplexität reduziert.

Edbert (EvanE)

Ich glaube du verwechselt da zwei Dinge:

nee, meinte ich so. nur hatte ich es so verstanden dass man bei bestimmten POI vorbei will und die reihenfolge eben nicht fest steht. egal …

Aus meiner Erfahrung mit Outdoor-Navis kenne ich nur die Variante mit der festgelegten Reihenfolge. Ob es PKW-Navis gibt, die auch die Reihenfolge optimieren können (dann wirklich das Travelling Salesman Problem), entzieht sich meiner Kenntnis.

Edit: Wir meinte beide schon das Richtige. Nur in der Frage der Reihenfolge hatten wir unterschiedliche Voraussetzungen und kamen daher zu anderen Schlußfolgerungen.

Edbert (EvanE)