BRouter: offline Fahrrad-Routing für Android

Auf OsmAnd (Github) hat jemand geantwortet, dass die eine neue UI einführen und die Alternative-Routen von Brouter einbinden können.

Nur habe ich leider keine Ahnung wie und was da möglich ist. Kann sich jemand der sich auskennt, dort bitte in das Thema einklinken? Wenn die Alternativrouten benutzerfreundlich in OsmAnd auswählbar sind, wie in der Webversion von Brouter, wäre das absolut genial!

Hier der Link zu dem Thema auf Github:
https://github.com/osmandapp/Osmand/issues/6112#issuecomment-429674216

Und hier der Beitrag:

Nur so am Rande: seit letzter Woche ist die “BRouter-Web” Instanz unter http://brouter.de/brouter-web auf Version 0.7, das ist deutlich mehr “mobile-friendly” als die Vorgängerversion, man kann also auch damit am Handy Alternatv-Routen berechnen und als GPX-Tracks speichern.

Vielen Dank dafür!

Noch eine Frage zum Verständnis zu Brouter und Osmand.

Es gibt ja zwei Möglichkeiten diese zwei Apps zu verwenden. Erstens über das User-Interface (UI) in Osmand und zweitens indem Brouter-App die Waypoints aus Osmand verwendet. Im ersten Fall wird Brouter von Osmand aufgerufen und gestartet. Im zweiten Fall erstellt man die Waypoints/Favoriten und startet die Brouter App selbst, es wird dann die Datei Brouter0.gpx von Brouter generiert (startet man Brouter nochmal mit denselben Waypoints, so wird die Datei Brouter1.gpx erstellt, und so weiter bis Brouter3.gpx). Diese Dateien können dann in Osmand geöffnet werden.

Wird in der ersten Möglichkeit auch die Datei Brouter0.gpx erstellt und dann automatisch in Osmand geladen?

Für Brouter-Web 0.7 aber nich an mich, sonden an Norbert, Gautier und Rodolphe, siehe https://groups.google.com/d/msg/osm-android-bikerouting/xAJw6uLigwY/wAWC68AIBQAJ

Nein, in dem Fall wird sie nicht als Datei erstellt, sondern über eine Remote-Procedure-Call von OsmAnd angefragt.

Dann auch vielen Dank an Norbert, Gautier und Rodolphe! Wahnsinn was alles möglich ist, wenn man programmieren kann :slight_smile:

Besteht bei mehrmaligem Aufruf von dieser Remote-Procedure-Call ebenfalls die Möglichkeit verschiedene Alternativrouten von Brouter erstellen zu lassen? Da die Leute bei OsmAnd anscheinend jetzt Alternativrouten für öffentliches Verkehr einbauen wollen, so wie ich das verstanden habe aus dem Link weiter oben, wäre es vielleicht möglich dass auch die Alternativrouten von Brouter in das User-Interface von OsmAnd eingebaut werden. Das wäre wunderschön!

Ich träume davon, dass eines Tages die Kombination aus OsmAnd und Brouter ermöglichen wird alternative Routen auszuwählen, ohne Zwischenschritte wie GPX Dateien ex- und importieren zu müssen.

