Merge branch 'develop' of https://github.com/DennisOSRM/Project-OSRM into develop

This commit is contained in:
DennisOSRM 2012-11-12 11:01:03 +01:00
commit a82c9d55b3
3 changed files with 176 additions and 2 deletions

View File

@ -4,7 +4,7 @@ Feature: Bike - Handle ferry routes
Background:
Given the speedprofile "bicycle"
Scenario: Bike - Use a ferry route
Scenario: Bike - Ferry route
Given the node map
| a | b | c | | |
| | | d | | |
@ -27,4 +27,109 @@ Feature: Bike - Handle ferry routes
| c | f | cde,efg |
| c | g | cde,efg |
Scenario: Bike - Ferry duration, single node
Given the node map
| a | b | c | d |
| | | e | f |
| | | g | h |
| | | i | j |
And the ways
| nodes | highway | route | bicycle | duration |
| ab | primary | | | |
| cd | primary | | | |
| ef | primary | | | |
| gh | primary | | | |
| ij | primary | | | |
| bc | | ferry | yes | 0:01 |
| be | | ferry | yes | 0:10 |
| bg | | ferry | yes | 1:00 |
| bi | | ferry | yes | 10:00 |
Scenario: Bike - Ferry duration, multiple nodes
Given the node map
| x | | | | | y |
| | a | b | c | d | |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yd | primary | | | |
| abcd | | ferry | yes | 1:00 |
When I route I should get
| from | to | route | time |
| a | d | abcd | 3600s +-1 |
| d | a | abcd | 3600s +-1 |
Scenario: Bike - Ferry duration, connected routes
Given the node map
| x | | | | | | | | y |
| | a | b | c | d | e | f | g | |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yg | primary | | | |
| abcd | | ferry | yes | 0:30 |
| defg | | ferry | yes | 0:30 |
When I route I should get
| from | to | route | time |
| a | g | abcd,defg | 3600s +-1 |
| g | a | defg,abcd | 3600s +-1 |
Scenario: Bike - Prefer road when faster than ferry
Given the node map
| x | a | b | c | |
| | | | | d |
| y | g | f | e | |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yg | primary | | | |
| xy | primary | | | |
| abcd | | ferry | yes | 0:01 |
| defg | | ferry | yes | 0:01 |
When I route I should get
| from | to | route | time |
| a | g | xa,xy,yg | 60s +-25% |
| g | a | yg,xy,xa | 60s +-25% |
Scenario: Bike - Long winding ferry route
Given the node map
| x | | b | | d | | f | | y |
| | a | | c | | e | | g | |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yg | primary | | | |
| abcdefg | | ferry | yes | 6:30 |
When I route I should get
| from | to | route | time |
| a | g | abcdefg | 23400s +-1 |
| g | a | abcdefg | 23400s +-1 |
Scenario: Bike - Ferry duration, individual parts
Given the node map
| x | y | | z | | | v |
| a | b | | c | | | d |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yb | primary | | | |
| zc | primary | | | |
| vd | primary | | | |
| abcd | | ferry | yes | 1:00 |
When I route I should get
| from | to | route | time |
| a | d | abcd | 3600s +-1 |
| a | b | abcd | 600s +-1 |
| b | c | abcd | 1200s +-1 |
| c | d | abcd | 1800s +-1 |

View File

@ -0,0 +1,60 @@
@routing @testbot @ferry
Feature: Testbot - Handle ferry routes
Background:
Given the speedprofile "testbot"
Scenario: Testbot - Ferry duration, single node
Given the node map
| a | b | c | d |
| | | e | f |
| | | g | h |
| | | i | j |
And the ways
| nodes | highway | route | bicycle | duration |
| ab | primary | | | |
| cd | primary | | | |
| ef | primary | | | |
| gh | primary | | | |
| ij | primary | | | |
| bc | | ferry | yes | 0:01 |
| be | | ferry | yes | 0:10 |
| bg | | ferry | yes | 1:00 |
| bi | | ferry | yes | 10:00 |
Scenario: Testbot - Ferry duration, multiple nodes
Given the node map
| x | | | | | y |
| | a | b | c | d | |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yd | primary | | | |
| abcd | | ferry | yes | 1:00 |
When I route I should get
| from | to | route | time |
| a | d | abcd | 3600s +-1 |
| d | a | abcd | 3600s +-1 |
Scenario: Bike - Ferry duration, individual parts
Given the node map
| x | y | | z | | | v |
| a | b | | c | | | d |
And the ways
| nodes | highway | route | bicycle | duration |
| xa | primary | | | |
| yb | primary | | | |
| zc | primary | | | |
| vd | primary | | | |
| abcd | | ferry | yes | 1:00 |
When I route I should get
| from | to | route | time |
| a | d | abcd | 3600s +-1 |
| a | b | abcd | 600s +-1 |
| b | c | abcd | 1200s +-1 |
| c | d | abcd | 1800s +-1 |

View File

@ -43,10 +43,19 @@ function way_function (way, numberOfNodesInWay)
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")
way.name = name
way.speed = speed_profile[highway] or speed_profile['default']
if route ~= nil and durationIsValid(duration) then
way.ignore_in_grid = true
way.speed = math.max( 1, parseDuration(duration) / math.max(1, numberOfNodesInWay-1) )
way.is_duration_set = true
else
way.speed = speed_profile[highway] or speed_profile['default']
end
if oneway == "no" or oneway == "0" or oneway == "false" then
way.direction = Way.bidirectional
elseif oneway == "-1" then