# # Car-Routing based on a kinematic model # # Depending on the vmax-parameter (target-speed) # this can be anything from least-time routing to eco-routing # # ---model:btools.router.KinematicModel ---context:global # kinematic parameters assign vmax = 160 # kmh assign recup_efficiency = 0.7 # (ratio) assign totalweight = 1640 # kg assign f_roll = 232 # Newton assign f_air = 0.4 # 0.5*cw*A*rho assign f_recup = 400 # Newton assign p_standby = 250 # Watt # technical parameters assign validForCars = true assign pass1coefficient = 1.3 assign turnInstructionMode = 1 # 0=none, 1=auto-choose, 2=locus-style, 3=osmand-style assign avoid_tolls = true ---context:way # following code refers to way-tags assign initialcost switch route=ferry 20000 0 # # calculate logical car access # assign caraccess switch motorcar= switch motor_vehicle= switch vehicle= switch access= switch highway=motorway|motorway_link 1 switch highway=trunk|trunk_link 1 switch highway=primary|primary_link 1 switch highway=secondary|secondary_link 1 switch highway=tertiary|tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 switch highway=residential|living_street 1 switch highway=service 1 0 access=yes|permissive|designated|destination vehicle=yes|designated|destination motor_vehicle=yes|permissive|designated|destination motorcar=yes|permissive|designated|destination assign accessspeedlimit = if caraccess then 999 else 0 assign isbadoneway = if reversedirection=yes then ( if oneway= then junction=roundabout else oneway=yes|true|1 ) else oneway=-1 assign onewayspeedlimit = if isbadoneway then 0 else 999 assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign maxspeed_surface = switch or surface= surface=paved|asphalt|concrete 999 switch surface=paving_stones|cobblestone 30 2 assign maxspeed_tracktype = switch tracktype= 999 switch tracktype=grade1 40 switch tracktype=grade2 5 1 assign maxspeed_implicit = switch highway=motorway 999 switch highway=motorway_link 130 switch highway=trunk 250 switch highway=trunk_link 100 switch highway=primary|primary_link 100 switch highway=secondary|secondary_link 90 switch highway=tertiary|tertiary_link 80 switch highway=unclassified 50 switch route=ferry 10 switch highway=bridleway 10 switch highway=residential|living_street 30 switch highway=service 30 switch highway=track|road|path switch tracktype=grade1 30 5 0 assign maxspeed = min onewayspeedlimit min accessspeedlimit switch maxspeed=50 50 switch maxspeed=30 30 switch maxspeed=10 10 switch maxspeed=20 20 switch maxspeed=40 40 switch maxspeed=60 60 switch maxspeed=70 70 switch maxspeed=80 80 switch maxspeed=90 90 switch maxspeed=100 100 switch maxspeed=110 110 switch maxspeed=120 120 switch maxspeed=130 130 switch maxspeed=urban 50 switch maxspeed=rural 100 min maxspeed_implicit min maxspeed_surface maxspeed_tracktype # added test for toll roads # assign costfactor = if equal maxspeed 0 then 10000 else 0 assign costfactor = if equal maxspeed 0 then 10000 else if and avoid_tolls toll=yes then 9999 else 0 assign minspeed = switch highway=motorway|trunk 75 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=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 else 0 # some more classifying bits used for voice hint generation... assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then junction=roundabout else oneway=yes|true|1 assign isroundabout = junction=roundabout 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 add multiply isgoodforcars 16 multiply highway=residential|living_street 32 ---context:node # following code refers to node tags # # calculate logical car access to nodes # assign caraccess switch motorcar= switch motor_vehicle= switch vehicle= switch access= not barrier=gate|bollard|lift_gate|cycle_barrier access=yes|permissive|designated|destination vehicle=yes|permissive|designated|destination motor_vehicle=yes|permissive|designated|destination motorcar=yes|permissive|designated|destination assign initialcost = switch and avoid_tolls barrier=toll_booth 1000000 switch caraccess 0 1000000 assign maxspeed = if or crossing=traffic_signals highway=traffic_signals then 0 else 999