562 lines
26 KiB
Text
562 lines
26 KiB
Text
# Poutnik's Trekking profile template for Trekking profile variants
|
|
# Version 2.6.* new max cost system
|
|
#
|
|
# *) = See also https://github.com/poutnikl/Brouter-profiles/wiki
|
|
# **) = See also https://github.com/poutnikl/Trekking-Poutnik/wiki
|
|
#
|
|
# Standard Trekking profile by Poutnik, for dry weather
|
|
#
|
|
# Legend above is the placeholder for generated comments of final profiles
|
|
# See the HistoryLog.txt file for file history, the wikis above for verbose comments.
|
|
|
|
# bstart /global
|
|
---context:global
|
|
assign iswet 0 # 0 as default, *) flag for weather conditions
|
|
assign turnInstructionMode = 1 # 0=none, 1=auto-choose, 2=locus-style, 3=osmand-style
|
|
assign cycleroutes_pref 0.2 # also CRP *) costfactor penalty for not being cycleroute
|
|
assign MTB_factor 0.0 # default 0.0, *)
|
|
assign smallpaved_factor 0.0 # default 0.0, *)
|
|
assign avoid_unsafe 0 # 0 as default, gives penalty to mainroad without bike friendly status.
|
|
assign hills 1 # 1=default / 0=BRouter default/ 1=+ penalty for uphills >3.0%/ 2=velomobile-like avoiding slopes, 3= simulates ascend/length time equiv.
|
|
# 4=valley mode, 5=No-Flats mode
|
|
assign isbike_for_mainroads true # default=true / if false then bike friendly tag hints for mainroads are ignored, keeping their high penalties. v2.5.20
|
|
assign path_preference 0.0 # 0.0 as default, try 20.0 to penalize nonpath ways a/o paved ways
|
|
|
|
assign consider_elevation 1 # 1 as default
|
|
assign consider_smoothness 1 # 1 as default
|
|
assign allow_steps 1 # 1 as default
|
|
assign allow_ferries 1 # 1 as default
|
|
assign allow_traffic_penalty 1 # 1 as default
|
|
|
|
assign StrictNOBicycleaccess 0 # 0 allows but penalizes foot only access / 1 forbides foot only access.
|
|
assign valley_nonflat_multiplier = 2.0
|
|
|
|
assign allow_default_barrier_restriction false # If true, default access for barrier=gate is false. see node context
|
|
|
|
# Internal parameters - not intended to be tweaked by end users, unless they know what they are doing.
|
|
|
|
#new in 2.5.12
|
|
|
|
assign NoFlatMode equal hills 5
|
|
assign ValleyMode equal hills 4
|
|
assign originalisbike false
|
|
|
|
assign uphillcostvalue switch equal hills 1 70 switch equal hills 2 80
|
|
switch equal hills 3 60 switch ValleyMode 150 switch NoFlatMode 0 0
|
|
assign uphillcutoffvalue switch equal hills 1 3.0 switch equal hills 2 1.0
|
|
switch equal hills 3 0.5 switch ValleyMode 1.5 switch NoFlatMode 1.5 1.5
|
|
assign downhillcutoffvalue switch equal hills 1 1.5 switch equal hills 2 0.5
|
|
switch equal hills 3 1.5 switch ValleyMode 1.5 switch NoFlatMode 1.5 1.5
|
|
assign downhillcostvalue switch equal hills 1 60 switch equal hills 2 80
|
|
switch equal hills 3 0 switch ValleyMode 150 switch NoFlatMode 0 0
|
|
|
|
assign Flat_Penalty if NoFlatMode then 1.5 else 0.0
|
|
|
|
assign validForBikes 1
|
|
assign processUnusedTags 0 # 1 is old Brouter behaviour, 0 is new Brouter default, more efficient, but ignores tags not used by a profile.
|
|
|
|
|
|
# positive smallpaved factor effect subtracts itself from MTB factor effect
|
|
# on MTB-like OSM way preference and elevation effect attenuation
|
|
|
|
#v2.5.14 assign MTBminusSP_factor sub MTB_factor ( max 0 smallpaved_factor ) - pre v2.5.14
|
|
|
|
#v2.5.14
|
|
assign Hill_factor min 3 max -3 sub MTB_factor smallpaved_factor
|
|
assign Road_factor min 3 max -3 ( sub ( sub 0.0 MTB_factor ) smallpaved_factor )
|
|
|
|
assign positive_smallpaved_factor not lesser smallpaved_factor 0.0
|
|
assign abs_smallpaved_factor multiply ( switch positive_smallpaved_factor 1.0 -1.0 ) smallpaved_factor
|
|
|
|
assign MTB_hillcostfactor multiply 0.3333 Hill_factor
|
|
# It changes hillcosts to be 0.0 at Hill_factor = 3.0 and twice at -3.0
|
|
# Hill_factor 1..-1 leads hillcost to decrease e.g. from 60 to 40 / increase from 60 to 80
|
|
|
|
assign downhillcost if ( consider_elevation ) then ( multiply ( sub 1.0 MTB_hillcostfactor ) downhillcostvalue ) else 0
|
|
assign uphillcost if ( consider_elevation ) then ( multiply ( sub 1.0 MTB_hillcostfactor ) uphillcostvalue ) else 0
|
|
assign uphillcutoff if ( consider_elevation ) then ( multiply ( max 0.0 min 1.0 add 1.0 MTB_hillcostfactor ) uphillcutoffvalue ) else 1.5
|
|
assign downhillcutoff if ( consider_elevation ) then ( multiply ( max 0.0 min 1.0 add 1.0 MTB_hillcostfactor ) downhillcutoffvalue ) else 1.5
|
|
|
|
assign elevationpenaltybuffer if ValleyMode then 10 else 5 # 5 is trekking default
|
|
assign elevationmaxbuffer if ValleyMode then 20 else 10 # 10 is trekking default
|
|
assign elevationbufferreduce if ValleyMode then 0.0 else ( multiply 0.333 max uphillcutoff downhillcutoff ) # 0.0 is trekking default
|
|
|
|
assign uphillCFshift 0.0 # experimental shifting of up/downhillcostfactors as alternative way of
|
|
assign downhillCFshift 0.0 # prioritizing/penalizing of up/downhills, based on length, not elevation
|
|
|
|
assign pass1coefficient 1.8
|
|
assign pass2coefficient 0
|
|
|
|
assign use_proposed_cn 1 # 0 as default, considers proposed cycle networks as unmarked but valid cycleroutes.
|
|
assign considerTurnRestrictions = true #v2.5.11
|
|
|
|
assign unsafe_penalty_value 1.0 # 1 - was 2 in Trekking, but this may cause U-like safe routes
|
|
assign cost_of_unknown 2.0 # 2 as default, cost of highway=
|
|
|
|
assign c_ford_initialcost_node = 500
|
|
assign c_ford_initialcost_way = 1000
|
|
assign c_ford_costfactor = 50
|
|
assign million = 1000000
|
|
|
|
assign ford_handling_coef
|
|
switch ( lesser Hill_factor -1.49 ) million switch ( lesser Hill_factor -0.99 ) 20
|
|
switch ( lesser Hill_factor -0.49 ) 5.0 switch ( lesser Hill_factor 0.01 ) 1.0
|
|
switch ( lesser Hill_factor 0.51 ) 0.4 switch ( lesser Hill_factor 1.01 ) 0.1
|
|
switch ( lesser Hill_factor 1.51 ) 0.05 0.0
|
|
|
|
assign ford_initialcost_way = if ( equal ford_handling_coef million ) then million else
|
|
if ( equal ford_handling_coef 0.0 ) then 0.0 else
|
|
multiply c_ford_initialcost_way ford_handling_coef
|
|
|
|
assign ford_initialcost_node = if ( equal ford_handling_coef million ) then million else
|
|
if ( equal ford_handling_coef 0.0 ) then 0.0 else
|
|
multiply c_ford_initialcost_node ford_handling_coef
|
|
|
|
assign ford_costfactor = if ( equal ford_handling_coef million ) then 9999 else
|
|
if ( equal ford_handling_coef 0.0 ) then 0.0 else
|
|
multiply c_ford_costfactor ford_handling_coef
|
|
|
|
assign UDcostON true
|
|
|
|
assign ncncoef max 0 min 1 multiply cycleroutes_pref 0.2
|
|
assign lcncoef max 0 min 1 multiply cycleroutes_pref 1.0
|
|
|
|
# bend /global
|
|
# bstart /way
|
|
---context:way # following code refers to way-tags
|
|
# bstart /wayvariables
|
|
assign isicn route_bicycle_icn=yes
|
|
assign isncn or route_bicycle_ncn=yes ncn=yes
|
|
assign isrcn or route_bicycle_rcn=yes rcn=yes
|
|
assign islcn or route_bicycle_lcn=yes lcn=yes
|
|
|
|
assign any_cycleroute or route_bicycle_icn=yes or route_bicycle_ncn=yes or route_bicycle_rcn=yes route_bicycle_lcn=yes
|
|
|
|
assign any_cn_yes or lcn=yes or rcn=yes ncn=yes
|
|
assign any_cn_proposed or lcn=proposed or rcn=proposed ncn=proposed
|
|
assign any_cn or any_cn_yes switch use_proposed_cn any_cn_proposed 0
|
|
|
|
assign nodeaccessgranted or any_cycleroute any_cn
|
|
|
|
assign is_ldcr if ( equal cycleroutes_pref 0.0 ) then false else nodeaccessgranted
|
|
|
|
assign istrack highway=track|road|path|footway
|
|
assign ismainroad highway=motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified
|
|
assign isotherroad = not or istrack ismainroad
|
|
|
|
assign hascycleway = not
|
|
and ( or cycleway= cycleway=no|none ) and ( or cycleway:left= cycleway:left=no ) ( or cycleway:right= cycleway:right=no )
|
|
|
|
#2.6.* inserted originalisbike option
|
|
assign isbike_candidate or bicycle=yes|permissive|designated or hascycleway
|
|
if originalisbike then lcn=yes else nodeaccessgranted
|
|
|
|
assign isbike and ( or ( not ismainroad ) isbike_for_mainroads ) isbike_candidate
|
|
|
|
|
|
assign ispaved surface=paved|asphalt|concrete|paving_stones
|
|
assign isunpaved not or surface= or ispaved or surface=fine_gravel surface=cobblestone
|
|
|
|
assign probablyGood or ispaved and isbike not isunpaved #probably good surface - weather independent
|
|
|
|
assign turncost if ismainroad then 90 else if ispaved then 60 else 30
|
|
# Turn cost is based solely on estimation of road speediness and eventual time cost of turning, partially promoting tracks )
|
|
|
|
assign ismuddy and iswet
|
|
and ( not surface=gravel|pebblestone ) # ***)
|
|
( or isunpaved ( and surface= and highway=track|path not tracktype=grade1 ) )
|
|
|
|
assign nosurface or surface= surface=unknown
|
|
assign nosurfacenortracktype and nosurface tracktype=
|
|
assign ishard or ispaved surface=cobblestone|sett|compacted|fine_gravel|gravel|pebblestone
|
|
assign issoft not or nosurface ishard
|
|
|
|
# bend /wayvariables
|
|
|
|
|
|
# bstart /initialcost
|
|
assign initialclassifier
|
|
if route=ferry then 1
|
|
else if ( ford=yes ) then 15
|
|
else if ( highway=motorway|motorway_link ) then 2
|
|
else if ( highway=trunk|trunk_link ) then 3
|
|
else if ( highway=primary|primary_link ) then 4
|
|
else if ( highway=secondary|secondary_link ) then 5
|
|
else if ( highway=tertiary|tertiary_link ) then 6
|
|
else if ( highway=unclassified ) then 7
|
|
else if ( highway=residential ) then 8
|
|
else if ( highway=living_street ) then 9
|
|
else if ( highway=service ) then 10
|
|
else if ( highway=footway ) then 11
|
|
else if ( istrack ) then 12
|
|
else if ( highway=cycleway ) then 13
|
|
else 14
|
|
|
|
assign initialcost
|
|
if route=ferry then 10000
|
|
else if ( ford=yes ) then ford_initialcost_way
|
|
else if ( highway=motorway|motorway_link|trunk|trunk_link ) then 500
|
|
else if ( highway=primary|primary_link ) then 120
|
|
else if ( highway=secondary|secondary_link ) then 80
|
|
else if ( highway=tertiary|tertiary_link|unclassified ) then 50
|
|
else 30
|
|
|
|
# bend /initialcost
|
|
|
|
# bstart /wayaccess
|
|
|
|
assign defaultaccess =
|
|
if access= then not motorroad=yes
|
|
else if access=private|no then false
|
|
else true
|
|
|
|
assign bikeaccess =
|
|
if nodeaccessgranted then true
|
|
else if hascycleway then true
|
|
else if bicycle= then ( if vehicle= then defaultaccess else not vehicle=private|no )
|
|
else not bicycle=private|no|dismount
|
|
|
|
assign footaccess =
|
|
if bikeaccess then true
|
|
else if bicycle=dismount then true
|
|
else if foot= then defaultaccess
|
|
else not foot=private|no
|
|
|
|
assign accesspenalty =
|
|
if bikeaccess then 0
|
|
else if footaccess then
|
|
( if StrictNOBicycleaccess then 10000 else 4 )
|
|
else 10000
|
|
|
|
# handle one-ways. On primary roads, wrong-oneways should be close to forbidden
|
|
# while on other ways we just add 4 to the costfactor
|
|
# making it at least 5, as 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 4.0
|
|
|
|
else 0.0
|
|
|
|
# bend /wayaccess
|
|
|
|
# bstart /roadmaxpenalties
|
|
|
|
# bstart /roughness_penalty
|
|
assign smoothness_penalty
|
|
# http://wiki.openstreetmap.org/wiki/Key:smoothness
|
|
|
|
if not consider_smoothness then 0.0 else
|
|
if smoothness= then 0.0 else
|
|
if smoothness=excellent|very_good|good then 0.0 else
|
|
if smoothness=intermediate then 0.2 else
|
|
if smoothness=bad|robust_wheels then 0.5 else
|
|
if smoothness=very_bad|high_clearance then 1.2 else
|
|
if smoothness=horrible|off_road_wheels then 2.5 else
|
|
if smoothness=very_horrible then 5.0 else
|
|
if smoothness=impassable then 10.0 else
|
|
0.0
|
|
|
|
assign mtb_scale_penalty if not consider_smoothness then 0.0 else
|
|
|
|
# Remember this is for trekking bikes, not MTB. There are MTB dedicated profiles.
|
|
# http://wiki.openstreetmap.org/wiki/Key:mtb:scale
|
|
|
|
if mtb:scale= then 0.0 else if mtb:scale=0- then 0.0 else
|
|
if mtb:scale=0 then 0.0 else if mtb:scale=0+ then 0.3 else
|
|
if mtb:scale=1- then 0.7 else if mtb:scale=1 then 1.2 else
|
|
if mtb:scale=1+ then 1.8 else if mtb:scale=2- then 2.5 else
|
|
if mtb:scale=2 then 5.0 else if mtb:scale=2+ then 10.0 else
|
|
if mtb:scale=3 then 15.0 else
|
|
if mtb:scale=4|5|6 then 9000
|
|
else 0.0
|
|
|
|
assign roughness_penalty max smoothness_penalty max mtb_scale_penalty ( if ford=yes then ford_costfactor else 0 )
|
|
|
|
# bend /roughness_penalty
|
|
|
|
# bstart /MTB_SP_tweaks
|
|
|
|
assign rough_coef = add 1.0 ( multiply 0.33 roughness_penalty )
|
|
|
|
assign univ_factor_coef
|
|
switch highway=motorway|motorway_link|trunk|trunk_link 1.0 switch highway=primary|primary_link 0.9
|
|
switch highway=secondary|secondary_link 0.7 switch highway=tertiary|tertiary_link 0.4
|
|
switch highway=unclassified 0.25
|
|
switch or not istrack highway=footway ( switch ispaved 0.25 switch isunpaved -0.25 0.0 )
|
|
switch or ispaved tracktype=grade1 0.1
|
|
multiply rough_coef
|
|
add ( switch highway=path -0.25 0.0 )
|
|
switch ( nosurfacenortracktype ) ( switch isbike 0.0 -0.25 )
|
|
switch nosurface ( switch or isbike tracktype=grade2|grade3 -0.25 -0.5 )
|
|
switch surface=compacted|fine_gravel -0.25 switch surface=cobblestone|sett -0.4
|
|
switch surface=ground|mud|dirt -0.6 switch surface=grass|sand -0.6
|
|
switch surface=gravel|pebblestone -0.75 -0.6
|
|
|
|
assign nonpath_penalty =
|
|
if equal path_preference 0.0 then 0.0 # nonpath_penalty inactive
|
|
else multiply ( max 0 path_preference )
|
|
if ismainroad then 1 else if not or istrack highway=cycleway then 0.6
|
|
else if ispaved then 0.4 else if or not highway=path or not isunpaved tracktype=grade1|grade2 then 0.25
|
|
else if or not isunpaved or not highway=path or not tracktype=grade3|grade4|grade5
|
|
surface=gravel|cobblestone|pebblestone then 0.15 else 0.0
|
|
|
|
assign MTB_factor_for_road if ( equal MTB_factor 0.0 ) then 0.0 else multiply MTB_factor univ_factor_coef
|
|
assign abs_univ_factor if lesser univ_factor_coef 0.0 then multiply -1.0 univ_factor_coef else univ_factor_coef
|
|
assign smallpaved_factor_for_road if ( equal smallpaved_factor 0.0 ) then 0.0
|
|
else multiply abs_smallpaved_factor ( if positive_smallpaved_factor then abs_univ_factor else ( sub 1.0 abs_univ_factor ) )
|
|
# bend /MTB_SP_tweaks
|
|
|
|
# bstart /HWclass_bfactor_components
|
|
|
|
assign highwayclass_basefactor
|
|
if ismainroad then
|
|
switch highway=trunk|trunk_link 1.8 switch highway=primary|primary_link 1.5
|
|
switch highway=secondary|secondary_link 1.2 switch highway=tertiary|tertiary_link 1.1 1.0
|
|
else if istrack then
|
|
switch highway=track 1.0 switch highway=path 1.1 switch highway=footway 1.2 1.0 # highway=road
|
|
else
|
|
switch highway=pedestrian 2.0 switch highway=bridleway 3.0
|
|
switch highway=cycleway 1.0 switch highway=residential|living_street 1.0
|
|
switch highway=service 1.1 cost_of_unknown
|
|
|
|
|
|
assign tracktype_penalty
|
|
if tracktype= then 0.0 else
|
|
switch tracktype=grade1 0.0 switch tracktype=grade2 0.4 switch tracktype=grade3 0.7
|
|
switch tracktype=grade4 0.9 switch tracktype=grade5 1.0 0.5
|
|
|
|
assign surface_penalty
|
|
if nosurface then 0.0 else
|
|
switch surface=asphalt|paved 0.0 switch surface=concrete|paving_stones 0.2
|
|
switch surface=sett|compacted 0.4 switch surface=cobblestone|ground|earth|unpaved|dirt|fine_gravel 0.6
|
|
switch surface=grass|sand 1.0 switch surface=gravel|pebblestone 1.5 0.6
|
|
|
|
assign tracktype_surface_penalty
|
|
if nosurfacenortracktype then ( switch ismainroad 0.0 switch isotherroad 0.0 switch highway=path 0.8 0.4 )
|
|
else if nosurface then tracktype_penalty
|
|
else if tracktype= then surface_penalty else
|
|
max tracktype_penalty surface_penalty
|
|
|
|
assign not_isbike_penalty if isbike then 0.0
|
|
else if ismainroad then
|
|
add switch bicycle=use_sidepath 2.0 0.0
|
|
switch highway=trunk|trunk_link 8.2 switch highway=primary|primary_link 1.5
|
|
switch highway=secondary|secondary_link 0.4 0.3 # tertiary|tertiary_link|unclassified
|
|
else if istrack then
|
|
switch highway=footway 3.5 switch or ispaved tracktype=grade1 0.0
|
|
switch and tracktype= not isunpaved ( switch highway=path 3.5 1.0 )
|
|
switch tracktype= 3.0 switch tracktype=grade1 0.2
|
|
switch tracktype=grade2 0.6 switch tracktype=grade3 1.2
|
|
switch tracktype=grade4 2.0 switch tracktype=grade5 3.0
|
|
3.0
|
|
else
|
|
switch highway=pedestrian 2.0 switch highway=bridleway 2.0
|
|
switch highway=cycleway 0.0 switch highway=residential|living_street 0.0
|
|
switch highway=service 0.0 0.0
|
|
|
|
assign wet_penalty if not iswet then 0.0 else
|
|
switch surface=cobblestone|sett 1.0 switch ispaved 0.0
|
|
switch surface=compacted 0.6 switch surface=fine_gravel 0.8
|
|
switch surface= switch not istrack 0.5 switch highway=path 2.0 1.0
|
|
switch surface=grass switch highway=path 2.5 1.5
|
|
switch surface=ground|earth|unpaved|sand|dirt|mud switch highway=path 3.5 2.0
|
|
2.0
|
|
|
|
# bend /HWclass_bfactor_components
|
|
|
|
# bend /roadmaxpenalties
|
|
|
|
# bstart /trafficpenalties
|
|
# Penalty for unsafe roads. As wet fallback, it does not so strictly avoid unsafe
|
|
assign unsafe_penalty
|
|
if and avoid_unsafe and ismainroad not isbike
|
|
then multiply unsafe_penalty_value ( if iswet then 0.5 else 1.0 )
|
|
else 0.0
|
|
|
|
|
|
|
|
assign trafficpenalty0 = (
|
|
if not allow_traffic_penalty then 0.0 else
|
|
if highway=primary|primary_link then
|
|
(
|
|
if estimated_traffic_class=4 then 0.2
|
|
else if estimated_traffic_class=5 then 0.4
|
|
else if estimated_traffic_class=6|7 then 0.6
|
|
else 0
|
|
)
|
|
else if highway=secondary|secondary_link then
|
|
(
|
|
if estimated_traffic_class=3 then 0.2
|
|
else if estimated_traffic_class=4 then 0.4
|
|
else if estimated_traffic_class=5 then 0.6
|
|
else if estimated_traffic_class=6|7 then 1
|
|
else 0
|
|
)
|
|
else if highway=tertiary|tertiary_link then
|
|
(
|
|
if estimated_traffic_class=2 then 0.1
|
|
else if estimated_traffic_class=3 then 0.3
|
|
else if estimated_traffic_class=4 then 0.5
|
|
else if estimated_traffic_class=5|6|7 then 1
|
|
else 0
|
|
)
|
|
else 0
|
|
)
|
|
|
|
assign trafficpenalty =
|
|
if hascycleway then min 0.3 trafficpenalty0
|
|
else trafficpenalty0
|
|
|
|
# bend /trafficpenalties
|
|
|
|
# bstart /costfactors
|
|
|
|
assign penaltymax = max roughness_penalty max tracktype_surface_penalty max wet_penalty trafficpenalty
|
|
|
|
assign rawcostfactor ( # can be <1, adjusted to >=1 in final step of calculation of costfactor, uphillcostfactor,downhillcostfactor
|
|
switch and highway= not route=ferry 10000 #only highways unless ferry
|
|
switch highway=motorway|motorway_link|proposed|abandoned 10000
|
|
|
|
# all other exclusions below (access, steps, ferries,..) should not be deleted by the decoder, to be available in voice-hint-processing
|
|
min 9999
|
|
|
|
switch highway=steps switch allow_steps 40 10000
|
|
switch route=ferry switch allow_ferries 5.67 10000
|
|
switch highway=construction 10000
|
|
|
|
add highwayclass_basefactor add not_isbike_penalty add unsafe_penalty max penaltymax nonpath_penalty
|
|
)
|
|
|
|
assign isCFgt9997 greater rawcostfactor 9997
|
|
|
|
assign LDCRboost multiply sub 1.0 rawcostfactor cycleroutes_pref
|
|
assign cycleroute_tweak
|
|
#2.6 reworked : non cyclenetwork penalty = + cycleroutes_pref ( 0..1 , default 0.2)
|
|
# ICN boost = - ( CF - 1 ) * cycleroutes_pref, leading to CF=1.0 for cycleroutes_pref = 1.0
|
|
# other CN: weitgted average of above, with weights ncncoef, lcncoef shifting with cycleroutes_pref
|
|
|
|
if not greater cycleroutes_pref 0.0 then 0.0
|
|
else if not is_ldcr then cycleroutes_pref
|
|
else if isicn then LDCRboost
|
|
else if isncn then add multiply ncncoef cycleroutes_pref multiply ( sub 1.0 ncncoef ) LDCRboost
|
|
else add multiply lcncoef cycleroutes_pref multiply ( sub 1.0 lcncoef ) LDCRboost
|
|
|
|
# can be <1, adjusted to >=1 in final step of calculation of costfactor, uphillcostfactor,downhillcostfactor
|
|
assign rawcostfactor2 if isCFgt9997 then rawcostfactor
|
|
else add rawcostfactor add cycleroute_tweak add MTB_factor_for_road smallpaved_factor_for_road
|
|
|
|
assign access-penalty max onewaypenalty accesspenalty
|
|
|
|
assign costfactor if isCFgt9997 then rawcostfactor2 else add access-penalty add Flat_Penalty max 1.0 rawcostfactor2
|
|
|
|
assign uphillcostfactor if or not UDcostON isCFgt9997 then costfactor else
|
|
add access-penalty max 1.0 if ValleyMode then ( multiply rawcostfactor2 valley_nonflat_multiplier )
|
|
else add uphillCFshift add rawcostfactor2 switch ismainroad ( multiply 0.4 sub univ_factor_coef 0.5 ) ( multiply -0.5 univ_factor_coef )
|
|
|
|
assign downhillcostfactor if or not UDcostON isCFgt9997 then costfactor else
|
|
add access-penalty max 1.0 if ValleyMode then ( multiply rawcostfactor2 valley_nonflat_multiplier )
|
|
else add downhillCFshift add rawcostfactor2 multiply -0.2 univ_factor_coef
|
|
|
|
# bend /costfactors
|
|
|
|
# bstart /priorityclassifiers
|
|
|
|
# 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 16
|
|
else if ( highway=service ) then 14
|
|
else if ( tracktype=grade1 ) then 6
|
|
else if ( highway=cycleway ) then 6
|
|
else if ( bicycle=designated ) then 6
|
|
else if ( highway=bridleway ) then 4
|
|
else if ( highway=track|road|footway ) then 4
|
|
else if ( highway=steps|path|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
|
|
|
|
# bend /priorityclassifiers
|
|
|
|
# bend /way
|
|
|
|
# bstart /node
|
|
---context:node # following code refers to node tags
|
|
|
|
assign initial_cost_node 0 # 0 as default
|
|
|
|
assign defaultaccess =
|
|
if ( access= ) then if allow_default_barrier_restriction then not barrier=gate # add default barrier restrictions here! - modified v2.5.15, conditioned in 2.6
|
|
else true
|
|
else if ( access=private|no ) then false
|
|
else true
|
|
|
|
assign bikeaccess =
|
|
if nodeaccessgranted=yes then true
|
|
else if bicycle= then
|
|
(
|
|
if vehicle= then defaultaccess
|
|
else not vehicle=private|no
|
|
)
|
|
else not bicycle=private|no|dismount
|
|
|
|
assign footaccess =
|
|
if bicycle=dismount then true
|
|
else if foot= then defaultaccess
|
|
else not foot=private|no
|
|
|
|
|
|
assign initialcost =
|
|
add ( if highway=traffic_signals then 120
|
|
else if highway=stop then 60
|
|
else if and highway=crossing bicycle=no then 60
|
|
else if and highway=crossing crossing=no then 300 # workaround affecting road routing
|
|
else if ( ford=yes ) then ford_initialcost_node
|
|
else initial_cost_node )
|
|
if bikeaccess then 0 else ( if footaccess then 100 else 1000000 )
|
|
|
|
# bend /node
|