You are not logged in.

#101 2013-06-04 18:21:24

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

GUFSZ wrote:

Eigentlich dachte ich mir, ich müsste eine Datei auf meinem Telephon mit einem Texteditor öffnen und umschreiben. Mir war/ist unklar, wo die Datei überhaupt zu finden wäre. Also ähnlich wie bei Windows die EXE-Dateien.

In einer APK-Datei (die eine ZIP-Datei ist und nur anders heisst) sind die compilierten Java-Klassen alle in der Date "classes.dex" in übersetzer Form enthalten. Es gibt mächtige Tools, um APKs zu modifizieren, die  "classes.dex" zu disassemblieren in so einer Art Assembler-Code ( "smali"-Dateien, die man lesen und verändern kan), das ganze wieder zu re-assemblieren und anschliessend neu zu signieren.

(Einfach mal googeln nach "apktool, smali, baksmali, APK Manager 5.0.2 und so)

So in der Art hatte ich das gemacht. Das ist zwar eine nette Spielerei, aber es lohnt sich nicht, irgendwas geht dann doch immer nicht.

Ich muss jetzt einfach mich doch mal durchbeissen, den OsmAnd Source-Build hinbekommen, ein vernünftiges Interface entwickeln und als GIT-Pull-Request ins OsmAnd Release bekommen. Victor sperrt sich ja nicht, obwohl das ja zu befürchten wäre, dass sie OsmAnd abschotten wollen gegen externe Router, aber ich glaube, das ist nicht der Fall, also mach ich's jetzt einfach richtig, dauert halt nur noch bisschen.

Offline

#102 2013-06-04 19:07:52

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: BRouter: offline Fahrrad-Routing für Android

Schaust Du dir die NullPointerException in Post #97 noch an, brauchst Du noch mehr Details? Ich hatte 3-4h für einen funktionsfähigen OsmAnd Source-Build investiert, nur um dann festzustellen, dass BRouter bei mir nicht im Server-Modus läuft. Wirklich sehr ärgerlich, dabei wollte ich den Router doch gerne mal testen.

Offline

#103 2013-06-04 22:52:52

womisa
Member
Registered: 2009-06-30
Posts: 445

Re: BRouter: offline Fahrrad-Routing für Android

Hallo Arndt,


planst du auch eine nahtlose Integration in OruxMaps mit Hilfe der Intents ? OSMAND hat ja schon ein Routing drin, was aber bei OruxMaps noch (?) fehlt. Da wäre der BRouter eine wirkliche sinnvolle Ergänzung.

Viele Grüsse
Achim

Offline

#104 2013-06-05 07:35:12

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

couchmapper wrote:

Schaust Du dir die NullPointerException in Post #97 noch an, brauchst Du noch mehr Details? Ich hatte 3-4h für einen funktionsfähigen OsmAnd Source-Build investiert, nur um dann festzustellen, dass BRouter bei mir nicht im Server-Modus läuft. Wirklich sehr ärgerlich, dabei wollte ich den Router doch gerne mal testen.

Ich komme erst am Sonntag wieder dazu.

Hast Du denn einen Stacktrace? Und welche Android Version? Bei mir läuft es auf 2.3.6 stabil, während ich bei 4.0.1 eher mal eine vorzeitgen Dienst-Stop kriege, was aber nicht wirklich ein Fehler ist, weil Android darf das.

Ich hab' Dir einen Download-Link geschickt für die BRouter-Sourcen, vielleicht magst Du's ja selber mal im Debugger laufen lassen. Der Dienst, um den es geht, ist in der Klasse BRouterService.

Offline

#105 2013-06-05 22:44:29

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: BRouter: offline Fahrrad-Routing für Android

Ich könnte den folgenden Stacktrace anbieten, den ich mit adb logcat eingesammelt habe. Vielleicht ist das einfach irgendein dummer Folgefehler, weil irgendwas in meiner Umgebung nicht stimmt oder vergessen wurde zu installieren und damit RouteServer nicht sauber instantiiert werden konnte? Leider habe ich ansonsten keine Meldung gefunden, die mich weitergebracht hätte. Getestet hatte ich BRouter mit Android 4.1.2.

/dalvikvm(30137): threadid=1: thread exiting with uncaught exception (group=0x40d412a0)
E/AndroidRuntime(30137): FATAL EXCEPTION: main
E/AndroidRuntime(30137): java.lang.RuntimeException: Unable to start service btools.routingapp.BRouterService@41a27468 with null: java.lang.NullPointerException
E/AndroidRuntime(30137): 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2548)
E/AndroidRuntime(30137): 	at android.app.ActivityThread.access$1900(ActivityThread.java:140)
E/AndroidRuntime(30137): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324)
E/AndroidRuntime(30137): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(30137): 	at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(30137): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
E/AndroidRuntime(30137): 	at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(30137): 	at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(30137): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
E/AndroidRuntime(30137): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
E/AndroidRuntime(30137): 	at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(30137): Caused by: java.lang.NullPointerException
E/AndroidRuntime(30137): 	at btools.routingapp.BRouterService.onStartCommand(BRouterService.java:42)
E/AndroidRuntime(30137): 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2531)
E/AndroidRuntime(30137): 	... 10 more

