Adjustment of bicycle profile to review comments

This commit is contained in:
Michael Krasnyk 2017-07-03 13:43:39 +02:00 committed by Patrick Niklaus
parent a3e0eb03db
commit a41caf0efb
2 changed files with 88 additions and 59 deletions

View File

@ -25,6 +25,16 @@ Feature: Bicycle - Adds penalties to unsafe roads
Scenario: Bike - Apply no penalties to ways with cycleways Scenario: Bike - Apply no penalties to ways with cycleways
Then routability should be Then routability should be
| highway | cycleway | forw | backw | forw_rate | backw_rate | | highway | cycleway | forw | backw | forw_rate | backw_rate |
| motorway | track | 15 km/h | | 4.2 | |
| primary | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| secondary | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| tertiary | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| primary_link | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| secondary_link | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| tertiary_link | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| residential | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| cycleway | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| footway | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| motorway | lane | 15 km/h | | 4.2 | | | motorway | lane | 15 km/h | | 4.2 | |
| primary | lane | 15 km/h | 15 km/h | 4.2 | 4.2 | | primary | lane | 15 km/h | 15 km/h | 4.2 | 4.2 |
| secondary | lane | 15 km/h | 15 km/h | 4.2 | 4.2 | | secondary | lane | 15 km/h | 15 km/h | 4.2 | 4.2 |
@ -40,31 +50,51 @@ Feature: Bicycle - Adds penalties to unsafe roads
Scenario: Bike - Apply no penalties to ways in direction of cycleways Scenario: Bike - Apply no penalties to ways in direction of cycleways
Then routability should be Then routability should be
| highway | cycleway:right | cycleway:left | forw | backw | forw_rate | backw_rate | | highway | cycleway:right | cycleway:left | forw | backw | forw_rate | backw_rate |
| motorway | lane | | 15 km/h | | 4.2 | | | motorway | track | | 15 km/h | | 4.2 | |
| primary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | primary | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| secondary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | secondary | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| tertiary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | tertiary | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| primary_link | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | primary_link | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| secondary_link| lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | secondary_link | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| tertiary_link | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | tertiary_link | track | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| residential | lane | | 15 km/h | 15 km/h | 4.2 | 4.2 | | residential | track | | 15 km/h | 15 km/h | 4.2 | 4.2 |
| cycleway | lane | | 15 km/h | 15 km/h | 4.2 | 4.2 | | cycleway | track | | 15 km/h | 15 km/h | 4.2 | 4.2 |
| footway | lane | | 15 km/h | 6 km/h +-1 | 4.2 | 1.7 | | footway | track | | 15 km/h | 6 km/h +-1 | 4.2 | 1.7 |
| motorway | | lane | | 15 km/h | | 4.2 | | motorway | | track | | 15 km/h | | 4.2 |
| primary | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | primary | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| secondary | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | secondary | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| tertiary | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | tertiary | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| primary_link | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | primary_link | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| secondary_link| | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | secondary_link | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| tertiary_link | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | tertiary_link | | track | 15 km/h | 15 km/h | 2.9 | 4.2 |
| residential | | lane | 15 km/h | 15 km/h | 4.2 | 4.2 | | residential | | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| cycleway | | lane | 15 km/h | 15 km/h | 4.2 | 4.2 | | cycleway | | track | 15 km/h | 15 km/h | 4.2 | 4.2 |
| footway | | lane | 6 km/h +-1 | 15 km/h | 1.7 | 4.2 | | footway | | track | 6 km/h +-1 | 15 km/h | 1.7 | 4.2 |
| motorway | shared_lane | | 15 km/h | | 4.2 | | | motorway | lane | | 15 km/h | | 4.2 | |
| primary | shared_lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | | primary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| motorway | | shared_lane | | 15 km/h | | 4.2 | | secondary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| primary | | shared_lane | 15 km/h | 15 km/h | 2.9 | 4.2 | | tertiary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| primary_link | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| secondary_link | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| tertiary_link | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| residential | lane | | 15 km/h +-1 | 15 km/h +-1 | 4.2 | 4.2 |
| cycleway | lane | | 15 km/h | 15 km/h | 4.2 | 4.2 |
| footway | lane | | 15 km/h | 6 km/h +-1 | 4.2 | 1.7 |
| motorway | | lane | | 15 km/h | | 4.2 |
| primary | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
| secondary | | lane | 15 km/h +-1 | 15 km/h +-1 | 2.9 | 4.2 |
| tertiary | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
| primary_link | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
| secondary_link | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
| tertiary_link | | lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
| residential | | lane | 15 km/h | 15 km/h | 4.2 | 4.2 |
| cycleway | | lane | 15 km/h | 15 km/h | 4.2 | 4.2 |
| footway | | lane | 6 km/h +-1 | 15 km/h | 1.7 | 4.2 |
| motorway | shared_lane | | 15 km/h | | 4.2 | |
| primary | shared_lane | | 15 km/h | 15 km/h | 4.2 | 2.9 |
| motorway | | shared_lane | | 15 km/h | | 4.2 |
| primary | | shared_lane | 15 km/h | 15 km/h | 2.9 | 4.2 |
Scenario: Bike - Don't apply penalties for all kind of cycleways Scenario: Bike - Don't apply penalties for all kind of cycleways

