diff --git a/features/bicycle/safety.feature b/features/bicycle/safety.feature index a50f4b6c2..ca4bd5845 100644 --- a/features/bicycle/safety.feature +++ b/features/bicycle/safety.feature @@ -25,6 +25,16 @@ Feature: Bicycle - Adds penalties to unsafe roads Scenario: Bike - Apply no penalties to ways with cycleways Then routability should be | 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 | | | primary | 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 Then routability should be - | highway | cycleway:right | cycleway:left | forw | backw | forw_rate | backw_rate | - | motorway | lane | | 15 km/h | | 4.2 | | - | primary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | - | secondary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | - | 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 | 15 km/h | 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 | 15 km/h | 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 | + | highway | cycleway:right | cycleway:left | forw | backw | forw_rate | backw_rate | + | motorway | track | | 15 km/h | | 4.2 | | + | primary | track | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | secondary | track | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | tertiary | track | | 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 | track | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | tertiary_link | track | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | 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 | 6 km/h +-1 | 4.2 | 1.7 | + | motorway | | track | | 15 km/h | | 4.2 | + | primary | | track | 15 km/h | 15 km/h | 2.9 | 4.2 | + | secondary | | track | 15 km/h | 15 km/h | 2.9 | 4.2 | + | tertiary | | track | 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 | | track | 15 km/h | 15 km/h | 2.9 | 4.2 | + | tertiary_link | | track | 15 km/h | 15 km/h | 2.9 | 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 | 6 km/h +-1 | 15 km/h | 1.7 | 4.2 | + | motorway | lane | | 15 km/h | | 4.2 | | + | primary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | secondary | lane | | 15 km/h | 15 km/h | 4.2 | 2.9 | + | 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 diff --git a/profiles/bicycle.lua b/profiles/bicycle.lua index fd3a1868a..fe1e87e96 100644 --- a/profiles/bicycle.lua +++ b/profiles/bicycle.lua @@ -32,10 +32,6 @@ local profile = { u_turn_penalty = 20, turn_penalty = 6, 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, allowed_start_modes = Set { @@ -59,17 +55,17 @@ local profile = { }, access_tag_whitelist = Set { - 'yes', - 'permissive', - 'designated' + 'yes', + 'permissive', + 'designated' }, access_tag_blacklist = Set { - 'no', - 'private', - 'agricultural', - 'forestry', - 'delivery' + 'no', + 'private', + 'agricultural', + 'forestry', + 'delivery' }, restricted_access_tag_list = Set { }, @@ -77,34 +73,36 @@ local profile = { restricted_highway_whitelist = Set { }, access_tags_hierarchy = Sequence { - 'bicycle', - 'vehicle', - 'access' + 'bicycle', + 'vehicle', + 'access' }, restrictions = Set { - 'bicycle' + 'bicycle' }, cycleway_tags = Set { - 'track', - 'lane', - 'opposite', - 'opposite_lane', - 'opposite_track', - 'share_busway', - 'sharrow', - 'shared', + 'track', + 'lane', + 'opposite', + 'opposite_lane', + 'opposite_track', + 'share_busway', + 'sharrow', + 'shared', 'shared_lane' }, - unsafe_highway_list = Set { - 'primary', - 'secondary', - 'tertiary', - 'primary_link', - 'secondary_link', - 'tertiary_link' + -- reduce the driving speed by 30% for unsafe roads + -- only used for cyclability metric + unsafe_highway_list = { + primary = 0.7, + secondary = 0.7, + tertiary = 0.7, + primary_link = 0.7, + secondary_link = 0.7, + tertiary_link = 0.7, }, service_penalties = { @@ -504,17 +502,18 @@ function way_function (way, result) -- convert duration into cyclability 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 backward_is_unsafe = is_unsafe and not has_cycleway_left local is_undesireable = data.highway == "service" and profile.service_penalties[service] local forward_penalty = 1. local backward_penalty = 1. if forward_is_unsafe then - forward_penalty = math.min(forward_penalty, profile.safety_penalty) + forward_penalty = math.min(forward_penalty, safety_penalty) end if backward_is_unsafe then - backward_penalty = math.min(backward_penalty, profile.safety_penalty) + backward_penalty = math.min(backward_penalty, safety_penalty) end if is_undesireable then