BRouter: offline Fahrrad-Routing für Android

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?

smoothness=*

Solange die Asphaltdecke, gleich in welchem Zustand, vorhanden ist, ist grade1 und surface=asphalt richtig. Das bedeutet zum Beispiel, dass der Weg bei Regen nicht aufweicht.

Halte ich für entbehrlich, da Defaultwert für hw=track.

–ks

Wenn der Asphalt wirklich zu Fein-Schotter zerbröselt ist, dann passt es. In dem Fall würde ich tracktype auf 2 setzen.
Zusätzlich smoothness=intermediate(?) ergänzen.

Deine Argumentation für “Asphalt” sehe ich ein…(der Untergrund scheint noch fest)… aber… Dieser Asphalt ist für Rennradfahrer nicht akzeptabel!
Unter “Asphalt” hätte ich eine halbwegs gepflegte Asphalt-Oberfläsche erwartet.

Dann setz halt smoothness=very_bad oder Schlimmeres dran.

–ks

Deshalb smoothness=* ergänzen.
Das wird allerdings von brouter noch nicht ausgewertet.

Hallo,
ich habe mir heute die neuen Profile car-eco und car-fast vom 25.02.2019 heruntergeladen und auf das Handy kopiert. Leider funktioniert jetzt das Car-Routing auf OSMand mit BRouter nicht mehr.
Wenn ich BRouter starte und “BRouter App” aufrufe und z.B. car-eco auswähle und dann “Server Mode” erhalte ich die Meldung “BRouter angehalten”.
Ich habe BRouter deinstalliert und neu heruntergeladen. Leider keine Besserung.

Funktioniert BRouter mit den neuen Profilen unter OSMand bei Euch?

Fragende Grüße

Danke an alle für die Tipps!
Das Attribut “smoothness” kannte ich nicht, passt hier natürlich!
Auf der anderen Seite wird das Tag selten gesetzt (und nur bei Primary/secondary/tertiary, nie bei track), und noch seltener ausgewertet - nur im “liegerad” Profile habe ich es gefunden.

Die Lösung würde nur für meine private Verwendung mit einem eigenem speziell dafür ausgebauten RR Profile greifen.

Sag niemals nie !!!
Ich trage insbesondere bei tracks mit tracktype grade1 neben surface zusätzlich smoothness ein und werte dieses in meinem eigenen BRouter-Profil auch aus.

Was bringt dich auf das schmale Brett? Eine overpass-turbo-Abfrage nach „highway=track and smoothness=* in hessen“ liefert 10.683 ways.

–ks

Dank der guten Tipps kann man hier sehr schnell lernen, “overpass-turbo” und das OSM-Tutorial sind für mich neu!
Konnte gleich loslegen und weitere Statistiken in Hessen abrufen:

track 298.776
smoothness 34.293
track&smoothness 10.687

track&asphalt 21.469
track&asphalt&grade 20.682
track&asphalt&grade1 20.076
track&asphalt&grade2 428

track&asphalt&smoothness 1.313 (davon 1.247 „grade1“, 42 „grade2“)
Aufteilung:
excellent 224
good 709
intermediate 252
bad 113
very_bad 13
horrible 2

Mein Problem war, dass für Rennradfahrer ein “track mit asphalt” nicht geeignet ist, weil Asphalt zu alt.
Aus den 21.469 “track&asphalt” in Hessen würde heute eine Auswertung der “smoothness” über bad - very_bad oder horrible 128 Obekte ausfiltern? So weit klar?

besser als nichts, aber dafür müssen noch die Profiles angefasst werden.

Beachtet denn das standard tracking profil überhaupt “surface” bei Straßen?
Ich dachte immer nicht

Auszug aus dem BRouter-Trekking-Profil:

assign isbike = or bicycle=yes or or bicycle=permissive bicycle=designated lcn=yes
assign ispaved = surface=paved|asphalt|concrete|paving_stones
assign isunpaved = not or surface= or ispaved surface=fine_gravel|cobblestone
assign probablyGood = or ispaved and isbike not isunpaved

Nur im “Liegerad” profile (vm-forum-liegerad-schnell) habe ich bisher eine Auswertung von “smoothness” gesehen.
Trekking-radfahrer verkraften schlechten Asphalt zum Glück einigermaßen, Rennradfahrer allerdings ganz selten: Sie wollen sich und ihre teueren Maschinen schonen.

Super wäre natürlich, wenn das smoothness Parameter öfter gepflegt wäre (bei Track+Asphalt in Hessen liegt die Quote bei ca. 6%)
Dann wäre eine Erweiterung der Profile richtig vorteilhaft.

Eine Erweiterung der Profile ist kinderleicht, ich werde mein Rennrad-Profile heute schon anpassen

Die Erweiterung meines RR-Profile bezüglich “smoothness” ist fast fertig, ich muss nur noch die Straffpunkte abwägen…
……………
assign smoothnesspenalty =
switch smoothness=intermediate 0.2
switch smoothness=bad 0.5
switch smoothness=very_bad 1
switch smoothness=horrible 1.5 0

…………
assign costfactor
add trafficpenalty
add smoothnesspenalty
switch and highway= not route=ferry 10000
switch or highway=proposed highway=abandoned 10000
……….