Dank einer Anleitung von Bienenfleiß ( https://radreise-forum.de/topics/1342492#Post1342492 ) habe ich es jetzt zumindest geschafft, die Konfigurationsdateien von Brouter so umzuschreiben, dass Brouter die Favoriten von Osmand nun sieht und somit die 4 Alternativrouten erstellt werden können.

Zusammenfassung (habe Android 7.0):

  1. In Osmand Menü unter Einstellungen → Allgemeine Einstellungen → Datenordner nachschauen in welchem Ordner Osmand installiert ist. Bei mir steht dort: /storage/emulated/0/Android/data/net.osmand.plus/files

  2. Die Konfigurationsdatei von Brouter bearbeiten (am besten mit der App ES FileExplorer, dort ist ein Texteditor ES Notizeditor enthalten), diese Datei befindet sich bei mir unter: storage/emulated/0/brouter/segments4/storageconfig.txt
    Ich musste nur den Pfad zum Osmand-Ordner (siehe Schritt 1 oben) in dieser Zeile einfügen:
    additional_maptool_dir=/storage/emulated/0/Android/data/net.osmand.plus/files

Mehr war nicht nötig.
(Naja, den Gartenzaun # vor der Zeile noch entfernen, damit diese aktiv wird.)

Jetzt sieht die Brouter App endlich meine in Osmand angelegten Favoriten (wie man diese in Osmand anlegt, siehe weiter unten):

  • Brouter App starten
  • Das Fenster “Select Main Action” erscheint
  • Auf “Brouter App” klicken
  • Das Fenster “Select a routing profile” erscheint
  • Auf “trekking” klicken
  • Das Fenster "Select Action - Expecting wayipoint selection (coordinate-source: /storage/emulated/0/Android/data/net.osmand.plus/files) erscheint
  • Auf “Select from” klicken
  • Das Fenster “Select from” erscheint und es werden dort alle in Osmand angelegten Favoriten in einer Liste angezeigt
  • Den Startpunkt der Route wählen, durch klicken auf einen der angezeigten Favoriten
  • Das Fenster “Select Action - current waypoint selection: xxxxx” erscheint, xxxxx = der ausgewählte Startpunkt
  • Auf “Select to/via” klicken
  • Das Fenster “Select to/via” erscheint und es werden dort alle in Osmand angelegten Favoriten in einer Liste angezeigt
  • Den Zielpunkt der Route wählen, durch klicken auf einen der angezeigten Favoriten
  • Das Fenster “Select Action - current waypoint selection: xxxxx → yyyyy” erscheint, yyyyy = der ausgewählt Zielpunkt
  • Auf “Calc Route” klicken
  • Das Fenster “Success” erscheint
  • Auf “Exit” klicken um zu Brouter zu beenden

Bei Bedarf die ganze Prozedur mit dem gleichen Start- und Zielpunkt wiederholen, dann wird eine erste Alternativroute gespeichert. Nochmal wiederholen um eine zweite Alternativroute zu speichern. Nochmal wiederholem um die letzte und dritte Alternativroute zu erstellen.

GPX-Dateien in OsmAnd öffnen:
Um in Osmand die von Brouter erstellten .gpx Dateie(n) zu laden, im Hauptmenü auf das Navigationssymbol klicken (ist eine Raute mit Pfeil nach Rechts). Es öffnet sich ein Fenster wo unten ein Zahnrad zu sehen ist, auf dieses klicken. Dann öffnet sich ein anderes Fenster, dort auf GPX-Route klicken, dann auf “GPX-Datei auswählen” klicken. Es öffnet sich ein Fenster wo die von Brouter erstellten .gpx Dateien aufgelistet sind und diese können einzeln ausgewählt werden. Fertig.

Favoriten in OsmAnd anlegen:

  • in Osmand auf der Karte mit dem Finger auf den gewünschten Ort klicken und halten bis unten ein Fenster erscheint.
  • Im Fenster auf den “Stern Hinzufügen” klicken
  • Das Fenster “Favorit hinzufügen” erscheint
  • Namen für den Favoriten eingeben und auf speichern klicken. Fertig.

Verbesserungsvorschlag wäre, dass Brouter von sich aus alle 4 Routen bzw. Alternativrouten anlegen kann. Denn spätestens bei der zweiten Alternativeroute kommt man sich wie ein Arbeiter am Band vor, der immer wieder das gleiche tun muss :slight_smile:

Aber ich werde weiterhin davon träumen, dass ich eines Tages aufwache, und das ganze Prozedere ist in der UI von OsmAnd möglich.

Ja, das stimmt.
Wenn Brouter die ausgewählten Favoriten bei einem Neustart behalten würde, ginge es auch schneller die Alternativrouten zu berechnen.
So muss man immer wieder durch die Favoriten scrollen und “From” “To” suchen und neu auswählen.

In Osmand können die Favoriten ja in verschiedenen Kategorien angelegt werden, in Brouter werden aber alle aufgelistet, es kann keine einzelne Kategorie ausgewählt werden.
Wenn man da einige Favoriten angelegt hat, ist es unter umständen langwierig die Richtigen zu finden.

Momentan behelfe ich mir damit, dass ich sie “AAAFrom” und “AAATo” benenne so stehen sie in der Liste ganz oben.

Aber wie so oft… jammern auf hohem Niveau.
Es ist klasse, dass es Leute gibt die sowas überhaupt ermöglichen.

Gruß
Christoph

Eine Möglichkeit wäre, denke ich, wenn gleich nach Erstellung der Route gefragt wird ob noch eine Alternativroute N erstellt werden soll (in einer Schleife N = 1 bis 3). Anwortet man mit ja, wird die nächste Alternativroute erstellt. Wählt man nein, so geht es weiter wie bisher, also zum Exit.

Das stimmt sehr wohl. Gut dass es solche Menschen gibt.

Hello,

Alle vorherigen Beiträge finde ich sehr gut, vor allem finde ich OSMAND sehr gut, die Möglichkeit, den Brouter zu nutzen ist fantastisch!
(bin heute noch eine “MTB” (nach “Zossebart”) Strecke damit gefahren, es war super!)
Für meine Verwendung von OSMAND+Brouter möchte hier eine weitere Anregung erläutern:
Ich fahre Rennrad (habe mein eigenes Brouter Profil dafür erstellt, funktioniert perfekt, danke an alle OSM Entwickler!), Trecking und MTB (Profil von : Vor jeder Routen-Berechnung muss ich deswegen in der Brouter-App das Profil überprüfen bzw. ändern.
Deshalb wäre mir auch sehr wichtig (wie ein Angebot von alternativen Routen) in OSMAND und vor der Route-Berechnung das Profil zu prüfen und ggf ändern zu können.
Kurz vor Berechnung einer Route wäre es in OSMAND benutzerfreundlich aus den im Brouter installierten Profilen wählen zu können…
V.G.
Ess bee

Bist du bereit das Profil zu teilen?
Interessiert mich immer wie Leute zu guten Ergebnissen kommen mit BRouter

Hallo Utack,

Mein “race.brf” teile ich gerne!
Ich muss nur noch suchen, wie ein Upload hier funktioniert (bin neu im Forum)… Tipps dafür sind willkomen!
Basis für mein Renrad-profile is Trekking.
Die Änderungen betreffen fast ausschlieslich den “assign costfactor”, wo ich versucht habe, “Asphalt” und “wenig Verkehr” zu einigen.
Jeder kann auf diese Basis ganz leicht für sich noch anpassen, zum Beispiel je nach Preferenz:

  • Preis für “Highway=secondary” oder “secondary” senken oder erhöhen
  • Preis für “fine_gravel” oder “gravel” senken oder erhöhen

Die Methode zur Anpassung/Optimierung des Profiles habe ich übrigens aus der Brouter-Doku gefunden: Mit dem “Brouter-web” lässt sich das Profile ändern und gleich die “Kosten” betrachten (data!). Ja, feine Sache, man muß nicht mal top Experte sein!

Zurück zu “alternative Routen” und Profiles:
Wie gesagt, die Kombinierung OSMAND und Brouter ist fantastisch, bleibt aber für nicht Smartphone-Experten zu komplex:
Daher mein Traum, in OSMAND bei der Route-Berechnung das “Brouter-Profile” und zwischen “Original, Alternative 1, Alternative 2 und Alternative 3” wählen zu können!!! (damit 2 Verbesserungen/Wünsche in einem Rutsch erfüllt)
V.G.

Das Forum hat keine Upload-Funktion (was ja demnächst von Vorteil sein wird :smiley: ).

Du kannst entweder extern hochladen und hier verlinken, oder (da es sich vermutlich um eine Textdatei handelt) diese hier einfach in einem code-Block einfügen.


bla
bla
blupp

OSMand bietet ja auch für das Fahrradrouting die Möglichkeit die Option “Schnellste Route” zu aktivieren bzw. deaktivieren. Damit hast Du die Möglichkeit zumindest 2 verschiedene BRouter-Fahrrad-Profile zu verbinden / auszuwählen.

Grüße

Ja das stimmt, in OSMAND geht die Integration von BRouter leider noch nicht allzuweit. Das liegt natürlich auch daran, dass OSMAND
seinen eigenen Router hat und die BRouter Integration beim Core-Team jetzt nicht gerade oben auf der Prioritätenliste steht.

Das ist anders bei LocusMaps, dessen MAcher hat da ein grösseres Interesse und daher ist das da auch schon weiter. Das betrifft nicht bur die Verwaltung und Auswahl der Profile, sondern z.B. auch die Abbiege-Hinweise. Also solltest Du Dir vielleicht auch mal Locus anschauen.

Demnach sollten die Änderungen etc. längst drin sein, warum wird dann immer noch über die falsche Nordseite gerouted?

Sind in BRouter-Web denn schon die neuen Routing-Dateien hinterlegt?

Ja, eigentlich immer Sonntags morgens um 9 neue Daten mit Map-Snapshot-Time Samstag abend um 21 Uhr.

Wegen den Rad-Relationen, die da drauf liegen.

Das ist eine Eigenschaft des “trekking” Profils und so ein bisschen Fluch und Segen: Die Existenz einer Rad-Relation sticht fast alle anderen Informationen aus. “Segen”, weil auf diese Weise sind Rad-Relationen fast nicht kaputt zu kriegen. “Fluch”, weil auf diese Weise sind Rad-Relationen fast nicht kaputt zu kriegen.

Wir hatten das gleiche Thema hier vor einiger Zeit in Bezug auf ein gesperrtes Sperrwerk, in finde den Thread jetzt auf die Schnelle nicht.

Wenn Du die Relationen selbst nicht umlegen willst und dennoch dieses Routing verhindern, könntest Du aber das “highway” tag an dem Radweg entweder ganz entfernen, oder auch “highway=proposed” oder “highway=abandoned” würden das Routing unterbinden.

for race bike

(when ever possible, no gravel or else and low traffic)

==> cost for unpaved enhanced

==> cost for trunk, primary, secondary enhanced

(see “assign costfactor”)

Structure is similar to fastbike, see this for documentation.

—context:global # following code refers to global config

Use the following switches to change behaviour

(1=yes, 0=no):

assign consider_elevation 1 # set to 0 to ignore elevation in routing
assign allow_steps 1 # set to 0 to disallow steps
assign allow_ferries 1 # set to 0 to disallow ferries
assign ignore_cycleroutes 0 # set to 1 for better elevation results
assign stick_to_cycleroutes 0 # set to 1 to just follow cycleroutes
assign avoid_unsafe 0 # set to 1 to avoid standard highways
assign turnInstructionMode 1 # 0=none, 1=auto-choose, 2=locus-style, 3=osmand-style

assign validForBikes 1

the elevation parameters

assign downhillcost switch consider_elevation 60 0
assign downhillcutoff 1.5
assign uphillcost 0
assign uphillcutoff 1.5

—context:way # following code refers to way-tags

assign any_cycleroute or route_bicycle_icn=yes or route_bicycle_ncn=yes or route_bicycle_rcn=yes route_bicycle_lcn=yes
assign nodeaccessgranted or any_cycleroute lcn=yes

assign ispaved or surface=paved or surface=asphalt or surface=concrete surface=paving_stones

assign isunpaved surface=unpaved|compacted|fine_gravel|gravel|dirt|earth|ground|sand

assign isfine_gravel surface=fine_gravel|cobblestone

assign turncost = if junction=roundabout then 0
else 90

assign initialcost switch route=ferry 10000 0

implicit access here just from the motorroad tag

(implicit access rules from highway tag handled elsewhere)

assign defaultaccess
switch access=
not motorroad=yes
switch or access=private access=no
0
1

calculate logical bike access

assign bikeaccess
or any_cycleroute
switch bicycle=
switch vehicle=
defaultaccess
switch or vehicle=private vehicle=no
0
1
not or bicycle=private or bicycle=no bicycle=dismount

calculate logical foot access

assign footaccess
or bikeaccess
or bicycle=dismount
switch foot=
defaultaccess
not or foot=private foot=no

if not bike-, but foot-acess, just a moderate penalty,

otherwise access is forbidden

assign accesspenalty
switch bikeaccess
0
switch footaccess
6
10000

handle one-ways. On primary roads, wrong-oneways should

be close to forbidden, while on other ways we just add

6 to the costfactor (making it at least 7 - you are allowed

to push your bike)

assign badoneway =
if reversedirection=yes then
if oneway:bicycle=yes then true
else if oneway= then junction=roundabout
else oneway=yes|true|1
else oneway=-1

assign onewaypenalty =
if ( badoneway ) then
(
if ( cycleway=opposite|opposite_lane|opposite_track ) then 0
else if ( oneway:bicycle=no ) then 0
else if ( highway=primary|primary_link ) then 50
else if ( highway=secondary|secondary_link ) then 30
else if ( highway=tertiary|tertiary_link ) then 20
else 6.0
)
else 0.0

assign costfactor
switch and highway= not route=ferry 10000
switch or highway=proposed highway=abandoned 10000
min 9999
add max onewaypenalty accesspenalty
switch or highway=motorway highway=motorway_link 10000
switch or highway=trunk highway=trunk_link 30
switch or highway=primary highway=primary_link
switch cycleway=lane|shared_lane|shared 3.9 5
switch or highway=secondary highway=secondary_link
switch cycleway=lane|shared_lane|shared 1.4 3.5
switch or highway=tertiary highway=tertiary_link
switch cycleway=lane|shared_lane|shared 1.1 1.4
switch highway=unclassified
switch ispaved 1.5
switch isfine_gravel 2.5
switch isunpaved 15 3
switch highway=pedestrian 10
switch highway=steps 1000
switch route=ferry 5.67
switch highway=bridleway 5
switch highway=cycleway 1
switch highway=residential|living_street 1.2
switch highway=service
switch ispaved 1.2
switch isfine_gravel 2.2
switch isunpaved 10.2
switch tracktype=grade1 1.4 2
switch highway=track|road|path|footway
switch bicycle=designated 1
switch tracktype=grade1
switch isunpaved 15
switch isfine_gravel 3 1.5
switch tracktype=grade2 10
switch tracktype=grade3 30.0
switch tracktype=grade4 50.0
switch tracktype=grade5 300.0
switch ispaved 2.0 100.0
10.0

way priorities used for voice hint generation

assign priorityclassifier =

if ( highway=motorway ) then 30
else if ( highway=motorway_link ) then 29
else if ( highway=trunk ) then 28
else if ( highway=trunk_link ) then 27
else if ( highway=primary ) then 26
else if ( highway=primary_link ) then 25
else if ( highway=secondary ) then 24
else if ( highway=secondary_link ) then 23
else if ( highway=tertiary ) then 22
else if ( highway=tertiary_link ) then 21
else if ( highway=unclassified ) then 20
else if ( highway=residential|living_street ) then 6
else if ( highway=service ) then 6
else if ( highway=cycleway ) then 6
else if ( bicycle=designated ) then 6
else if ( highway=track ) then if tracktype=grade1 then 6 else 4
else if ( highway=bridleway|road|path|footway ) then 4
else if ( highway=steps ) then 2
else if ( highway=pedestrian ) then 2
else 0

some more classifying bits used for voice hint generation…

assign isbadoneway = not equal onewaypenalty 0
assign isgoodoneway = if reversedirection=yes then oneway=-1
else if oneway= then junction=roundabout else oneway=yes|true|1
assign isroundabout = junction=roundabout
assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link
assign isgoodforcars = if greater priorityclassifier 6 then true
else if highway=residential|living_street|service then true
else if ( and highway=track tracktype=grade1 ) then true
else false

… encoded into a bitmask

assign classifiermask add isbadoneway
add multiply isgoodoneway 2
add multiply isroundabout 4
add multiply islinktype 8
multiply isgoodforcars 16

—context:node # following code refers to node tags

assign defaultaccess
switch access=
1 # add default barrier restrictions here!
switch or access=private access=no
0
1

assign bikeaccess
or nodeaccessgranted=yes
switch bicycle=
switch vehicle=
defaultaccess
switch or vehicle=private vehicle=no
0
1
switch or bicycle=private or bicycle=no bicycle=dismount
0
1

assign footaccess
or bicycle=dismount
switch foot=
defaultaccess
switch or foot=private foot=no
0
1

assign initialcost
switch bikeaccess
0
switch footaccess
300
1000000

:rolleyes:

Hmmm … Daten fälschen für besseres Routing? Hmmm …
Wir taggen doch nicht für die Router!
Sonst kommt der nächste und taggt für den Renderer, weil der Weg falsch aussieht … :stuck_out_tongue:
Hilft da nix anderes, ein explizites bicycle=no statt nur access=no? Oder ein anderes ekliges tag? :sunglasses:

Hallo,
Darf ich in diesem Forum um Rat von OSM Experten bitten?
In meiner Nähe ist ein Waldweg wie folgt kennzeichnet:
highway=track tracktype=grade1 surface=asphalt foot=yes bicycle=yes

Mit dem “fastbike-lowtraffic” Profile wird dieser Weg benutzt, soweit alles OK.
Problem ist, der Waldweg wurde vor 40 Jahren asphaltiert, seitdem nicht mehr gepflegt… Großes Glück, dass ich mit dem MTB und nicht mit dem Rennrad getestet habe!
Eine Tag Änderung von “asphalt” nach “fine_gravel” in OSM habe ich aufgesetzt: passt es oder gibt es Besseres?