View File

@ -32,10 +32,6 @@ local profile = {
u_turn_penalty = 20, u_turn_penalty = 20,
turn_penalty = 6, turn_penalty = 6,
turn_bias = 1.4, turn_bias = 1.4,
-- reduce the driving speed by 30% for unsafe roads
-- only used for cyclability metric
safety_penalty = 0.7,
use_public_transport = true, use_public_transport = true,
allowed_start_modes = Set { allowed_start_modes = Set {
@ -59,17 +55,17 @@ local profile = {
}, },
access_tag_whitelist = Set { access_tag_whitelist = Set {
'yes', 'yes',
'permissive', 'permissive',
'designated' 'designated'
}, },
access_tag_blacklist = Set { access_tag_blacklist = Set {
'no', 'no',
'private', 'private',
'agricultural', 'agricultural',
'forestry', 'forestry',
'delivery' 'delivery'
}, },
restricted_access_tag_list = Set { }, restricted_access_tag_list = Set { },
@ -77,34 +73,36 @@ local profile = {
restricted_highway_whitelist = Set { }, restricted_highway_whitelist = Set { },
access_tags_hierarchy = Sequence { access_tags_hierarchy = Sequence {
'bicycle', 'bicycle',
'vehicle', 'vehicle',
'access' 'access'
}, },
restrictions = Set { restrictions = Set {
'bicycle' 'bicycle'
}, },
cycleway_tags = Set { cycleway_tags = Set {
'track', 'track',
'lane', 'lane',
'opposite', 'opposite',
'opposite_lane', 'opposite_lane',
'opposite_track', 'opposite_track',
'share_busway', 'share_busway',
'sharrow', 'sharrow',
'shared', 'shared',
'shared_lane' 'shared_lane'
}, },
unsafe_highway_list = Set { -- reduce the driving speed by 30% for unsafe roads
'primary', -- only used for cyclability metric
'secondary', unsafe_highway_list = {
'tertiary', primary = 0.7,
'primary_link', secondary = 0.7,
'secondary_link', tertiary = 0.7,
'tertiary_link' primary_link = 0.7,
secondary_link = 0.7,
tertiary_link = 0.7,
}, },
service_penalties = { service_penalties = {
@ -504,17 +502,18 @@ function way_function (way, result)
-- convert duration into cyclability -- convert duration into cyclability
if properties.weight_name == 'cyclability' then if properties.weight_name == 'cyclability' then
local is_unsafe = profile.safety_penalty < 1 and profile.unsafe_highway_list[data.highway] local safety_penalty = profile.unsafe_highway_list[data.highway] or 1.
local is_unsafe = safety_penalty < 1
local forward_is_unsafe = is_unsafe and not has_cycleway_right local forward_is_unsafe = is_unsafe and not has_cycleway_right
local backward_is_unsafe = is_unsafe and not has_cycleway_left local backward_is_unsafe = is_unsafe and not has_cycleway_left
local is_undesireable = data.highway == "service" and profile.service_penalties[service] local is_undesireable = data.highway == "service" and profile.service_penalties[service]
local forward_penalty = 1. local forward_penalty = 1.
local backward_penalty = 1. local backward_penalty = 1.
if forward_is_unsafe then if forward_is_unsafe then
forward_penalty = math.min(forward_penalty, profile.safety_penalty) forward_penalty = math.min(forward_penalty, safety_penalty)
end end
if backward_is_unsafe then if backward_is_unsafe then
backward_penalty = math.min(backward_penalty, profile.safety_penalty) backward_penalty = math.min(backward_penalty, safety_penalty)
end end
if is_undesireable then if is_undesireable then