BRouter: offline Fahrrad-Routing für Android

Hi Arndt,
vielen Dank für die Antwort. Die Segmentdateien will ich natürlich auf der externen SD Karte haben. Also bleibt mir nur die OruxDB zu kopieren. Das geht dann auch wenn man das Routing intern von Oruxmaps nutzt.

…aber dann geht das Routen mit BRouter mit “from/to” nicht. Bei mir kommt dann die Meldung

…Sucess
no from/to found
(coordinate-source:/mnt/sdcard/external_sd/osmand)

… warum er da ins osmand direktory geht kannst nur Du wissen. Er sollte in dem Fall im …/OruxData/tracklogs suchen. Aber selbst da würde er nur die kopierte DB mit dem from/to finden. Suchen sollte er aber im
aktuellen /mnt/sdcard/oruxmaps/tracklogs Direktory. Ich nutze Brouter um mir mehere alternativen zu generieren. Das geht ja intern in OruxMaps nicht, ODER?

Das mit dem from/to ist eine feine Sache seit man die from/to Marker verschieben kann. Ist das nicht möglich dieses auch in OruxMaps via Intent aufzurufen, ohne dass man OruxMaps verlassen muß um BRouter mehrmals zu starten? Angenehm ist, dass da GPX Routen/Files angelegt werden…

Wie aber schon oben erwähnt, unter 2.3.3 auf dem Huawei X3 funktioniert das gut

…genau so mache ich das ja. Aber da klappt das Zusammenspiel OruxMaps mit BRouter nicht! Genau das ist mein Problem, welches von Arndt bestätigt wurde… und hoffentlich bald abgemildert wird.

Hi,

Ich antworte mal gesammelt:

zur /sdcard-Problematik: die Probleme entstehen mit Android-4, wo /mnt/sdcard in der Regel garkeine Karte mehr
ist, sondern fest eigebaut, aber trotzdem was anderes als der “interne Telefonspeicher”, wo die Apps selbst
installiert sind (und auch nochmal ein Arbeitsverzeichnis haben, wo sie Dateien ablegen können. Mein bisheriger
Ansatz, das Basisverzeichnis für die BRouter-Dateien und für die Suche nach den Wegpunkte-Datenbanken der Maptools
gleichzusetzen funktioniert bei Oruxmaps nicht mehr, weil Oruxmaps bzgl. der Datenbankfiles fest gegen die
eingebaute Karte (/mnt/sdcard) programmiert ist. Ich werde BRouter entsrechend flexibler machen.

Zur Geschwindigkeit: Das mit den 3 Durchgängen stimmt, und der erste entspricht dem, was sie
bei OsmAnd “Routing” nennen und der dritte dem, was sie bei OsmAnd “precice Routing” nennen. Ich mache
den ersten Durchgang aber nur, um eine obere Schätzung zu bekommen, die beim dritten Durchgang das
Suchgebiet besgrenzen soll und würde nicht auf die Idee kommen, das Ergebnis des ersten Durchgangs als
Routingergebnis zu verkaufen. Das ist nämlich keins.

Andere setzten auf contraction-hirachies, also vorberechnete Teil-Routen, aber dabei geht jede Konfigurierbarkeit verloren.

Was ich tatsächlich plane nenn ich “fast partial recalculations”, um speziell das Problem der Neuberechnung nach
Track-Abweichung zu lösen. Das kann man natürlich bisschen weiter spinnen, indem man nicht nur einen
“vorher berechneten Track” speichert, auf den man sich bei einer partiellen Neuberechnung bezieht, sondern
mehrere, und da wird der Übergang zu den contraction-hirarchies fliessend. mal sehen.

zu den paarweisen Radwegen ich denke, ich werd’s mal so probieren, dass ich mich mal auf die gemappte Richtung des Radweges beziehe und nur eine kleine Symmetriebrechung einbaue, (± 2% Kostendifferenz oder so), so dass in der Regel die richtige Seite genommen werden sollte. onway=yes für solche Wege halte ich für problematisch.

Gruss, Arndt

Oh man, ich war echt zu doof :roll_eyes:! Vielen Dank für Deine GEDULD hier :D!

Ahhh, JETZT hab ich auch das verstanden :). Nun funktioniert alles wunderbar. Ich finde es nur etwas schade, dass man nicht die Länge der Strecke anzeigen lassen kann. Aber das ist ja ein OruxMaps Problem…

…also auf Umwegen geht das schon. Ich habe auch lange gesucht. Vorgehensweise:

