poutnikl / Brouter-profiles

My profiles for Brouter offline routing on Android platform
76 stars 17 forks source link

Trekking-dry and other profiles select 16%+ descent on grade2 track #29

Open sjakobi opened 1 year ago

sjakobi commented 1 year ago

See https://bikerouter.de/#map=13/51.0169/11.7373/osm-mapnik-german_style,terrarium-hillshading,Waymarked_Trails-Cycling,Smoothness,route-quality&lonlats=11.761187,51.032423;11.674756,51.006542&profile=Trekking-dry.

The problematic descent is around km 5, south of Frauenprießnitz: a track with tracktype=grade2 on a -16%+ gradient. IMHO that seems like a fairly dangerous suggestion – I'd expect an eroded bumpy surface and difficulty braking because typical trekking tires might lose traction.

IMHO steep descents on unpaved surfaces ought to be penalized harder. OTOH, I think the alternative descent on a secondary road could be penalized less: https://bikerouter.de/#map=13/51.0151/11.7245/osm-mapnik-german_style,terrarium-hillshading,Waymarked_Trails-Cycling,Smoothness,route-quality&lonlats=11.761187,51.032423;11.757259,51.001229;11.674756,51.006542&profile=Trekking-dry

Screenshot of the default suggestion: Default suggestion

Screenshot of what I think is a safer and more enjoyable route:

poutnikl commented 1 year ago

From the end user perspective is such an objections understandable, but from the profile developer perspective things look differently:

For the profile suggesting a route, the reality does not exist.

Now, what is exposed to/available for BRouter profiles and what profiles can do:


These data are taken from altitude BRouter data.

Typical values downhillcutoff=1.5 and downhillcost=60 gives for 1 km of 16% downhill slope penalty 1000 (16-1.5) / 100 60 m = 145 * 60 m = 8700 m of the extra pretended distance for 1000 m of a road.

This way of penalization does not allow the safety cutoff without sacrifying the progressive penalization of medium slopes.


Another available way to address slope penalization – even in context of particular explicit or assumed surface – is applying up/downhillcostfactor. It can apply different road evaluation for up/downhill slopes, crossing the above "cutoff" values.

It can e.g. specifically extra penalize downhill slopes with gravel or grass surface with difficult braking.

The problem is that this is ON/OFF penalization, it would not distinguish mild 2% and severe 20%


The last option is directly relying on OSM tag incline=* that are trasformed by BRouter to chosen slope values list (see the first value after the first space below).

The problem is, the incline=* tag is rarely used. The check of the affected route reveled it is not there and therefore could be evaluated.

incline;0000052784 up
incline;0000035413 down
incline;0000001628 yes
incline;0000000779 steep
incline;0000000861 3% 0 1 2 3 0% 1% 2% 3%
incline;0000000724 5% 4 5 4%
incline;0000000530 8% 6 7 8 6% 7%
incline;0000003109 10% 9 10 9% 10°
incline;0000001297 15% 11 12 13 14 15 11% 12% 13% 14%
incline;0000000997 20% 16 17 18 19 20 16% 17% 18% 19%
incline;0000000409 25% 21 22 23 24 25 21% 22% 23% 24%
incline;0000000263 30% 30 40 50 40% 50%
incline;0000000861 -3% -1 -2 -3 -1% -2% -3%
incline;0000000724 -5% -4 -5 -4%
incline;0000000530 -8% -6 -7 -8 -6% -7%
incline;0000001515 -10% -9 -10 -9% -10°
incline;0000001297 -15% -11 -12 -13 -14 -15 -11% -12% -13% -14%
incline;0000000997 -20% -16 -17 -18 -19 -20 -16% -17% -18% -19%
incline;0000000409 -25% -21 -22 -23 -24 -25 -21% -22% -23% -24%
incline;0000000172 -30% -30 -40 -50 -40% -50%

I am considering tweaking the expressions for up/downhillcostfactor for surface=gravel and similar, but not much, as it would affect routing for mild/medium slopes.

For more, see also my BRouter glossary

utack commented 1 year ago

I must admit I still have some struggles understanding the BRouter elevation model and its buffers, but for profile developer and end user perspective it would certainly be nice to have full freedom using a custom formula like penalty = f(slope) where the fomula can be something like a tan that is easy on tiny slopes and approaching infinity for a certain cutoff slope

poutnikl commented 1 year ago

Even developers can dream. For now, it is not possible but as a bent line, eventually with cutoff slope offset.

sjakobi commented 1 year ago

Thanks for the feedback and sorry for the late response. I've created a feature request for BRouter: https://github.com/abrensch/brouter/issues/617