Mail geht übrigens am besten über OSM Nachricht senden, den Forum-Mailer habe ich nicht aktiv.

Offline

#106 2013-06-09 15:14:09

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

couchmapper wrote:

Ich könnte den folgenden Stacktrace anbieten, den ich mit adb logcat eingesammelt habe. Vielleicht ist das einfach irgendein dummer Folgefehler, weil irgendwas in meiner Umgebung nicht stimmt oder vergessen wurde zu installieren und damit RouteServer nicht sauber instantiiert werden konnte?

Danke, da wird Service.onStartCommand mit einem null-intent gerufen und die API sieht das wohl auch vor (wenn Android einen Dienst re-instanziert auf einem neuen Prozess, auch wenn ich nicht verstehe, warum Android das tun sollte)

Hab' jetzt bisschen dran geschraubt, (Version 0.9.2) so dass es zumindest anders ist (REDELIVER_INTENT, own process, null-check) und auf meinen beiden Geräten getestet, ich krieg nach wie vor paar störende Dienst-Stops auf dem Android-4 Gerät, aber wie gesagt, das liegt einfach am System, davon abgesehen läuft es bei mir stabil.

Vielleicht gibst Du dem nochmal einen Versuch.

Mit meinem eigentlichen Plan, ein neues, besseres, Interface zu implementieren, bin ich noch nicht weitergekommen.

Den Source-Link habe ich auch erneuert und an Deine bevorzugte Postbox geschickt.

Gruss, Arndt

Offline

#107 2013-06-11 07:02:46

Navi@Map09
Member
Registered: 2011-02-13
Posts: 38

Re: BRouter: offline Fahrrad-Routing für Android

Wir versuchten gerade mit BRouter offline Fahrrad-Routing für Android von den Koordinaten Freiburg Hbf From-Latitude 47.999160°N From-Longitude 7.843040°E nach München Hbf To-Latitude 48.140232°N To-Longitude 11.558335°E eine etwas längere Route zu erstellen. Obwohl bei uns die Dateien E5_N45.rd5, E5_N50.rd5, E10_N45.rd5, E10_N50.rd5 hinterlegt sind, erhalten wir die Meldung "An Error occured, multiple from-positions!(coodinate-source" angezeigt. Für kleinere Routing funktioniert BRouter ohne Probleme. Mit der online Version von BRouter erhalten wir die Meldung "Fehler: Datei http://h2096617.stratoserver.net/cgi-bi … trekking_0 kann nicht abgerufen werden. Status: ." angezeigt. Woran könnte es liegen, dass die Fehlermeldung bei uns erscheint? Ist die Route etwas zu lange?

Offline

#108 2013-06-11 09:55:09

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

Navi@Map09 wrote:

Wir versuchten gerade mit BRouter offline Fahrrad-Routing für Android von den Koordinaten Freiburg Hbf From-Latitude 47.999160°N From-Longitude 7.843040°E nach München Hbf To-Latitude 48.140232°N To-Longitude 11.558335°E eine etwas längere Route zu erstellen. Obwohl bei uns die Dateien E5_N45.rd5, E5_N50.rd5, E10_N45.rd5, E10_N50.rd5 hinterlegt sind, erhalten wir die Meldung "An Error occured, multiple from-positions!

"multiple from-positions" hat mit der Länge der Route nichts zu tun, es heisst, dass der "from" (und/oder "to") Wegpunkt mehrfach vorhanden ist. Einfach nochmal alle löschen und neu anlegen.

Mit der online Version von BRouter erhalten wir die Meldung "Fehler: Datei ... kann nicht abgerufen werden. Status: ." angezeigt. Woran könnte es liegen, dass die Fehlermeldung bei uns erscheint? Ist die Route etwas zu lange?

Bei "View Route" ist der Timeout ziemlich kurz und auch nicht von mir gemacht, sondern von dem Trackviewer.

Wenn Du "Download GPX" benutzt, ist der Timeout 30 Minuten, also solange da keiner dazwischenfunkt (jede neue Berechnung schiesst die laufende ab!) kann man da auch lange Routen mit ausrechnen.

Dein Beispiel hab ich eben mal gerechnet und das ging in wenigen Minuten (384 km, 1755 Höhenmeter).