-Routen mit BRouter erstellen ( Einstellungen Track/Route muss Routenstart angehakt sein!!!)
-KURZ (!!!)auf den Marker am Routenanfang klicken
-Im Kontextmenü runterscrollen und die Route speichern
-Route entfernen
-Abgespeicherte Route laden
-Auf Routenanfangmarker klicken (kurz)
-Im Kontextmenü gibts jetzt zwei Abschnitte (Wegpunkt) und (Route)
-Im zweiten Abschnitt steht dann zum Beispiel die Strecke …etc…

Ich hoffe das hilft dir etwas.

BRouter auf Nexus 7 (Android 4.3)

Das Thema zieht sich ja leider schon recht lange dahin, nachdem es wieder bei einem klappt, schliesse ich mich mit "geht nicht " an :slight_smile:

Ich habe bereits alle möglichen Pfade ausprobiert (Post 155), das Nexus 7 hat hier nahezu alle im Angebot, die dann im selben Verzeichnis landen (es sieht zumindest so aus)

Stand:
Ich erhalte nach der Installation die Verzeichnisabfrage die ich bestätige
dann kommt die Profilauswahl → Hier wähle ich z.B Trecking
Dann erhalte ich eine Fehlermeldung:
An Error occured
java.lang.RuntimeExeption:java.ioEOFExeption
->Jetzt kommt man nur noch mit deinstallieren und reinstallieren weiter, man erhält sonst immer die Meldung.

Habt ihr noch ein paar Tipps?

Gruß Ludwig

Ich tippe auf korrupte .rd5 Dateien, z.B. abgeschnittene (also zu kleine) Kannst Du mal die Datei-Grössen der verwendeten RD5-Dateien prüfen?

Danke für den Tipp .-)

