From 762dd17512e7bdf33ab7e53344a3896a74b54a50 Mon Sep 17 00:00:00 2001 From: Emil Tin Date: Thu, 27 Mar 2014 21:19:26 +0100 Subject: [PATCH] cleanup indentation of lua profiles --- profiles/bicycle.lua | 591 +++++++++++++++++++++---------------------- profiles/car.lua | 106 ++++---- profiles/testbot.lua | 156 ++++++------ 3 files changed, 425 insertions(+), 428 deletions(-) diff --git a/profiles/bicycle.lua b/profiles/bicycle.lua index 048963c94..08f78b8ce 100644 --- a/profiles/bicycle.lua +++ b/profiles/bicycle.lua @@ -1,8 +1,8 @@ require("lib/access") -- Begin of globals -barrier_whitelist = { [""] = true, ["cycle_barrier"] = true, ["bollard"] = true, ["entrance"] = true, ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true} -access_tag_whitelist = { ["yes"] = true, ["permissive"] = true, ["designated"] = true } +barrier_whitelist = { [""] = true, ["cycle_barrier"] = true, ["bollard"] = true, ["entrance"] = true, ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true } +access_tag_whitelist = { ["yes"] = true, ["permissive"] = true, ["designated"] = true } access_tag_blacklist = { ["no"] = true, ["private"] = true, ["agricultural"] = true, ["forestery"] = true } access_tag_restricted = { ["destination"] = true, ["delivery"] = true } access_tags_hierachy = { "bicycle", "vehicle", "access" } @@ -15,349 +15,348 @@ default_speed = 15 walking_speed = 6 bicycle_speeds = { - ["cycleway"] = default_speed, - ["primary"] = default_speed, - ["primary_link"] = default_speed, - ["secondary"] = default_speed, - ["secondary_link"] = default_speed, - ["tertiary"] = default_speed, - ["tertiary_link"] = default_speed, - ["residential"] = default_speed, - ["unclassified"] = default_speed, - ["living_street"] = default_speed, - ["road"] = default_speed, - ["service"] = default_speed, - ["track"] = 12, - ["path"] = 12 - --["footway"] = 12, - --["pedestrian"] = 12, + ["cycleway"] = default_speed, + ["primary"] = default_speed, + ["primary_link"] = default_speed, + ["secondary"] = default_speed, + ["secondary_link"] = default_speed, + ["tertiary"] = default_speed, + ["tertiary_link"] = default_speed, + ["residential"] = default_speed, + ["unclassified"] = default_speed, + ["living_street"] = default_speed, + ["road"] = default_speed, + ["service"] = default_speed, + ["track"] = 12, + ["path"] = 12 + --["footway"] = 12, + --["pedestrian"] = 12, } pedestrian_speeds = { - ["footway"] = walking_speed, - ["pedestrian"] = walking_speed, - ["steps"] = 2 + ["footway"] = walking_speed, + ["pedestrian"] = walking_speed, + ["steps"] = 2 } railway_speeds = { - ["train"] = 10, - ["railway"] = 10, - ["subway"] = 10, - ["light_rail"] = 10, - ["monorail"] = 10, - ["tram"] = 10 + ["train"] = 10, + ["railway"] = 10, + ["subway"] = 10, + ["light_rail"] = 10, + ["monorail"] = 10, + ["tram"] = 10 } platform_speeds = { - ["platform"] = walking_speed + ["platform"] = walking_speed } amenity_speeds = { - ["parking"] = 10, - ["parking_entrance"] = 10 + ["parking"] = 10, + ["parking_entrance"] = 10 } man_made_speeds = { - ["pier"] = walking_speed + ["pier"] = walking_speed } route_speeds = { - ["ferry"] = 5 + ["ferry"] = 5 } surface_speeds = { - ["asphalt"] = default_speed, - ["cobblestone:flattened"] = 10, - ["paving_stones"] = 10, - ["compacted"] = 10, - ["cobblestone"] = 6, - ["unpaved"] = 6, - ["fine_gravel"] = 6, - ["gravel"] = 6, - ["fine_gravel"] = 6, - ["pebbelstone"] = 6, - ["ground"] = 6, - ["dirt"] = 6, - ["earth"] = 6, - ["grass"] = 6, - ["mud"] = 3, - ["sand"] = 3 + ["asphalt"] = default_speed, + ["cobblestone:flattened"] = 10, + ["paving_stones"] = 10, + ["compacted"] = 10, + ["cobblestone"] = 6, + ["unpaved"] = 6, + ["fine_gravel"] = 6, + ["gravel"] = 6, + ["fine_gravel"] = 6, + ["pebbelstone"] = 6, + ["ground"] = 6, + ["dirt"] = 6, + ["earth"] = 6, + ["grass"] = 6, + ["mud"] = 3, + ["sand"] = 3 } -take_minimum_of_speeds = true -obey_oneway = true -obey_bollards = false -use_restrictions = true -ignore_areas = true -- future feature -traffic_signal_penalty = 5 -u_turn_penalty = 20 +take_minimum_of_speeds = true +obey_oneway = true +obey_bollards = false +use_restrictions = true +ignore_areas = true -- future feature +traffic_signal_penalty = 5 +u_turn_penalty = 20 use_turn_restrictions = false -turn_penalty = 60 -turn_bias = 1.4 +turn_penalty = 60 +turn_bias = 1.4 -- End of globals function get_exceptions(vector) - for i,v in ipairs(restriction_exception_tags) do - vector:Add(v) - end + for i,v in ipairs(restriction_exception_tags) do + vector:Add(v) + end end function node_function (node) - local barrier = node.tags:Find ("barrier") - local access = Access.find_access_tag(node, access_tags_hierachy) - local traffic_signal = node.tags:Find("highway") + local barrier = node.tags:Find ("barrier") + local access = Access.find_access_tag(node, access_tags_hierachy) + local traffic_signal = node.tags:Find("highway") - -- flag node if it carries a traffic light - if traffic_signal == "traffic_signals" then - node.traffic_light = true - end + -- flag node if it carries a traffic light + if traffic_signal == "traffic_signals" then + node.traffic_light = true + end - -- parse access and barrier tags - if access and access ~= "" then - if access_tag_blacklist[access] then - node.bollard = true - else - node.bollard = false - end - elseif barrier and barrier ~= "" then - if barrier_whitelist[barrier] then - node.bollard = false - else - node.bollard = true - end - end + -- parse access and barrier tags + if access and access ~= "" then + if access_tag_blacklist[access] then + node.bollard = true + else + node.bollard = false + end + elseif barrier and barrier ~= "" then + if barrier_whitelist[barrier] then + node.bollard = false + else + node.bollard = true + end + end - return 1 + return 1 end function way_function (way) - -- initial routability check, filters out buildings, boundaries, etc - local highway = way.tags:Find("highway") - local route = way.tags:Find("route") - local man_made = way.tags:Find("man_made") - local railway = way.tags:Find("railway") - local amenity = way.tags:Find("amenity") - local public_transport = way.tags:Find("public_transport") - if (not highway or highway == '') and - (not route or route == '') and - (not railway or railway=='') and - (not amenity or amenity=='') and - (not man_made or man_made=='') and - (not public_transport or public_transport=='') - then - return 0 + -- initial routability check, filters out buildings, boundaries, etc + local highway = way.tags:Find("highway") + local route = way.tags:Find("route") + local man_made = way.tags:Find("man_made") + local railway = way.tags:Find("railway") + local amenity = way.tags:Find("amenity") + local public_transport = way.tags:Find("public_transport") + if (not highway or highway == '') and + (not route or route == '') and + (not railway or railway=='') and + (not amenity or amenity=='') and + (not man_made or man_made=='') and + (not public_transport or public_transport=='') + then + return 0 + end + + -- don't route on ways or railways that are still under construction + if highway=='construction' or railway=='construction' then + return 0 + end + + -- access + local access = Access.find_access_tag(way, access_tags_hierachy) + if access_tag_blacklist[access] then + return 0 + end + + + -- other tags + local name = way.tags:Find("name") + local ref = way.tags:Find("ref") + local junction = way.tags:Find("junction") + local maxspeed = parseMaxspeed(way.tags:Find ( "maxspeed") ) + local maxspeed_forward = parseMaxspeed(way.tags:Find( "maxspeed:forward")) + local maxspeed_backward = parseMaxspeed(way.tags:Find( "maxspeed:backward")) + local barrier = way.tags:Find("barrier") + local oneway = way.tags:Find("oneway") + local onewayClass = way.tags:Find("oneway:bicycle") + local cycleway = way.tags:Find("cycleway") + local cycleway_left = way.tags:Find("cycleway:left") + local cycleway_right = way.tags:Find("cycleway:right") + local duration = way.tags:Find("duration") + local service = way.tags:Find("service") + local area = way.tags:Find("area") + local foot = way.tags:Find("foot") + local surface = way.tags:Find("surface") + + -- name + if "" ~= ref and "" ~= name then + way.name = name .. ' / ' .. ref + elseif "" ~= ref then + way.name = ref + elseif "" ~= name then + way.name = name + else + -- if no name exists, use way type + -- this encoding scheme is excepted to be a temporary solution + way.name = "{highway:"..highway.."}" + end + + -- roundabout handling + if "roundabout" == junction then + way.roundabout = true; + end + + -- speed + if route_speeds[route] then + -- ferries (doesn't cover routes tagged using relations) + way.direction = Way.bidirectional + way.ignore_in_grid = true + if durationIsValid(duration) then + way.duration = math.max( 1, parseDuration(duration) ) + else + way.speed = route_speeds[route] end - - -- don't route on ways or railways that are still under construction - if highway=='construction' or railway=='construction' then - return 0 - end - - -- access - local access = Access.find_access_tag(way, access_tags_hierachy) - if access_tag_blacklist[access] then - return 0 - end - - - -- other tags - local name = way.tags:Find("name") - local ref = way.tags:Find("ref") - local junction = way.tags:Find("junction") - local maxspeed = parseMaxspeed(way.tags:Find ( "maxspeed") ) - local maxspeed_forward = parseMaxspeed(way.tags:Find( "maxspeed:forward")) - local maxspeed_backward = parseMaxspeed(way.tags:Find( "maxspeed:backward")) - local barrier = way.tags:Find("barrier") - local oneway = way.tags:Find("oneway") - local onewayClass = way.tags:Find("oneway:bicycle") - local cycleway = way.tags:Find("cycleway") - local cycleway_left = way.tags:Find("cycleway:left") - local cycleway_right = way.tags:Find("cycleway:right") - local duration = way.tags:Find("duration") - local service = way.tags:Find("service") - local area = way.tags:Find("area") - local foot = way.tags:Find("foot") - local surface = way.tags:Find("surface") - - -- name - if "" ~= ref and "" ~= name then - way.name = name .. ' / ' .. ref - elseif "" ~= ref then - way.name = ref - elseif "" ~= name then - way.name = name - else - way.name = "{highway:"..highway.."}" -- if no name exists, use way type - -- this encoding scheme is excepted to be a temporary solution - end - - -- roundabout handling - if "roundabout" == junction then - way.roundabout = true; - end - - -- speed - if route_speeds[route] then - -- ferries (doesn't cover routes tagged using relations) - way.direction = Way.bidirectional - way.ignore_in_grid = true - if durationIsValid(duration) then - way.duration = math.max( 1, parseDuration(duration) ) - else - way.speed = route_speeds[route] - end - elseif railway and platform_speeds[railway] then - -- railway platforms (old tagging scheme) - way.speed = platform_speeds[railway] - elseif platform_speeds[public_transport] then - -- public_transport platforms (new tagging platform) - way.speed = platform_speeds[public_transport] + elseif railway and platform_speeds[railway] then + -- railway platforms (old tagging scheme) + way.speed = platform_speeds[railway] + elseif platform_speeds[public_transport] then + -- public_transport platforms (new tagging platform) + way.speed = platform_speeds[public_transport] elseif railway and railway_speeds[railway] then - -- railways - if access and access_tag_whitelist[access] then - way.speed = railway_speeds[railway] - way.direction = Way.bidirectional - end - elseif amenity and amenity_speeds[amenity] then - -- parking areas - way.speed = amenity_speeds[amenity] - elseif bicycle_speeds[highway] then - -- regular ways - way.speed = bicycle_speeds[highway] - elseif access and access_tag_whitelist[access] then - -- unknown way, but valid access tag - way.speed = default_speed - else - -- biking not allowed, maybe we can push our bike? - -- essentially requires pedestrian profiling, for example foot=no mean we can't push a bike - -- TODO: if we can push, the way should be marked as pedestrion mode, but there's no way to do it yet from lua.. - if foot ~= 'no' then - if pedestrian_speeds[highway] then - -- pedestrian-only ways and areas - way.speed = pedestrian_speeds[highway] - elseif man_made and man_made_speeds[man_made] then - -- man made structures - way.speed = man_made_speeds[man_made] - elseif foot == 'yes' then - way.speed = walking_speed - end - end + -- railways + if access and access_tag_whitelist[access] then + way.speed = railway_speeds[railway] + way.direction = Way.bidirectional end - - -- direction - way.direction = Way.bidirectional - local impliedOneway = false - if junction == "roundabout" or highway == "motorway_link" or highway == "motorway" then - way.direction = Way.oneway - impliedOneway = true - end - - if onewayClass == "yes" or onewayClass == "1" or onewayClass == "true" then - way.direction = Way.oneway - elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then - way.direction = Way.bidirectional - elseif onewayClass == "-1" then - way.direction = Way.opposite - elseif oneway == "no" or oneway == "0" or oneway == "false" then - way.direction = Way.bidirectional - elseif cycleway and string.find(cycleway, "opposite") == 1 then - if impliedOneway then - way.direction = Way.opposite - else - way.direction = Way.bidirectional - end - elseif cycleway_left and cycleway_tags[cycleway_left] and cycleway_right and cycleway_tags[cycleway_right] then - way.direction = Way.bidirectional - elseif cycleway_left and cycleway_tags[cycleway_left] then - if impliedOneway then - way.direction = Way.opposite - else - way.direction = Way.bidirectional - end - elseif cycleway_right and cycleway_tags[cycleway_right] then - if impliedOneway then - way.direction = Way.oneway - else - way.direction = Way.bidirectional - end - elseif oneway == "-1" then - way.direction = Way.opposite - elseif oneway == "yes" or oneway == "1" or oneway == "true" then - way.direction = Way.oneway - end - - -- pushing bikes - if bicycle_speeds[highway] or pedestrian_speeds[highway] then - if foot ~= 'no' then - if junction ~= "roundabout" then - if way.direction == Way.oneway then - way.backward_speed = walking_speed - elseif way.direction == Way.opposite then - way.backward_speed = walking_speed - way.speed = way.speed - end - end - end - if way.backward_speed == way.speed then - -- TODO: no way yet to mark a way as pedestrian mode if forward/backward speeds are equal - way.direction = Way.bidirectional - end + elseif amenity and amenity_speeds[amenity] then + -- parking areas + way.speed = amenity_speeds[amenity] + elseif bicycle_speeds[highway] then + -- regular ways + way.speed = bicycle_speeds[highway] + elseif access and access_tag_whitelist[access] then + -- unknown way, but valid access tag + way.speed = default_speed + else + -- biking not allowed, maybe we can push our bike? + -- essentially requires pedestrian profiling, for example foot=no mean we can't push a bike + -- TODO: if we can push, the way should be marked as pedestrion mode, but there's no way to do it yet from lua.. + if foot ~= 'no' then + if pedestrian_speeds[highway] then + -- pedestrian-only ways and areas + way.speed = pedestrian_speeds[highway] + elseif man_made and man_made_speeds[man_made] then + -- man made structures + way.speed = man_made_speeds[man_made] + elseif foot == 'yes' then + way.speed = walking_speed + end end + end + -- direction + way.direction = Way.bidirectional + local impliedOneway = false + if junction == "roundabout" or highway == "motorway_link" or highway == "motorway" then + way.direction = Way.oneway + impliedOneway = true + end - -- cycleways - if cycleway and cycleway_tags[cycleway] then - way.speed = bicycle_speeds["cycleway"] - elseif cycleway_left and cycleway_tags[cycleway_left] then - way.speed = bicycle_speeds["cycleway"] - elseif cycleway_right and cycleway_tags[cycleway_right] then - way.speed = bicycle_speeds["cycleway"] - end - - -- surfaces - if surface then - surface_speed = surface_speeds[surface] - if surface_speed then - if way.speed > 0 then - way.speed = surface_speed - end - if way.backward_speed > 0 then - way.backward_speed = surface_speed - end - end + if onewayClass == "yes" or onewayClass == "1" or onewayClass == "true" then + way.direction = Way.oneway + elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then + way.direction = Way.bidirectional + elseif onewayClass == "-1" then + way.direction = Way.opposite + elseif oneway == "no" or oneway == "0" or oneway == "false" then + way.direction = Way.bidirectional + elseif cycleway and string.find(cycleway, "opposite") == 1 then + if impliedOneway then + way.direction = Way.opposite + else + way.direction = Way.bidirectional end + elseif cycleway_left and cycleway_tags[cycleway_left] and cycleway_right and cycleway_tags[cycleway_right] then + way.direction = Way.bidirectional + elseif cycleway_left and cycleway_tags[cycleway_left] then + if impliedOneway then + way.direction = Way.opposite + else + way.direction = Way.bidirectional + end + elseif cycleway_right and cycleway_tags[cycleway_right] then + if impliedOneway then + way.direction = Way.oneway + else + way.direction = Way.bidirectional + end + elseif oneway == "-1" then + way.direction = Way.opposite + elseif oneway == "yes" or oneway == "1" or oneway == "true" then + way.direction = Way.oneway + end - -- maxspeed - -- TODO: maxspeed of backward direction - if take_minimum_of_speeds then - if maxspeed and maxspeed>0 then - way.speed = math.min(way.speed, maxspeed) - end - end + -- pushing bikes + if bicycle_speeds[highway] or pedestrian_speeds[highway] then + if foot ~= 'no' then + if junction ~= "roundabout" then + if way.direction == Way.oneway then + way.backward_speed = walking_speed + elseif way.direction == Way.opposite then + way.backward_speed = walking_speed + way.speed = way.speed + end + end + end + if way.backward_speed == way.speed then + -- TODO: no way yet to mark a way as pedestrian mode if forward/backward speeds are equal + way.direction = Way.bidirectional + end + end + + + -- cycleways + if cycleway and cycleway_tags[cycleway] then + way.speed = bicycle_speeds["cycleway"] + elseif cycleway_left and cycleway_tags[cycleway_left] then + way.speed = bicycle_speeds["cycleway"] + elseif cycleway_right and cycleway_tags[cycleway_right] then + way.speed = bicycle_speeds["cycleway"] + end + + -- surfaces + if surface then + surface_speed = surface_speeds[surface] + if surface_speed then + if way.speed > 0 then + way.speed = surface_speed + end + if way.backward_speed > 0 then + way.backward_speed = surface_speed + end + end + end + + -- maxspeed + -- TODO: maxspeed of backward direction + if take_minimum_of_speeds then + if maxspeed and maxspeed>0 then + way.speed = math.min(way.speed, maxspeed) + end + end -- Override speed settings if explicit forward/backward maxspeeds are given - if way.speed > 0 and maxspeed_forward ~= nil and maxspeed_forward > 0 then - if Way.bidirectional == way.direction then - way.backward_speed = way.speed - end - way.speed = maxspeed_forward - end - if maxspeed_backward ~= nil and maxspeed_backward > 0 then - way.backward_speed = maxspeed_backward + if way.speed > 0 and maxspeed_forward ~= nil and maxspeed_forward > 0 then + if Way.bidirectional == way.direction then + way.backward_speed = way.speed end + way.speed = maxspeed_forward + end + if maxspeed_backward ~= nil and maxspeed_backward > 0 then + way.backward_speed = maxspeed_backward + end - - - way.type = 1 - return 1 + way.type = 1 + return 1 end function turn_function (angle) - -- compute turn penalty as angle^2, with a left/right bias - k = turn_penalty/(90.0*90.0) - if angle>=0 then - return angle*angle*k/turn_bias - else - return angle*angle*k*turn_bias - end + -- compute turn penalty as angle^2, with a left/right bias + k = turn_penalty/(90.0*90.0) + if angle>=0 then + return angle*angle*k/turn_bias + else + return angle*angle*k*turn_bias + end end diff --git a/profiles/car.lua b/profiles/car.lua index 36232bd87..05b8e7298 100644 --- a/profiles/car.lua +++ b/profiles/car.lua @@ -1,8 +1,8 @@ -- Begin of globals --require("lib/access") --function temporarily inlined -barrier_whitelist = { ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true, ["entrance"] = true} -access_tag_whitelist = { ["yes"] = true, ["motorcar"] = true, ["motor_vehicle"] = true, ["vehicle"] = true, ["permissive"] = true, ["designated"] = true } +barrier_whitelist = { ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true, ["entrance"] = true } +access_tag_whitelist = { ["yes"] = true, ["motorcar"] = true, ["motor_vehicle"] = true, ["vehicle"] = true, ["permissive"] = true, ["designated"] = true } access_tag_blacklist = { ["no"] = true, ["private"] = true, ["agricultural"] = true, ["forestry"] = true, ["emergency"] = true } access_tag_restricted = { ["destination"] = true, ["delivery"] = true } access_tags = { "motorcar", "motor_vehicle", "vehicle" } @@ -32,13 +32,13 @@ speed_profile = { ["default"] = 10 } -local take_minimum_of_speeds = false -local obey_oneway = true -local obey_bollards = true -local use_turn_restrictions = true -local ignore_areas = true -- future feature -local traffic_signal_penalty = 2 -local u_turn_penalty = 20 +local take_minimum_of_speeds = false +local obey_oneway = true +local obey_bollards = true +local use_turn_restrictions = true +local ignore_areas = true -- future feature +local traffic_signal_penalty = 2 +local u_turn_penalty = 20 local abs = math.abs local min = math.min @@ -58,23 +58,23 @@ local function find_access_tag(source,access_tags_hierachy) end function get_exceptions(vector) - for i,v in ipairs(restriction_exception_tags) do - vector:Add(v) - end + for i,v in ipairs(restriction_exception_tags) do + vector:Add(v) + end end local function parse_maxspeed(source) - if not source then - return 0 - end - local n = tonumber(source:match("%d*")) - if not n then - n = 0 - end - if string.match(source, "mph") or string.match(source, "mp/h") then - n = (n*1609)/1000; - end - return n + if not source then + return 0 + end + local n = tonumber(source:match("%d*")) + if not n then + n = 0 + end + if string.match(source, "mph") or string.match(source, "mp/h") then + n = (n*1609)/1000; + end + return n end function node_function (node) @@ -87,19 +87,19 @@ function node_function (node) end end - -- parse access and barrier tags - if access and access ~= "" then - if access_tag_blacklist[access] then - node.bollard = true - end - elseif node.tags:Holds("barrier") then + -- parse access and barrier tags + if access and access ~= "" then + if access_tag_blacklist[access] then + node.bollard = true + end + elseif node.tags:Holds("barrier") then local barrier = node.tags:Find("barrier") - if barrier_whitelist[barrier] then - return - else - node.bollard = true - end - end + if barrier_whitelist[barrier] then + return + else + node.bollard = true + end + end end function way_function (way) @@ -202,7 +202,7 @@ function way_function (way) elseif "" ~= name then way.name = name -- else --- way.name = highway -- if no name exists, use way type + -- way.name = highway -- if no name exists, use way type end if "roundabout" == junction then @@ -216,22 +216,21 @@ function way_function (way) -- Set access restriction flag if service is allowed under certain restrictions only if service ~= "" and service_tag_restricted[service] then - way.is_access_restricted = true + way.is_access_restricted = true end -- Set direction according to tags on way way.direction = Way.bidirectional if obey_oneway then - if oneway == "-1" then - way.direction = Way.opposite + if oneway == "-1" then + way.direction = Way.opposite elseif oneway == "yes" or - oneway == "1" or - oneway == "true" or - junction == "roundabout" or - (highway == "motorway_link" and oneway ~="no") or - (highway == "motorway" and oneway ~= "no") - then - way.direction = Way.oneway + oneway == "1" or + oneway == "true" or + junction == "roundabout" or + (highway == "motorway_link" and oneway ~="no") or + (highway == "motorway" and oneway ~= "no") then + way.direction = Way.oneway end end @@ -250,16 +249,15 @@ function way_function (way) -- Override general direction settings of there is a specific one for our mode of travel if ignore_in_grid[highway] then - way.ignore_in_grid = true - end - way.type = 1 + way.ignore_in_grid = true + end + way.type = 1 return end -- These are wrappers to parse vectors of nodes and ways and thus to speed up any tracing JIT - function node_vector_function(vector) - for v in vector.nodes do - node_function(v) - end -end + for v in vector.nodes do + node_function(v) + end +end \ No newline at end of file diff --git a/profiles/testbot.lua b/profiles/testbot.lua index 028f8c588..96bf71ef2 100644 --- a/profiles/testbot.lua +++ b/profiles/testbot.lua @@ -2,106 +2,106 @@ -- Moves at fixed, well-known speeds, practical for testing speed and travel times: --- Primary road: 36km/h = 36000m/3600s = 100m/10s --- Secondary road: 18km/h = 18000m/3600s = 100m/20s --- Tertiary road: 12km/h = 12000m/3600s = 100m/30s +-- Primary road: 36km/h = 36000m/3600s = 100m/10s +-- Secondary road: 18km/h = 18000m/3600s = 100m/20s +-- Tertiary road: 12km/h = 12000m/3600s = 100m/30s speed_profile = { - ["primary"] = 36, - ["secondary"] = 18, - ["tertiary"] = 12, - ["default"] = 24 + ["primary"] = 36, + ["secondary"] = 18, + ["tertiary"] = 12, + ["default"] = 24 } -- these settings are read directly by osrm -take_minimum_of_speeds = true -obey_oneway = true -obey_barriers = true -use_turn_restrictions = true -ignore_areas = true -- future feature -traffic_signal_penalty = 7 -- seconds -u_turn_penalty = 20 +take_minimum_of_speeds = true +obey_oneway = true +obey_barriers = true +use_turn_restrictions = true +ignore_areas = true -- future feature +traffic_signal_penalty = 7 -- seconds +u_turn_penalty = 20 function limit_speed(speed, limits) - -- don't use ipairs(), since it stops at the first nil value - for i=1, #limits do - limit = limits[i] - if limit ~= nil and limit > 0 then - if limit < speed then - return limit -- stop at first speedlimit that's smaller than speed - end - end + -- don't use ipairs(), since it stops at the first nil value + for i=1, #limits do + limit = limits[i] + if limit ~= nil and limit > 0 then + if limit < speed then + return limit -- stop at first speedlimit that's smaller than speed + end end - return speed + end + return speed end function node_function (node) - local traffic_signal = node.tags:Find("highway") + local traffic_signal = node.tags:Find("highway") - if traffic_signal == "traffic_signals" then - node.traffic_light = true; - -- TODO: a way to set the penalty value - end - return 1 + if traffic_signal == "traffic_signals" then + node.traffic_light = true; + -- TODO: a way to set the penalty value + end + return 1 end function way_function (way) - local highway = way.tags:Find("highway") - local name = way.tags:Find("name") - local oneway = way.tags:Find("oneway") - local route = way.tags:Find("route") - local duration = way.tags:Find("duration") - local maxspeed = tonumber(way.tags:Find ( "maxspeed")) - local maxspeed_forward = tonumber(way.tags:Find( "maxspeed:forward")) - local maxspeed_backward = tonumber(way.tags:Find( "maxspeed:backward")) + local highway = way.tags:Find("highway") + local name = way.tags:Find("name") + local oneway = way.tags:Find("oneway") + local route = way.tags:Find("route") + local duration = way.tags:Find("duration") + local maxspeed = tonumber(way.tags:Find ( "maxspeed")) + local maxspeed_forward = tonumber(way.tags:Find( "maxspeed:forward")) + local maxspeed_backward = tonumber(way.tags:Find( "maxspeed:backward")) - way.name = name + way.name = name - if route ~= nil and durationIsValid(duration) then - way.duration = math.max( 1, parseDuration(duration) ) - else - local speed_forw = speed_profile[highway] or speed_profile['default'] - local speed_back = speed_forw + if route ~= nil and durationIsValid(duration) then + way.duration = math.max( 1, parseDuration(duration) ) + else + local speed_forw = speed_profile[highway] or speed_profile['default'] + local speed_back = speed_forw - if highway == "river" then - local temp_speed = speed_forw; - speed_forw = temp_speed*1.5 - speed_back = temp_speed/1.5 - end + if highway == "river" then + local temp_speed = speed_forw; + speed_forw = temp_speed*1.5 + speed_back = temp_speed/1.5 + end - if maxspeed_forward ~= nil and maxspeed_forward > 0 then - speed_forw = maxspeed_forward - else - if maxspeed ~= nil and maxspeed > 0 and speed_forw > maxspeed then - speed_forw = maxspeed - end - end + if maxspeed_forward ~= nil and maxspeed_forward > 0 then + speed_forw = maxspeed_forward + else + if maxspeed ~= nil and maxspeed > 0 and speed_forw > maxspeed then + speed_forw = maxspeed + end + end - if maxspeed_backward ~= nil and maxspeed_backward > 0 then - speed_back = maxspeed_backward - else - if maxspeed ~=nil and maxspeed > 0 and speed_back > maxspeed then - speed_back = maxspeed - end - end + if maxspeed_backward ~= nil and maxspeed_backward > 0 then + speed_back = maxspeed_backward + else + if maxspeed ~=nil and maxspeed > 0 and speed_back > maxspeed then + speed_back = maxspeed + end + end - way.speed = speed_forw - if speed_back ~= way_forw then - way.backward_speed = speed_back - end - end + way.speed = speed_forw + if speed_back ~= way_forw then + way.backward_speed = speed_back + end + end - if oneway == "no" or oneway == "0" or oneway == "false" then - way.direction = Way.bidirectional - elseif oneway == "-1" then - way.direction = Way.opposite - elseif oneway == "yes" or oneway == "1" or oneway == "true" then - way.direction = Way.oneway - else - way.direction = Way.bidirectional - end + if oneway == "no" or oneway == "0" or oneway == "false" then + way.direction = Way.bidirectional + elseif oneway == "-1" then + way.direction = Way.opposite + elseif oneway == "yes" or oneway == "1" or oneway == "true" then + way.direction = Way.oneway + else + way.direction = Way.bidirectional + end - way.type = 1 - return 1 + way.type = 1 + return 1 end