Die GPX Datei musst Du dann lokal speiechern und in einem beliebigen Trackviewer ansehen (z.B. hier: http://www.gpswandern.de/gpxviewer/gpxviewer.shtml )

Offline

#109 2013-06-11 14:14:52

Navi@Map09
Member
Registered: 2011-02-13
Posts: 38

Re: BRouter: offline Fahrrad-Routing für Android

Ok, die offline App BRouter startet nun ohne Fehlermeldung. Wir hatten einfach vergessen die alten Werte unter OruxMaps zu löschen. Wenn wir jetzt allerdings mit dem Routing Profil car-test die Berechnung starten, stürzt die App nach ca. über Links: 510000 in 659s (772 l/s) immer ab. Woran könnte dies liegen?

Last edited by Navi@Map09 (2013-06-11 14:15:40)

Offline

#110 2013-06-11 22:01:55

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

Navi@Map09 wrote:

Wenn wir jetzt allerdings mit dem Routing Profil car-test die Berechnung starten, stürzt die App nach ca. über Links: 510000 in 659s (772 l/s) immer ab. Woran könnte dies liegen?

Es ist ein Speicherüberlauf. Das Problem ist allerdings speziell für das car-routing, weil meine Caching-Architektur mit dem Fall nicht klarkommt, dass in dem Profil nur über den kleineren Teil der Nodes geroutet werden kann, die anderen Nodes bleiben dann quasi in der Pipleline hängen und verschwinden nicht mehr aus dem Memory (Die selbe Strecke mit "trekking-steep" schafft mein Handy anstandslos in 20 Minuten.)

Ich denke mal drüber nach. Also die triviale Lösung ist natürlich, für's Car-Routing eigene Datefiles zu erzeugen, in denen die Feldwege garnicht drin sind (so machens die anderen ja auch) aber das widerspricht dem Konzept eines voll konfigurierbaren Routers. Vielleicht fällt mir aber auch was klügeres ein.

Für den Online-Dienst habe ich den Speicher jetzt mal auf 128 MB hochgesetzt, damit kannst Du Dir die Strecke ausrechnen. Mit den 24 MB, die Android einem Prozess zugesteht, geht car-test auf der Strecke leider (noch) nicht.

Offline

#111 2013-06-11 22:14:07

vipanny
Member
Registered: 2013-04-02
Posts: 8

Re: BRouter: offline Fahrrad-Routing für Android

Hallo Arndt,

wird es für Deine Online-Version auch irgendwann via-Punkte geben?

Viele Grüße big_smile

Last edited by vipanny (2013-06-11 22:14:24)

Offline

#112 2013-06-12 10:34:55

GUFSZ
Member
Registered: 2012-11-30
Posts: 408

Re: BRouter: offline Fahrrad-Routing für Android

Mal etwas ganz anderes. Ist es grundsätzlich möglich festzustellen, ob ein Weg in freier Wildbahn oder in besiedelter Gegend verläuft.

Ich bin zu der Meinung gekommen, dass es Wegtypen gibt, deren Priorität man je nach Umgebung wählen sollte. Damit sind hauptsächlich path und footway gemeint.

Ich habe mich im Odenwald mehrmals verfahren und wie mich da dein Routing rausführen wollte, war nicht brauchbar, weil der Path mit Radschieben nicht passierbar war.

Ich kenne dein Kostenargument. Aber ich glaube es gibt Wegtypen, deren Kostenerzeugung in der Stadt wesentlich geringer ist als Überland.

Oder Du kennst vielleicht die Leute, durch die Stadt will ich möglichst schnell, deswegen will ich Hauptstraßen. Fahre ich aber Überland, will ich eher ruhige Wege.

Last edited by GUFSZ (2013-06-12 10:47:32)

Offline

#113 2013-06-13 10:12:56

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

GUFSZ wrote:

Mal etwas ganz anderes. Ist es grundsätzlich möglich festzustellen, ob ein Weg in freier Wildbahn oder in besiedelter Gegend verläuft.

Ja, aber wirklich nur "grundätzlich", also die Renderer können ja auch die Polygone auswerten und die Wege dann über Wald, Feld oder Siedlungen zeichnen. Aber ich kann das nicht, zumindest nicht mit diesem Präprozessor, der das Planet-File verdauen kann mit seinen 2 Milliarden Nodes, da gibts einfach algorithmische Einschränkungen, die man nicht hat, wenn man ein begrenztes Gebiet komplett ins Memory laden kann und dann beliebige Korrelationen auswerten kann.

Ich bin zu der Meinung gekommen, dass es Wegtypen gibt, deren Priorität man je nach Umgebung wählen sollte. Damit sind hauptsächlich path und footway gemeint.

Ich habe mich im Odenwald mehrmals verfahren und wie mich da dein Routing rausführen wollte, war nicht brauchbar, weil der Path mit Radschieben nicht passierbar war.

Ich kenne dein Kostenargument. Aber ich glaube es gibt Wegtypen, deren Kostenerzeugung in der Stadt wesentlich geringer ist als Überland.

Ich kenne die Probleme im Odenwald auch. Das Trekking-Profil habe ich anhand von Strecken im Rhein-Main-Neckar Gebiet und im Westerwald justiert. Im Odenwald hat man das Problem, dass es zu den Landstrassen oft keine sinnvolle Alternative gibt, und wenn das Profil dann path/grade3 besser bewertet als highway=secondary, dann ist das Ergebnis entsprechend und man landet im Gestrüpp. Deswegen fahre ich dann eher mit "fastbike" durch den Odenwald.

Aber die Lösung ist vielleicht einfach ein Mittelweg aus "trekking" und "fastbike". Also fastbike + die Fernradwege-Präferenz aus "trekking" + grade2/grade3 bisschen aufgewertet, dann könnte das passen.

Last edited by abrensch (2013-06-13 10:15:14)

Offline

#114 2013-06-13 10:51:16

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

vipanny wrote:

wird es für Deine Online-Version auch irgendwann via-Punkte geben?

Hi,

ich hab' da nicht die Zeit und die Kraft dazu und die Online Version ist auch nicht mein Focus. Da gibt's ja noch mehr Sachen, die zum Himmel schreien wie dieser Location Picker mit Google-Maps und der Viagra-Werbung. Ist halt einfach nur so hingestrickt.

Aber wenn jemand Lust und Zeit hat, eine anständige Seite zu bauen, meine Unterstützung hat er und bekommt auch den Source-Code.

Offline

#115 2013-06-13 17:19:22

g0ldfish
Member
Registered: 2009-04-27
Posts: 290

Re: BRouter: offline Fahrrad-Routing für Android

abrensch wrote:

Hi,

ich hab' da nicht die Zeit und die Kraft dazu und die Online Version ist auch nicht mein Focus. Da gibt's ja noch mehr Sachen, die zum Himmel schreien wie dieser Location Picker mit Google-Maps und der Viagra-Werbung. Ist halt einfach nur so hingestrickt.

Aber wenn jemand Lust und Zeit hat, eine anständige Seite zu bauen, meine Unterstützung hat er und bekommt auch den Source-Code.

Vielleicht finden sich ein paar Leute zusammen? Ich könnte mir gut vorstellen daran mitzuarbeiten, habe aber sicher nicht für alles die nötigen Fähigkeiten. Und Arnd kann inzwischen weiter in Ruhe den Offline-Android-Router optimieren... (da warte ich nämlich auch drauf).

Offline

#116 2013-06-13 17:43:28

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: BRouter: offline Fahrrad-Routing für Android

abrensch wrote:
couchmapper wrote:

Ich könnte den folgenden Stacktrace anbieten, den ich mit adb logcat eingesammelt habe. Vielleicht ist das einfach irgendein dummer Folgefehler, weil irgendwas in meiner Umgebung nicht stimmt oder vergessen wurde zu installieren und damit RouteServer nicht sauber instantiiert werden konnte?

Danke, da wird Service.onStartCommand mit einem null-intent gerufen und die API sieht das wohl auch vor (wenn Android einen Dienst re-instanziert auf einem neuen Prozess, auch wenn ich nicht verstehe, warum Android das tun sollte)

Hab' jetzt bisschen dran geschraubt, (Version 0.9.2) so dass es zumindest anders ist (REDELIVER_INTENT, own process, null-check) und auf meinen beiden Geräten getestet, ich krieg nach wie vor paar störende Dienst-Stops auf dem Android-4 Gerät, aber wie gesagt, das liegt einfach am System, davon abgesehen läuft es bei mir stabil.

Vielleicht gibst Du dem nochmal einen Versuch.

Besten Dank für die neue Version 0.9.2! In der Zwischenzeit konnte ich nochmal einen OsmAnd Source Build mit BRouter-Anbindung bauen und bin begeistert: der Fehler der Version 0.9.1 tritt nicht mehr auf. Aktuell teste ich verschiedene Szenarien durch, um hoffentlich ein qualifizierteres Feedback geben zu können.

Mit meinem eigentlichen Plan, ein neues, besseres, Interface zu implementieren, bin ich noch nicht weitergekommen.

Die aktuelle Anbindung läuft wie schon zuvor beschrieben. Allerdings scheint die Auswahlmöglichkeit zwischen Auto, Fahrrad und Fußgänger kein Unterschied zu machen, maßgeblich ist wohl nur, was beim Start des BRouter ausgewählt wird. Vielleicht würde sich da eine Konfigurationsoption anbieten, die verschiedene "externe" Profile auf BRouter-interne Profile matched. Das hängt aber alles sehr davon ab, in welche Richtung sich das Interface zu OsmAnd zukünftig entwickeln wird.

Den Source-Link habe ich auch erneuert und an Deine bevorzugte Postbox geschickt.

Auch dafür besten Dank, der Link ist angekommen. Für meine Tests habe ich erstmal mit der fertig kompilierten .apk Version gearbeitet, bevor ich mich in die Quellen einarbeite.

Offline

#117 2013-06-18 20:27:08

ikonor
Member
Registered: 2010-11-08
Posts: 562
Website

Re: BRouter: offline Fahrrad-Routing für Android

g0ldfish wrote:
abrensch wrote:

ich hab' da nicht die Zeit und die Kraft dazu und die Online Version ist auch nicht mein Focus. Da gibt's ja noch mehr Sachen, die zum Himmel schreien wie dieser Location Picker mit Google-Maps und der Viagra-Werbung. Ist halt einfach nur so hingestrickt.

Aber wenn jemand Lust und Zeit hat, eine anständige Seite zu bauen, meine Unterstützung hat er und bekommt auch den Source-Code.

Vielleicht finden sich ein paar Leute zusammen? Ich könnte mir gut vorstellen daran mitzuarbeiten, habe aber sicher nicht für alles die nötigen Fähigkeiten. Und Arnd kann inzwischen weiter in Ruhe den Offline-Android-Router optimieren... (da warte ich nämlich auch drauf).

An einem komfortablen webbasierten Client wäre ich schon sehr interessiert, da ich lieber am großen Bildschirm plane und momentan auch noch nen Garmin nutze.

Ich hätte auch Lust, das zu entwickeln, hab aber eigentlich schon zu viele Sachen angefangen und bin momentan noch an was anderem dran. Von daher fände ich es toll, wenn wir das zusammen als Community-Projekt angehen könnten.

Wenn der Server der Online-Demo nicht für intensivere Nutzung geeignet ist, könnte man sich auch nach Alternativen umsehen. Persönlich hätte ich auch kein Problem damit, den BRouter erst mal als Java-Applikation herunterzuladen und analog zur Android-apk über eine HTTP-Schnittstelle lokal im Browser anzusprechen. Vorausgesetzt, dass eine solche Variante ohne allzu großen Aufwand machbar ist, das könnte ja auch jemand übernehmen.

Erst hatte ich die Idee, einen vorhandenen Routing-Client anzupassen, aber so einfach sah mir das beim Project-OSRM-Web gar nicht aus, zudem ist mir dort die GPL Lizenz zu restriktiv. Das Routing bei XC Trails sieht noch ganz nett aus, scheint aber nicht Open Source zu sein. Weitere hab ich noch nicht angeschaut.

Ich konnte es trotzdem nicht lassen und hab das mal mit Leaflet und den draw und GPX Plugins angetestet und vorübergehend als Beispiel hochgeladen.

Folgende Features würde ich mir wünschen:
* Route als editierbare Linie mit Zwischenpunkten zeichnen
   in etwa wie bei GORP 2 (Autorouting in Extras aktivieren)
* interaktives Höhenprofil
   Beispiele: Leaflet.Elevation Plugin, GPSies, osm.santolibre.net, MyGPSFiles (Track öffnen)
* Editor für Routing-Profil
   wie bei overpass turbo (CodeMirror)
* ...

Wer hätte sonst noch Lust mitzumachen? Möchte das jemand in die Hand nehmen?

Gruß,
Norbert

Edit: Leaflet.Elevation, Plugin Links

Last edited by ikonor (2013-06-18 22:38:01)

Offline

#118 2013-06-19 13:09:55

womisa
Member
Registered: 2009-06-30
Posts: 445

Re: BRouter: offline Fahrrad-Routing für Android

Hallo

grundsätzlich hätte ich da auch Interesse was beizutragen, aber dazu fehlt mir auch das nötige Hintergrundwissen. Ich habe etwas Erfahrung in der
.NET Programmentwicklung .Ich habe da mal vor langer Zeit einen primitiven Kartenviewer geschrieben. Dieser verarbeitet aber auschließlich Tile-Karten und KEINE Vektorkarten  ==> C /C# Lösung sehr aufwendig

Ich würde jedoch eine rein lokale Lösung anstreben die ohne Webserver (HTTP) läuft. Eventuell könnte man sowas in GPSPrune (HMI /Java) integrieren/verheiraten. Es kommt auf die Schnittstelle zum Brouter an.  ==> reine Javalösung?

Eine Interessante alternative wäre die Integration/ Verheiratung mit Oruxmaps. Hatte ich mal weiter oben angefragt, aber leider keine Antwort bekommen. Das könnte man dann in der Virtuellen Box mit Andorid  unter Windows betreiben. Der Weg ist hier beschrieben http://www.openandromaps.org/ Der Vorteil wäre die Kompatibilität zu Android. Habe ich aber noch nicht probiert. ==> Andoidlösung mit Standard Programmen

Frage:
In welcher Spache und Entwicklungsumgebung ist der Brouter geschrieben?
Wie sieht eine Schnittstelle zum BRouter aus?

Viele Grüsse
Achim

Last edited by womisa (2013-06-19 13:13:11)

Offline

#119 2013-06-19 15:27:36

g0ldfish
Member
Registered: 2009-04-27
Posts: 290

Re: BRouter: offline Fahrrad-Routing für Android

Ich finde das so schon eine riesige Verbesserung zum aktuellen Frontend des Online-Routers (und viele der auch aus meiner Sicht wünschenswerten Zusatzfeatures eher Nice to Have, weil es sie ja aktuell  auch nicht gibt). Wieso meint ihr (insbesondere womisa), das müsste offline funktionieren? Es ging doch gerade um ein Web-Frontend für den Online-Router?

Ich weiß jetzt allerdings noch weniger, ob ich wirklich Sinnvolles beitragen kann. Ich hätte mir das Leaflet-Beispiel ganz sicher nicht aus dem Ärmel geschüttelt. Aber irgendwas gibt's ja meistens auch für Doofe zu tun.

Offline

#120 2013-06-19 16:13:30

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

ikonor wrote:

Ich konnte es trotzdem nicht lassen und hab das mal mit Leaflet und den draw und GPX Plugins angetestet und vorübergehend als Beispiel hochgeladen.

Ja cool. Finde, das ist so schon ein nettes Spielzeug. Da noch Profilauswahl, Höhendiagramm und GPX-Download und das ist brauchbar.

ikonor wrote:

Folgende Features würde ich mir wünschen:
* ...

Die Sperrgebiete sind ein unique-feature, was die anderen nicht können (sie können es prinzipiell nicht, weil sie shurtcuts vorberechnet haben und deswegen keine individuellen Routing-Kriterien berücksichtigen können. Wäre also auch noch schön, Sperr-Kreise (Position und Radius) setzen zu können und die als Kreis zu visualisieren.

ikonor wrote:

Wenn der Server der Online-Demo nicht für intensivere Nutzung geeignet ist, könnte man sich auch nach Alternativen umsehen.

Es ist ein Strato V-Server level 2 mit Ubuntu 10 32 bit und der läuft schon nicht schlecht (zwar nur 2 GB garantiert aber faktisch doch immer 4). Von den 100 GB Plattenplatz brauche ich aber einen Grossteil für den Präprozessor, so dass da faktisch nur ca 10-20 GB übrig sind, und der läuft einmal im Monat und braucht dann 3 GB Hauptspeicher. Also ein Serverprozess sollte sich mit 1/2 GB Hauptspeicher begnügen, sonst kann der Präprozessor nicht mehr parallel laufen.

ikonor wrote:

Persönlich hätte ich auch kein Problem damit, den BRouter erst mal als Java-Applikation herunterzuladen und analog zur Android-apk über eine HTTP-Schnittstelle lokal im Browser anzusprechen. Vorausgesetzt, dass eine solche Variante ohne allzu großen Aufwand machbar ist, das könnte ja auch jemand übernehmen.

Ich hab' mal das "Server-Jar" und zusaetzlich den Source-Code der beiden "Aufruf-Klassen" BRouter.java und RouteServer.java als Paket hochgeladen: http://h2096617.stratoserver.net/broute … bundle.zip

Das ist sowohl die Kommandozeilen-Version, als auch das CGI der Online-Demo als auch mein Standalone-Server für die "yournavigation-Simulation". Sie, und auch die Android-App, benutzen alle die gleiche API zum eigentlichen Router, die letzlich aus den Klassen CycleRoute, RoutingConfig, OsmNodeNamed und OsmTrack besteht. Ist bisschen mässig dokumentiert, aber ich kann die API an der Stelle sauber machen. Dann ist BRouter letzlich eine Java-Bibliothek. Die vollen Sourcen schicke ich Dir gesondert zu.

Last edited by abrensch (2013-06-19 16:18:26)

Offline

#121 2013-06-20 14:49:56

womisa
Member
Registered: 2009-06-30
Posts: 445

Re: BRouter: offline Fahrrad-Routing für Android

g0ldfish wrote:

.....
.... Wieso meint ihr (insbesondere womisa), das müsste offline funktionieren? Es ging doch gerade um ein Web-Frontend für den Online-Router?

....ganz einfach. Unabhängig von einer Netwerkverbindung zu sein, wenn man die Karten schon mal lokal geladen hat.
....und um hauptsächlich die Serverbelastung auf ein Minimum zu reduzieren
... nicht geroutete Wegpunktdateien halte ich sowieso lokal und kann diese dann mit verschiedenen Parametern durch den BRouter jagen


Ich habe mal mit dem Webinterface gespielt und das funzt gut. Ist es erlaubt mit dem Server einige Tests durchzuführen?
Ich stelle mir das so vor, ich erstelle mir eine Route mit signifikanten (erwünschten) Wegpunkten und iteriere jeweils mit 2 Wegpunkten durch den BRouter und erstelle so sukzesive meinen gerouteten Track/Route. Das teste ich mal mit einem C#Client in Verbindung mit dem BRrouter Webserver.

Oder geht das einfacher (Viapunkte)?

Was muß ich ALLES haben um unter Windows einen BRouter-Server laufen zu lassen, oder gibts da schon eine EXE oder einen ausführbaren JAR File?

Vielen Dank
Achim

Last edited by womisa (2013-06-20 14:51:02)

Offline

#122 2013-06-20 17:44:21

ikonor
Member
Registered: 2010-11-08
Posts: 562
Website

Re: BRouter: offline Fahrrad-Routing für Android

abrensch wrote:

Wäre also auch noch schön, Sperr-Kreise (Position und Radius) setzen zu können und die als Kreis zu visualisieren.

Ist notiert. Kreise sollten kein Problem sein, siehe Leaflet.draw demo, hab ich nur wegkonfiguriert.

abrensch wrote:

Ich hab' mal das "Server-Jar" und zusaetzlich den Source-Code der beiden "Aufruf-Klassen" BRouter.java und RouteServer.java als Paket hochgeladen: http://h2096617.stratoserver.net/broute … bundle.zip

Dankeschön!

abrensch wrote:

Das ist sowohl die Kommandozeilen-Version, als auch das CGI der Online-Demo als auch mein Standalone-Server für die "yournavigation-Simulation". Sie, und auch die Android-App, benutzen alle die gleiche API zum eigentlichen Router, die letzlich aus den Klassen CycleRoute, RoutingConfig, OsmNodeNamed und OsmTrack besteht. Ist bisschen mässig dokumentiert, aber ich kann die API an der Stelle sauber machen. Dann ist BRouter letzlich eine Java-Bibliothek.

Ich denke mit der API kommt man schon erst mal klar so. Bei Unklarheiten können wir ja auch fragen.

Offline

#123 2013-06-20 18:10:50

ikonor
Member
Registered: 2010-11-08
Posts: 562
Website

Re: BRouter: offline Fahrrad-Routing für Android

g0ldfish wrote:

Wieso meint ihr (insbesondere womisa), das müsste offline funktionieren? Es ging doch gerade um ein Web-Frontend für den Online-Router?

So wie ich Arndt verstehe ist der Online-Server - zumindest im Moment - nur als Demo gedacht und nicht für den produktiven Betrieb. Wenn ich das richtig sehe, hat der Server folgende Einschränkungen, weil Online halt keine Priorität hat:
- es kann nur eine Anfrage gleichzeitig verarbeitet werden, bei einer zweiten wird die aktuelle abgeschossen
- bei jeder Anfrage wird die Java Runtime neu gestartet, das ist schon ein ziemlicher Overhead

Mir geht es daher nicht um Offline, sondern darum die Routing-Engine lokal zu haben, damit ich vor allem während der Entwicklung niemandem in die Quere komme (und umgekehrt) und die Engine ohne schlechtes Gewissen quälen kann wink

Um einen richtigen Routing-Server aufzusetzen müsste man noch etwas Arbeit investieren und z.B. einen Java Server (Tomcat) installieren, in dem ein Servlet die Engine ansteuert.

g0ldfish wrote:

Ich weiß jetzt allerdings noch weniger, ob ich wirklich Sinnvolles beitragen kann. Ich hätte mir das Leaflet-Beispiel ganz sicher nicht aus dem Ärmel geschüttelt. Aber irgendwas gibt's ja meistens auch für Doofe zu tun.

Da gibt es sicher genug Möglichkeiten. Da ich aktuell eigentlich noch an etwas anderem arbeite, wäre eine Idee, die noch fehlenden Sachen aus dem jetzigen Client in das Leaflet Beispiel einzubauen, um erst mal die aktuelle Funktionalität nachzubauen.

Ich bin aber nicht unbedingt auf Leaflet festgelegt, nur möchte ich mit OpenLayers 2 nichts neues mehr anfangen und für OL3 ist es vermutlich noch zu früh hmm

Offline

#124 2013-06-20 18:50:12

ikonor
Member
Registered: 2010-11-08
Posts: 562
Website

Re: BRouter: offline Fahrrad-Routing für Android

womisa wrote:

Ich würde jedoch eine rein lokale Lösung anstreben die ohne Webserver (HTTP) läuft.

Das RouteServer.java macht sein eigenes Socket auf und ich möchte das auch so verwenden, dass man damit den BRouter mit integriertem Server startet, also keinen extra Webserver benötigt. Allerdings möchte ich definitiv einen Web-Client im Browser haben, also wird eine lokale Anwendung schon aus zwei Teilen bestehen und für die Kartenanzeige wird man im Normalfall schon eine Online-Verbindung benötigen. Da kommen wir dann vermutlich nicht zusammen.

womisa wrote:

Eventuell könnte man sowas in GPSPrune (HMI /Java) integrieren/verheiraten. Es kommt auf die Schnittstelle zum Brouter an.  ==> reine Javalösung?

Ja, das ist rein Java und das jar könnte als Bibliothek direkt in einem anderen Java-Programm integriert werden.

womisa wrote:

Eine Interessante alternative wäre die Integration/ Verheiratung mit Oruxmaps. Hatte ich mal weiter oben angefragt, aber leider keine Antwort bekommen. Das könnte man dann in der Virtuellen Box mit Andorid  unter Windows betreiben. Der Weg ist hier beschrieben http://www.openandromaps.org/ Der Vorteil wäre die Kompatibilität zu Android. Habe ich aber noch nicht probiert. ==> Andoidlösung mit Standard Programmen

Das mit der VM wäre mir persönlich jetzt zu umständlich.

womisa wrote:

Ich stelle mir das so vor, ich erstelle mir eine Route mit signifikanten (erwünschten) Wegpunkten und iteriere jeweils mit 2 Wegpunkten durch den BRouter und erstelle so sukzesive meinen gerouteten Track/Route. Das teste ich mal mit einem C#Client in Verbindung mit dem BRrouter Webserver.

Oder geht das einfacher (Viapunkte)?

Da bin ich auch unschlüssig, da ich nicht weiß, wie viel Mehraufwand das für den Router ist. Für den Client wäre es einfacher mit Via-Punkten zu arbeiten, entweder mit einmaliger Berechnung am Schluß, oder mit kompletter Neuberechnung bei jedem Anlegen eines Punktes, was ich schon schön fände. Ich denke, es macht auf jeden Fall Sinn, wenn wir Via-Punkte in die API einbauen.

womisa wrote:

Was muß ich ALLES haben um unter Windows einen BRouter-Server laufen zu lassen, oder gibts da schon eine EXE oder einen ausführbaren JAR File?

Was bequemes gibt es noch nicht. Habs noch gar nicht getestet, aber der Kommandozeilen-Aufruf (siehe Command-Line-Mode in readme.txt) müsste so schon gehen (wenn Java Runtime installiert ist). Der CGI-Mode braucht nen Webserver. Den Stand-Alone-Server müsste man von Kommandozeile auch schon starten können, allerdings mit yournavigation-Schnittstelle, die man eher nicht verwenden will.

Falls sich sonst niemand meldet, wäre das vielleicht ein Punkt, den ich als erstes angehen würde: Eine vollständige BRouter HTTP API mit Via-Punkten und Sperrzonen in das RouteServer.java (oder extra) einbauen und ein kleines Script zum Starten.

Offline

#125 2013-06-22 09:19:10

abrensch
Member
Registered: 2013-01-07
Posts: 539

Re: BRouter: offline Fahrrad-Routing für Android

ikonor wrote:

Wenn ich das richtig sehe, hat der Server folgende Einschränkungen:
- es kann nur eine Anfrage gleichzeitig verarbeitet werden, bei einer zweiten wird die aktuelle abgeschossen

Das ist ein schwieriges Thema, weil es bei diesem Router ja kein oberes Limit für die Bearbeitungszeit gibt. Und es passiert mit dem neuen, besseren Location-Matching zwar nicht mehr häufig, aber immer noch, dass wegen einer "Zielinsel" keine Route gefunden wird, es aber auch kein Abbruch-Kriterium gibt, und das muss man irgendwann beenden. Ich hatte es zuerst mit Warteschlange und Timeout gemacht, aber das ist unglücklich, weil man mit so einem Timeout ein künstliches Limit schafft für die geroutete Distanz, daher das jetzige Verfahren mit dem Process-Kill. Ich denke, man kann das noch bisschen klüger machen mit z.B. einem Pool von 5 parallelen Berechnungen (und erst die 6. schiesst die älteste ab) und einer Rechenzeit-Priorität für die Kurzläufer.

ikonor wrote:
womisa wrote:

Ich stelle mir das so vor, ich erstelle mir eine Route mit signifikanten (erwünschten) Wegpunkten und iteriere jeweils mit 2 Wegpunkten durch den BRouter und erstelle so sukzesive meinen gerouteten Track/Route. Das teste ich mal mit einem C#Client in Verbindung mit dem BRrouter Webserver.

Oder geht das einfacher (Viapunkte)?

Da bin ich auch unschlüssig, da ich nicht weiß, wie viel Mehraufwand das für den Router ist. Für den Client wäre es einfacher mit Via-Punkten zu arbeiten, entweder mit einmaliger Berechnung am Schluß, oder mit kompletter Neuberechnung bei jedem Anlegen eines Punktes, was ich schon schön fände. Ich denke, es macht auf jeden Fall Sinn, wenn wir Via-Punkte in die API einbauen.

Bei Via-Punkten macht auch BRouter das Routing für jedes Teilstück einzeln, es gibt da ein bisschen Re-Use beim Location-Matching und kleineren Caches, aber das sollte glaubich die Design-Entscheidung nicht beinflussen, ob über vias im Web-Client oder im BRouter iteriert wird.

ikonor wrote:

Falls sich sonst niemand meldet, wäre das vielleicht ein Punkt, den ich als erstes angehen würde: Eine vollständige BRouter HTTP API mit Via-Punkten und Sperrzonen in das RouteServer.java (oder extra) einbauen und ein kleines Script zum Starten.

Ich hab' Dir die vollständigen Sourcen jetzt geschickt (an Deine gmx-adresse), ohne ists ein bisschen schwierig, weil die API doch arg verbastelt ist. Zu Sperrgebieten ist in RouteServer.java die Anbindung im Prinzip drin ("nogoList"), aber nicht der Konstruktor dieser Objekte:

      List<OsmNodeNamed> nogoList= new ArrayList<OsmNodeNamed>();
      OsmNodeNamed n = new OsmNodeNamed();
      n.name = "nogo2000";
      n.isNogo = true;
      n.ilon = (int)( ( lon + 180. )*1000000. + 0.5);
      n.ilat = (int)( ( lat + 90. )*1000000. + 0.5);
      nogoList.add( n );

Der Radius steckt also im Namen, und das Koordinatensystem ist das BRouter-Interne. Die Erweiterung um via-Punkte in dem RouteServer.java Beispiel ist trivial, da wird einfach nur die Wegpunktliste länger, also statt from-to dann from-via1-via2-to. Die Beschränkung auf 9 Vias gibts nur in der Android-App (wegen der Namenskonvention), an dieser Stelle in der API ist die Zahl nicht beschränkt und auch die Namen der Wegpunkte sind beliebig.

Offline

Board footer

Powered by FluxBB