Take stop signs into account during routing
This commit is contained in:
parent
be1b86657c
commit
b887e72d0b
@ -1,7 +1,6 @@
|
|||||||
@routing @testbot @turn_function
|
@routing @testbot @turn_function
|
||||||
Feature: Turn Function Information
|
Feature: Turn Function Information
|
||||||
|
|
||||||
// TODO
|
|
||||||
Background:
|
Background:
|
||||||
Given the profile file
|
Given the profile file
|
||||||
"""
|
"""
|
||||||
|
@ -11,14 +11,8 @@ namespace osrm
|
|||||||
namespace extractor
|
namespace extractor
|
||||||
{
|
{
|
||||||
|
|
||||||
// Stop Signs tagged on nodes can be present or not. In addition Stop Signs have
|
// The direction annotation is extracted from node tags.
|
||||||
// an optional way direction they apply to. If the direction is unknown from the
|
// The directions in which traffic flow object applies are relative to the way containing the node.
|
||||||
// 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.
|
|
||||||
enum class TrafficFlowControlNodeDirection : std::uint8_t
|
enum class TrafficFlowControlNodeDirection : std::uint8_t
|
||||||
{
|
{
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
|
@ -1,21 +1,9 @@
|
|||||||
local GiveWay = {}
|
local GiveWay = {}
|
||||||
|
|
||||||
|
TrafficFlowControlNode = require("lib/traffic_flow_control_node")
|
||||||
|
|
||||||
function GiveWay.get_value(node)
|
function GiveWay.get_value(node)
|
||||||
local tag = node:get_value_by_key("highway")
|
return TrafficFlowControlNode.get_value(node, "give_way")
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return GiveWay
|
return GiveWay
|
||||||
|
|
||||||
|
@ -1,20 +1,9 @@
|
|||||||
local StopSign = {}
|
local StopSign = {}
|
||||||
|
|
||||||
|
TrafficFlowControlNode = require("lib/traffic_flow_control_node")
|
||||||
|
|
||||||
function StopSign.get_value(node)
|
function StopSign.get_value(node)
|
||||||
local tag = node:get_value_by_key("highway")
|
return TrafficFlowControlNode.get_value(node, "stop")
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return StopSign
|
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