Sieht gut aus - jetzt geht`s ans testen.

ludwich

Ich habe heute die Version 0.94 deployed, die diese Änderung enthält. Siehe http://brensche.de/brouter/revisions.html

Alle unterstützten Mapttools (osmand/locus/oruxmaps) werden jetzt immer zusätzlich unter /mnt/sdcard gesucht (genauer: unter Environment.getExternalStorageDirectory() )

Ausserdem habe ich einen Fehler in der Fehlerbehandlung im Service-Interface behoben, so dass man dort jetzt bessere Fehlermeldungen bekommt.

Hallo Arndt,

…werde ich dann mal testen. Danke für das Update.

Bei OruxMaps ist das unangenehm, dass man bei jedem Routen die Parameter neu einstellen muß. Oder dass man das in der Konfiguration einstellen kann. Hast Du einen direkten Draht zu dem Oruxentwickler um das anzuregen, im Forum geht das meistens unter.

Eine andere Frage: Kann mann mit Oruxmaps mit der Routingfunktion auch gleich die alternativen generieren (zB.:Parameter Anzahl=3) und es werden entsprechend Brouter Files erzeugt, ohne BRouter extern aufrufen zu müssen…

Hallo Arndt,

also auf meinem LG_P700 mit der Android Version 4.0.3 läuft das in Verbindung mit Oruxmap jetzt.

Was mir (!) nicht so gefällt ist folgendes, aber man kann damit leben!!!

Ich habe zur Zeit OruxMaps V5.5.3beta11.

OruxInstallationsdir: /mnt/sdcard/oruxmaps/
OruxDaten: /mnt/sdcard/external_sd/OruxData

BRouter DirAnfrage : /mnt/sdcard/external_sd/

-Installation funzt jetzt.

Was mir nicht so gefällt, dass BRouter wenn man den außerhalb von Oruxmaps mit den “from/to” Parametern startet werden die Routingfiles im Oruxmaps dir wo die Datenbank ist abgelegt ==> /mnt/sdcard/oruxmaps/tracklogs

und nicht im erwarteten OruxDatendirektory also auf ==>/mnt/sdcard/external_sd/OruxData/tracklogs

Oruxmaps sucht aber DEFAULT mäßig im konfigurierten Daten-Verzeichnis:==> /mnt/sdcard/external_sd/OruxData/tracklogs

Somit muß man jedesmal beim Laden der “brouterx.gpx” Files jedesmal das Direktorie wechsen und das ist unschön.

Schön wäre auch, wenn man mit einem Lauf von BRouter gleich x Alternativen (zB: 4) generieren könnte, ohne jedesmal den BRouter zu beenden und wieder neu zu starten.

Aber ich kann damit leben und das soll nur als eine konstruktive (!!!) Kritik aufgefasst werden.

Für Deine Arbeit nochmals vielennDank
Achim

Habe heute die Version 0.9.5 von BRouter deployed ( http://brensche.de/brouter/revisions.html )

Neben einer allgemeinen Performance-Verbesserung und einer Sonderlocke fürs Car-Routing (“car-subset” files) addressiert das insbesondere das Problem des Timeouts im Service-Interface, und ich nenne das “timeout-free recalculations”.

Das alles mit dem Ziel, eine praxistaugliche Lösung für die Langstrecken-Navigation zu schaffen.

Ist im Moment noch bisschen akademisch, weil das Service-Interface ja bisher nur von Oruxmaps unterstützt wird, und Oruxmaps aber keine dynamische Neuberechnung macht, wenn man von der Route abweicht. Locus unterstützt das Service-Interface aber in einer beta-Version auch schon ( http://forum.locusmap.eu/index.php?topic=3423.msg24024#msg24024 ), und Locus kann dynamisch neu berechnen.

Ich selbst benutze es aber meist mit OsmAnd und einer ziemlich wackeligen Proxy-Strecke, denn OsmAnd selbst kann BRouter noch nicht direkt aufrufen.

Wa jetzt funktoniert ist, bis zu mittleren Distanzen (=30km Luftlinie Fahhrad, 50km Luftlinie Auto) einfach garnicht drüber nachzudenken, sondern einfach das Ziel in’s Maptool einzugeben, und bis zu "gewöhnlichen Langstrecken (300km Fahhrad, 500km Auto) die Strecke einmalig über die BRouter-App zu berechnen (was dann 10 Minuten dauern kann), dem dann aber per Zielfürhung mit schnellen automatischen Neuberechnungen nachzufahren.

Aber wie gesagt: interessant wird das, wenn OsmAnd das kann (ich bleib dran…).

Hallo

ich habe mir mit dem BRouter Bundle 0.92 eine Desktopanwendung in Verbindung mit dem GPXCreator zusammengebaut. Das funktioniert eigentlich sehr gut, aber nur für kurze Strecken. Ich finde keine Möglichkeit das “Ende” eines Routingauftrags an BRouter zu erkennen. Nur die Abfrage ob der entsprechende File da ist scheitert, weil dieser vermutlich noch nicht vollständig generiert ist.
Eine Funktion die wartet und das Ende des Routingauftrag signalisiert wäre super.

Gibts dafür eine Lösung oder ein neues Desktop Bundle?

Wird die Dektopvariante (API) weiterhin gepflegt und unterstützt?

Derzeit wird auch im Routconverterforum über eine Integration vom BRouter in Verbindung mit dem Mapsforge-Rewrite diskutiert, dazu sollte aber die obige Funktion realisiert werden können.

Ich habe im Google Forum sinngemäß die gleiche Frage gestellt, da ich erst heute entdeckt habe.

Grüsse Achim

Ps: Ich habe mal das brouter095.jar versucht, analog zu der brouter095.jar Version, aber da wird keine Ausgabe generiert. WindosXP mit Java 1.7
Segmente und Profiles sind geladen.
Gibts für das Main Programm wieder eine Source?

Aufruf:



D:\GPS\BRouter\brouter_0_9_5>java -jar brouter095.jar segments2 8.774144 48.914457 8.821399 48.913996 profiles2/trekking.brf
BRouter 0.95 / 01092013 / abrensch

...keine weiter Ausgabe und es wird kein GPX File generiert.....


Hallo Achim,

und sorry, dass ich bisschen “mailfaul” war.

Ja, das ist genau die Idee, dem distribution-zip zukünftig immer auch die Server-Variante als jar-file beizufügen, und in der 0.95 ist’s ja drin, nur leider, wie Du ja festgestellt hast, nicht ganz zuende getestet. Und leider auch nicht dokumentiert, die wenige Zeit, die ich letzte Woche hatte, hat einfach nicht gereicht und mein Focus war die Performance und dieser timeout-freie Neuberechnungsmechanismus im Service-Interface, war mir wichtig, aber eine harte Nuss.

Ich habe tatsächlich in 0.95 den asynchronen Aufruf, der Deine Probleme mit dem Abbruchkriterium verursacht, eliminiert (das war ja nur für die Android-App sinnvoll) und durch einen ganz normalen synchronen Aufruf ersetzt. Daher kommt aber der Fehler, den Du unten beschreibst, da fehlt noch eine Anpassung.

Ich bring das heute abend mal in Ordnung und schick Dir dann die passenden Sourcen.

Hallo Arndt,

gibt es schon eine “NEUE” Desktop Version mit dem synchronen Aufruf?

Grüsse Achim

Ja seit eben gibt es die Version 0.96: http://brensche.de/brouter/revisions.html

Den Source-Code habe ich Dir per Email geschickt.

0.96 beinhaltet im wesentlichen Bugfixes, aber etwas interessantes ist auch dabei für die, die sich für den Algortithmus näher interessieren.

Denn erstens habe ich den bisschen beschrieben: http://brensche.de/brouter/algorithm.html

Und zweitens die “heuristischen Koeffizienten” in die Konfiguration übernommen, sodass man sie ändern kann und damit rumspielen (und z.B. die superschnellen, aber ungenauen Berechnungen herbei-patchen, von denen manche ja glauben, bei OsmAnd, Skobbler, Navit und co. könnten die Entwickler zaubern…)

Und noch was interressantes habe ich: ich hab’s geschafft, OsmAnd aus den Sourcen zu bauen (in der Version ohne native Bibliotheken) und da die direkte Schnittstelle zu BRouter reingebaut. Das ganze ist noch schwebend als Pull-Request auf GitHub:

https://github.com/osmandapp/Osmand/pull/537

Aber eine Binär-Version habe ich jetzt einfach mal bei mir hochgeladen:

http://h2096617.stratoserver.net/brouter_bin/osmand_161_alpha_nolibs_brouter.zip

Das ist natürlich Bastelkram, ohne die nativen Libs ist das rendering schon spürbar langsamer, und das APK ist mit dem Debug-Key signiert (man muss also eine release-version erst deinstallieren), und paar Übersetzungen musste ich auch löschen, aber die Verbindung zu BRouter funktioniert tadellos und die automatischen Neuberechnungen (auch bei langen Strecken) machen richtig Freude.

Ich denke, ich bin da mit der GPL-Lizenz von OsmAnd im reinen, habe ja den Source-Code der Änderung als Pull-Request publiziert und das ganze im beliegenden readme.txt beschrieben - wenn’s jemand besser weiss wäre ich für einen Hinweis dankbar.

Ich bin guter Hoffnung, dass der Patch in die OsmAnd releases eingeht, Victor ist noch bisschen zickig und will z.B., dass man die Option in OsmAnd nur sieht, wenn BRouter bereits installiert ist, aber das krieg ich hin.

Hallo Arndt,

die neue Version mit dem sychronen Routingaufruf funktioniert jetzt bei mir sehr gut!

Vielen Dank
Achim

Könnte man das nicht einfach als Plugin für OsmAnd machen, oder wäre das zu aufwendig?
Einige Features von OsmAnd sind ja eh schon als Plugin ausgelagert (Parking, Höhenprofil …).
So wäre man etwas unabhängiger von Victor und seiner OsmAnd-Entwicklung.
Wenn der BRouter sowieso noch extern installiert werden muss, könnte man das gleich
ins Plugin bündeln.

Hallo Arndt,

ich habe mal die 096 Version auf meinem LG P700 mit Android 4.0.3 und auf einem Huawei X3 mit Android 2.3.3 installiert, das läuft soweit mit OruxMaps zusammen.

Mir ist folgendes aufgefallen:

Startet man BRouter und routet from/to kommt am Ende bei der Version 0.95. Man kann also nict erkennen ob die 0.96 installiert ist.

Ferner ist bei der Android 4.0.3 das leidige Problem mit den Pfadangaben. Routet man mit BRouter mit from/to/via1…viax/ werden die Ausgabefiles auf die interne SD Karte abgelegt.

Bei mir zB: /mnt/sdcard/oruxmaps/tracklogs

Erwartet bzw. gewünscht hätte ich mir, dass das auf der externen SD Karte liegt bei mir zB.:

/mnt/sdcard/external_sd/OruxData/tracklogs

da dieses auch das “standard” Direktory für Oruxmaps zum Laden von Tracks und Routen ist.

Ist das im Sinne des Erfinders (Bug oder Feature)?

Grüsse Achim

Zwei Fragen:

  1. Gibt es in der Android-App (irgendwie) eine Möglichkeit, sich die aktive Zuordnung zwischen den Profilen und Service-Modes (als Übersicht) anzeigen zu lassen?

  2. Gibt es bzw. und wenn ja wie sehen die Planungen in Richtung Sprachunterstützung aus?

Gruß Klaus