Take stop signs into account during routing
This commit is contained in:
parent
be1b86657c
commit
b887e72d0b
@ -1,7 +1,6 @@
|
||||
@routing @testbot @turn_function
|
||||
Feature: Turn Function Information
|
||||
|
||||
// TODO
|
||||
Background:
|
||||
Given the profile file
|
||||
"""
|
||||
|
@ -11,14 +11,8 @@ namespace osrm
|
||||
namespace extractor
|
||||
{
|
||||
|
||||
// Stop Signs tagged on nodes can be present or not. In addition Stop Signs have
|
||||
// an optional way direction they apply to. If the direction is unknown from the
|
||||
// data we have to compute by checking the distance to the next intersection.
|
||||
//
|
||||
// Impl. detail: namespace + enum instead of enum class to make Luabind happy
|
||||
|
||||
// The traffic light annotation is extracted from node tags.
|
||||
// The directions in which the traffic light applies are relative to the way containing the node.
|
||||
// The direction annotation is extracted from node tags.
|
||||
// The directions in which traffic flow object applies are relative to the way containing the node.
|
||||
enum class TrafficFlowControlNodeDirection : std::uint8_t
|
||||
{
|
||||
NONE = 0,
|
||||
|
@ -1,21 +1,9 @@
|
||||
local GiveWay = {}
|
||||
|
||||
TrafficFlowControlNode = require("lib/traffic_flow_control_node")
|
||||
|
||||
function GiveWay.get_value(node)
|
||||
local tag = node:get_value_by_key("highway")
|
||||
if "give_way" == tag then
|
||||
local direction = node:get_value_by_key("direction")
|
||||
if direction then
|
||||
if "forward" == direction then
|
||||
return traffic_flow_control_direction.direction_forward
|
||||
end
|
||||
if "backward" == direction then
|
||||
return traffic_flow_control_direction.direction_reverse
|
||||
end
|
||||
end
|
||||
return traffic_flow_control_direction.direction_all
|
||||
end
|
||||
return traffic_flow_control_direction.none
|
||||
return TrafficFlowControlNode.get_value(node, "give_way")
|
||||
end
|
||||
|
||||
return GiveWay
|
||||
|
||||
|
@ -1,20 +1,9 @@
|
||||
local StopSign = {}
|
||||
|
||||
TrafficFlowControlNode = require("lib/traffic_flow_control_node")
|
||||
|
||||
function StopSign.get_value(node)
|
||||
local tag = node:get_value_by_key("highway")
|
||||
if "stop" == tag then
|
||||
local direction = node:get_value_by_key("direction")
|
||||
if direction then
|
||||
if "forward" == direction then
|
||||
return traffic_flow_control_direction.direction_forward
|
||||
end
|
||||
if "backward" == direction then
|
||||
return traffic_flow_control_direction.direction_reverse
|
||||
end
|
||||
end
|
||||
return traffic_flow_control_direction.direction_all
|
||||
end
|
||||
return traffic_flow_control_direction.none
|
||||
return TrafficFlowControlNode.get_value(node, "stop")
|
||||
end
|
||||
|
||||
return StopSign
|
||||
|
21
profiles/lib/traffic_flow_control_node.lua
Normal file
21
profiles/lib/traffic_flow_control_node.lua
Normal file
@ -0,0 +1,21 @@
|
||||
local TrafficFlowControlNode = {}
|
||||
|
||||
function TrafficFlowControlNode.get_value(node, tag_name)
|
||||
local tag = node:get_value_by_key("highway")
|
||||
if tag_name == tag then
|
||||
local direction = node:get_value_by_key("direction")
|
||||
if direction then
|
||||
if "forward" == direction then
|
||||
return traffic_flow_control_direction.direction_forward
|
||||
end
|
||||
if "backward" == direction then
|
||||
return traffic_flow_control_direction.direction_reverse
|
||||
end
|
||||
end
|
||||
return traffic_flow_control_direction.direction_all
|
||||
end
|
||||
return traffic_flow_control_direction.none
|
||||
end
|
||||
|
||||
return TrafficFlowControlNode
|
||||
|
Loading…
Reference in New Issue
Block a user