diff --git a/misc/profiles2/hiking-beta.brf b/misc/profiles2/hiking-beta.brf new file mode 100644 index 0000000..25159d2 --- /dev/null +++ b/misc/profiles2/hiking-beta.brf @@ -0,0 +1,298 @@ +# Profile for medium-level hiking +# +# See https://github.com/poutnikl/Brouter-profiles for +# more variants and poutnik's profile collection + +# *** Based on Trekking profile, added flag driven customizations +# 10/6/2015 v1.7.2 BETA - Fixed general way access penalties +# See bottom for Changelog and verbose comments. + +---context:global + +assign consider_elevation 1 # 0 as default, otherwise less interesting flat roads are chosen. +assign shortest_way 0 # 0 as default + +assign iswet 0 # 0 as default, 1 tries to prevent muddy boots and wet buttocks + +assign prefer_hiking_routes 1 # 1 as default, gives penalty to way not being hiking route and cancels route turncost +assign stick_to_hiking_routes 0 # 0 as default, as above, but gives higher penalty costfactor + way/node initial costs +assign non_hiking_route_penalty 0.15 # 0.25 as default, used with prefer_hiking_routes +assign non_sticky_route_penalty 0.5 # 1.0 as default, used stick_to_hiking_routes #v1.5 + +#SAC - mountain hiking - see http://wiki.openstreetmap.org/wiki/Key:sac_scale +assign SAC_scale_limit 3 # 0..6, 0 to avoid any SAC paths, 1 for T1 as maximum, 6 for T6 as maximum + # all paths with sac_scale higher than SAC_scale_limit are forbidden. +assign SAC_scale_preferred 1 # The same, but the preferred SAC scale level. Level below are slightly, above strongly penalized +assign SAC_access_penalty 9000 # costfactor 9999 means the most horrible but allowed road., + # 100000=forbidden. This makes difference if forbidden way is the only option. + + +#orientation/decision penalties, not used for preferred hiking routes +assign turncost_value 0 # 20 as default, not used now +assign initialcost_value 0 # 50 as default, not used now + +#less frequently changed flags +assign allow_steps 1 # 1 as default +assign allow_ferries 1 # 1 as default +assign cost_of_unknown 2 # 2 as default +# +assign elevationpenaltybuffer 5 # 5 as default +assign elevationmaxbuffer 10 # 10 as default +assign elevationbufferreduce 0.0 # 0.0 as default + +# as initial point, considered flat speed 4 km/h, climbing speed 600 m /h +assign uphillcostvalue 7 +assign uphillcutoffvalue 3 +assign downhillcutoffvalue 3 +assign downhillcostvalue 7 + +assign downhillcost switch consider_elevation downhillcostvalue 0 +assign downhillcutoff switch consider_elevation downhillcutoffvalue 0 +assign uphillcost switch consider_elevation uphillcostvalue 0 +assign uphillcutoff switch consider_elevation uphillcutoffvalue 0 + +assign validForFoot 1 + +assign hr_preferred or prefer_hiking_routes stick_to_hiking_routes + +#Penalizing SAC routes below (K1) and above(K2) preferred SAC scale +#see http://wiki.openstreetmap.org/wiki/Key:sac_scale + +assign SAC_K1 0.1 # Penalizing of SAC levels below preferred +assign SAC_K2 0.6 # Penalizing of SAC levels above preferred + +#all the extra complexity of code below, with adding +/- 1.0 +#is to keep final penalties additive, even with multiplicative incremental penalty approach +#code is run only once, being in global context + +assign SAC_K10 add SAC_K1 1.0 +assign SAC_K20 add SAC_K2 1.0 +assign SAC_K1_2 add multiply SAC_K10 SAC_K10 -1.0 +assign SAC_K2_2 add multiply SAC_K20 SAC_K20 -1.0 +assign SAC_K1_3 add ( multiply ( add SAC_K1_2 1.0 ) SAC_K10 ) -1.0 +assign SAC_K2_3 add ( multiply ( add SAC_K2_2 1.0 ) SAC_K20 ) -1.0 +assign SAC_K1_4 add ( multiply ( add SAC_K1_3 1.0 ) SAC_K10 ) -1.0 +assign SAC_K2_4 add ( multiply ( add SAC_K2_3 1.0 ) SAC_K20 ) -1.0 +assign SAC_K1_5 add ( multiply ( add SAC_K1_4 1.0 ) SAC_K10 ) -1.0 +assign SAC_K2_5 add ( multiply ( add SAC_K2_4 1.0 ) SAC_K20 ) -1.0 +assign SAC_K1_6 add ( multiply ( add SAC_K1_5 1.0 ) SAC_K10 ) -1.0 +assign SAC_K2_6 add ( multiply ( add SAC_K2_5 1.0 ) SAC_K20 ) -1.0 + + +---context:way # following code refers to way-tags + +assign ispaved or surface=paved or surface=asphalt or surface=concrete surface=paving_stones +assign isunpaved not or surface= or ispaved or surface=fine_gravel surface=cobblestone + +assign any_hiking_route or route=hiking or route_hiking_iwn=yes + or route_hiking_nwn=yes or route_hiking_rwn=yes + or route_hiking_lwn=yes or route_hiking_=yes + or route_foot_=yes or route_foot_nwn=yes + or route_foot_rwn=yes route_foot_lwn=yes + +assign any_cycleroute = + if route_bicycle_icn=yes then true + else if route_bicycle_ncn=yes then true + else if route_bicycle_rcn=yes then true + else if route_bicycle_lcn=yes then true + else false + +assign is_ldhr and any_hiking_route hr_preferred +assign nodeaccessgranted any_hiking_route + +# ismuddy addresses potentially bad surface conditions during wet weather ( mud, slickiness of grass) +assign ismuddy and or isunpaved surface= + and iswet + not or surface=gravel surface=pebblestone + +assign issidewalk not or sidewalk= or sidewalk=none sidewalk=no + +assign turncost switch or shortest_way is_ldhr 0 turncost_value #v1.5 + +assign initialcost + switch route=ferry 10000 + + switch or shortest_way is_ldhr 0 switch stick_to_hiking_routes initialcost_value 0 + +assign defaultaccess switch access= not motorroad=yes switch or access=private access=no 0 1 + + +assign footaccess or any_hiking_route + or issidewalk + switch foot= defaultaccess switch foot=private|no 0 1 + +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 + + +assign footaccess + or and bikeaccess not foot=no + or bicycle=dismount + switch foot= + defaultaccess + not or foot=private foot=no + +assign accesspenalty switch footaccess 0 switch bikeaccess 4 100000 + +# + +#SAC is estimated path difficulty, +#integrating both MTB and SAC scales with estimated MTB/SAC difficulty matching +#see http://wiki.openstreetmap.org/wiki/Key:mtb:scale +# http://wiki.openstreetmap.org/wiki/Key:sac_scale + +assign SAC +if sac_scale=difficult_alpine_hiking then 6 +else if or sac_scale=demanding_alpine_hiking mtb:scale=6 then 5 +else if or sac_scale=alpine_hiking mtb:scale=5 then 4 +else if or sac_scale=demanding_mountain_hiking mtb:scale=4 then 3 +else if or sac_scale=mountain_hiking mtb:scale=3|2+ then 2 +else if or sac_scale=hiking|T1-hiking|yes mtb:scale=2|1+|2- then 1 + else 0 + +assign SAC_scale_access # if SAC_scale_limit < SAC then true else false + if sac_scale= then true else equal ( max SAC_scale_limit SAC ) SAC_scale_limit + +assign SAC_scale_penalty + + if not SAC_scale_access then SAC_access_penalty # not allowed SAC scale + else if equal SAC SAC_scale_preferred then 0.0 + else if equal ( add SAC 1 ) SAC_scale_preferred then SAC_K1 + else if equal ( add SAC 2 ) SAC_scale_preferred then SAC_K1_2 + else if equal ( add SAC 3 ) SAC_scale_preferred then SAC_K1_3 + else if equal ( add SAC 4 ) SAC_scale_preferred then SAC_K1_4 + else if equal ( add SAC 5 ) SAC_scale_preferred then SAC_K1_5 + else if equal ( add SAC 6 ) SAC_scale_preferred then SAC_K1_6 + else if equal ( add SAC_scale_preferred 1 ) SAC then SAC_K2 + else if equal ( add SAC_scale_preferred 2 ) SAC then SAC_K2_2 + else if equal ( add SAC_scale_preferred 3 ) SAC then SAC_K2_3 + else if equal ( add SAC_scale_preferred 4 ) SAC then SAC_K2_4 + else if equal ( add SAC_scale_preferred 5 ) SAC then SAC_K2_5 + else if equal ( add SAC_scale_preferred 6 ) SAC then SAC_K2_6 + else 1.0 + +assign costfactor + + if shortest_way then ( add 1 accesspenalty ) else + + add ( switch is_ldhr 0.0 # hiking route, no non-hiking road penalty + switch stick_to_hiking_routes non_sticky_route_penalty + switch prefer_hiking_routes non_hiking_route_penalty + 0.0 # no hiking route preference + ) + add accesspenalty + add SAC_scale_penalty + + switch ( and highway= not route=ferry ) 100000 + switch highway=steps ( switch allow_steps ( switch consider_elevation 1.0 3.0 ) 100000 ) + switch route=ferry switch allow_ferries 2.34 100000 + +# iswet=1 in global context section means wet weather, increases penalty for eventually inconvenient ways +# ismuddy boolean relates in wet weather to unpaved or unclassified surface, that can have mud or get slicky in wet weather. + + switch highway=pedestrian switch ismuddy 1.3 1.0 + switch highway=bridleway switch ismuddy 2.5 1.2 + switch highway=cycleway switch ismuddy 1.4 + switch iswet 1.0 1.2 + switch highway=residential|living_street + switch ismuddy 1.5 + switch iswet 1.0 1.1 + switch highway=service switch ismuddy 1.5 + switch iswet 1.1 1.3 + + switch highway=track|road|path|footway + switch tracktype=grade1 switch ismuddy 1.1 + switch iswet 1.0 1.21 + switch tracktype=grade2 switch ismuddy 1.25 + switch iswet 1.11 1.12 + switch tracktype=grade3 switch ismuddy 1.4 + switch iswet 1.21 1.07 + switch tracktype=grade4 switch ismuddy 1.7 + switch iswet 1.31 1.05 + switch tracktype=grade5 switch ismuddy 2.0 + switch iswet 1.5 1.01 + + switch ismuddy 2.01 + switch iswet 1.51 1.12 + + switch highway=motorway|motorway_link 100000 + switch highway=proposed|abandoned switch ismuddy 3 1.5 + switch highway=construction switch ismuddy 10 2.5 + + switch highway=trunk|trunk_link|primary|primary_link switch iswet switch issidewalk 2.5 5 + switch issidewalk 5 10 + switch highway=secondary|secondary_link switch iswet switch issidewalk 2.0 2.5 + switch issidewalk 2.5 4.0 + switch highway=tertiary|tertiary_link|unclassified switch ismuddy 2.0 switch iswet switch issidewalk 1.4 1.7 + switch issidewalk 1.7 2.0 + + add cost_of_unknown ( switch ismuddy 0.5 0.0 ) + +---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 or bikeaccess footaccess 0 1000000 + +# changelog: +# *** Based on Trekking profile, added flag driven customizations +# Hiking Version 1.6 ALFA +# 2014-10-10 (c) Poutnik +# Route_foot related hints were improved with usage of Hiking.brf from below and by Arndt comment +# http://pastebin.com/YLpkGVD4 +# http://forum.openstreetmap.org/viewtopic.php?pid=447507#p447507 +# +# 2014-10-10 v1.1 - changed hiking route preference logic +# 1.2 - fixed preference counting bug +# 2014-10-11 1.3 - adding foot route to hiking routes, +# fixed ferry cost to respect initial cost triggerring. +# added bikeaccess, added shortest way mode, code cleanup +# 2014-10-12: v1.4 - involving turncosts and way/node initial costs as orientation/decision penalties, +# but turning them off for sticking to hiking routes as extra preference, +# tweaking cost preferences +# 2014-10-13 v1.5 +# redesigned route preference policy - turncost turned off even for nonsticky but preferred hiking routes +# cost tweaking. +# removed uniform cost=1 for sticky hiking routes, to distinguish quality +# giving penalty 1 for non hiking routes at sticky hiking routes. +# used not round costs to often trigger initial cost calculation +#v1.51 - bugfix of redundant routing penalty +#v 1.6 - initialcost penalty only for sticking routes, decreased way penalties for preferring routes +# 31/5/2015 v 1.7 ALFA - sac_scale + sac_scale_limit implemented +# 10/6/2015 v1.7.1 ALFA - sac_scale improved, MTB scale integrated to SAC scale +# sac_scale_preferred implemented, with progressive penalizing for SAC <> SAC preferred +# 10/6/2015 v1.7.2 BETA - Fixed general way access penalties + +