Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 247a7488b8 | |||
| 1806198971 | |||
| 375331b80c | |||
| 8fdbe965cc |
+6
-1
@@ -1,4 +1,9 @@
|
|||||||
# 5.3.0
|
# 5.3.0 RC2
|
||||||
|
Changes from 5.3.0-rc.1
|
||||||
|
- Bugfixes
|
||||||
|
- Fixes invalid checks in the lane-extraction part of the car profile
|
||||||
|
|
||||||
|
# 5.3.0 RC1
|
||||||
- API
|
- API
|
||||||
- Introduces new `TurnType` in the form of `use lane`. The type indicates that you have to stick to a lane without turning
|
- Introduces new `TurnType` in the form of `use lane`. The type indicates that you have to stick to a lane without turning
|
||||||
- Introduces lanes to the route response. The lane data contains both the markings at the intersection and a flag indicating their involvement in the turn
|
- Introduces lanes to the route response. The lane data contains both the markings at the intersection and a flag indicating their involvement in the turn
|
||||||
|
|||||||
+33
-33
@@ -357,7 +357,7 @@ Three input coordinates, `geometry=geojson`, `steps=false`:
|
|||||||
{
|
{
|
||||||
"distance": 90.0,
|
"distance": 90.0,
|
||||||
"duration": 300.0,
|
"duration": 300.0,
|
||||||
"geometry": {"type": "LineString", "coordinates": [[120., 10.], [120.1, 10.], [120.2, 10.], [120.3, 10.]]},
|
"geometry": {"type": "LineString", "coordinates": [[120.0, 10.0], [120.1, 10.0], [120.2, 10.0], [120.3, 10.0]]},
|
||||||
"legs": [
|
"legs": [
|
||||||
{
|
{
|
||||||
"distance": 30.0,
|
"distance": 30.0,
|
||||||
@@ -410,7 +410,7 @@ With `steps=false` and `annotations=true`:
|
|||||||
{
|
{
|
||||||
"distance": 30.0,
|
"distance": 30.0,
|
||||||
"duration": 100.0,
|
"duration": 100.0,
|
||||||
"steps": []
|
"steps": [],
|
||||||
"annotation": {
|
"annotation": {
|
||||||
"distance": [5,5,10,5,5],
|
"distance": [5,5,10,5,5],
|
||||||
"duration": [15,15,40,15,15],
|
"duration": [15,15,40,15,15],
|
||||||
@@ -486,23 +486,23 @@ step.
|
|||||||
- `type` A string indicating the type of maneuver. **new identifiers might be introduced without API change**
|
- `type` A string indicating the type of maneuver. **new identifiers might be introduced without API change**
|
||||||
Types unknown to the client should be handled like the `turn` type, the existance of correct `modifier` values is guranteed.
|
Types unknown to the client should be handled like the `turn` type, the existance of correct `modifier` values is guranteed.
|
||||||
|
|
||||||
| `type` | Description |
|
| `type` | Description |
|
||||||
|-------------------|--------------------------------------------------------------|
|
|------------------|--------------------------------------------------------------|
|
||||||
| turn | a basic turn into direction of the `modifier` |
|
| `turn` | a basic turn into direction of the `modifier` |
|
||||||
| new name | no turn is taken/possible, but the road name changes. The road can take a turn itself, following `modifier`. |
|
| `new name` | no turn is taken/possible, but the road name changes. The road can take a turn itself, following `modifier`. |
|
||||||
| depart | indicates the departure of the leg |
|
| `depart` | indicates the departure of the leg |
|
||||||
| arrive | indicates the destination of the leg |
|
| `arrive` | indicates the destination of the leg |
|
||||||
| merge | merge onto a street (e.g. getting on the highway from a ramp, the `modifier specifies the direction of the merge`) |
|
| `merge` | merge onto a street (e.g. getting on the highway from a ramp, the `modifier specifies the direction of the merge`) |
|
||||||
| ramp | **Deprecated**. Replaced by `on_ramp` and `off_ramp`. |
|
| `ramp` | **Deprecated**. Replaced by `on_ramp` and `off_ramp`. |
|
||||||
| on ramp | take a ramp to enter a highway (direction given my `modifier`) |
|
| `on ramp` | take a ramp to enter a highway (direction given my `modifier`) |
|
||||||
| off ramp | take a ramp to exit a highway (direction given my `modifier`) |
|
| `off ramp` | take a ramp to exit a highway (direction given my `modifier`) |
|
||||||
| fork | take the left/right side at a fork depending on `modifier` |
|
| `fork` | take the left/right side at a fork depending on `modifier` |
|
||||||
| end of road | road ends in a T intersection turn in direction of `modifier`|
|
| `end of road` | road ends in a T intersection turn in direction of `modifier`|
|
||||||
| continue | Turn in direction of `modifier` to stay on the same road |
|
| `continue` | Turn in direction of `modifier` to stay on the same road |
|
||||||
| roundabout | traverse roundabout, has additional field `exit` with NR if the roundabout is left. `the modifier specifies the direction of entering the roundabout` |
|
| `roundabout` | traverse roundabout, has additional field `exit` with NR if the roundabout is left. `the modifier specifies the direction of entering the roundabout` |
|
||||||
| rotary | a larger version of a roundabout, can offer `rotary_name` in addition to the `exit` parameter. |
|
| `rotary` | a larger version of a roundabout, can offer `rotary_name` in addition to the `exit` parameter. |
|
||||||
| roundabout turn | Describes a turn at a small roundabout that should be treated as normal turn. The `modifier` indicates the turn direciton. Example instruction: `At the roundabout turn left`. |
|
| `roundabout turn`| Describes a turn at a small roundabout that should be treated as normal turn. The `modifier` indicates the turn direciton. Example instruction: `At the roundabout turn left`. |
|
||||||
| notification | not an actual turn but a change in the driving conditions. For example the travel mode. If the road takes a turn itself, the `modifier` describes the direction |
|
| `notification` | not an actual turn but a change in the driving conditions. For example the travel mode. If the road takes a turn itself, the `modifier` describes the direction |
|
||||||
|
|
||||||
Please note that even though there are `new name` and `notification` instructions, the `mode` and `name` can change
|
Please note that even though there are `new name` and `notification` instructions, the `mode` and `name` can change
|
||||||
between all instructions. They only offer a fallback in case nothing else is to report.
|
between all instructions. They only offer a fallback in case nothing else is to report.
|
||||||
@@ -511,14 +511,14 @@ step.
|
|||||||
|
|
||||||
| `modifier` | Description |
|
| `modifier` | Description |
|
||||||
|-------------------|-------------------------------------------|
|
|-------------------|-------------------------------------------|
|
||||||
| uturn | indicates reversal of direction |
|
| `uturn` | indicates reversal of direction |
|
||||||
| sharp right | a sharp right turn |
|
| `sharp right` | a sharp right turn |
|
||||||
| right | a normal turn to the right |
|
| `right` | a normal turn to the right |
|
||||||
| slight right | a slight turn to the right |
|
| `slight right` | a slight turn to the right |
|
||||||
| straight | no relevant change in direction |
|
| `straight` | no relevant change in direction |
|
||||||
| slight left | a slight turn to the left |
|
| `slight left` | a slight turn to the left |
|
||||||
| left | a normal turn to the left |
|
| `left` | a normal turn to the left |
|
||||||
| sharp left | a sharp turn to the left |
|
| `sharp left` | a sharp turn to the left |
|
||||||
|
|
||||||
The list of turns without a modifier is limited to: `depart/arrive`. If the source/target location is close enough to the `depart/arrive` location, no modifier will be given.
|
The list of turns without a modifier is limited to: `depart/arrive`. If the source/target location is close enough to the `depart/arrive` location, no modifier will be given.
|
||||||
|
|
||||||
@@ -542,7 +542,7 @@ New properties (potentially depending on `type`) may be introduced in the future
|
|||||||
|
|
||||||
### Lane
|
### Lane
|
||||||
|
|
||||||
A lane give a representation of turn lane at the corresponding turn location.
|
A `Lane` represents a turn lane at the corresponding turn location.
|
||||||
|
|
||||||
#### Properties
|
#### Properties
|
||||||
|
|
||||||
@@ -551,14 +551,14 @@ A lane give a representation of turn lane at the corresponding turn location.
|
|||||||
| `value` | Description |
|
| `value` | Description |
|
||||||
|------------------------|---------------------------------------------------------------------------------------------------------------------------|
|
|------------------------|---------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `none` | No dedicated indication is shown. |
|
| `none` | No dedicated indication is shown. |
|
||||||
|
| `uturn` | An indication signaling the possibility to reverse (i.e. fully bend arrow). |
|
||||||
| `sharp right` | An indication indicating a sharp right turn (i.e. strongly bend arrow). |
|
| `sharp right` | An indication indicating a sharp right turn (i.e. strongly bend arrow). |
|
||||||
| `right` | An indication indicating a right turn (i.e. bend arrow). |
|
| `right` | An indication indicating a right turn (i.e. bend arrow). |
|
||||||
| `sharp right` | An indication indicating a slight right turn (i.e. slightly bend arrow). |
|
| `slight right` | An indication indicating a slight right turn (i.e. slightly bend arrow). |
|
||||||
| `straight` | No dedicated indication is shown (i.e. straight arrow). |
|
| `straight` | No dedicated indication is shown (i.e. straight arrow). |
|
||||||
| `sharp left` | An indication indicating a sharp left turn (i.e. strongly bend arrow). |
|
| `slight left` | An indication indicating a slight left turn (i.e. slightly bend arrow). |
|
||||||
| `left` | An indication indicating a left turn (i.e. bend arrow). |
|
| `left` | An indication indicating a left turn (i.e. bend arrow). |
|
||||||
| `sharp left` | An indication indicating a slight left turn (i.e. slightly bend arrow). |
|
| `sharp left` | An indication indicating a sharp left turn (i.e. strongly bend arrow). |
|
||||||
| `uturn` | An indication signaling the possibility to reverse (i.e. fully bend arrow). |
|
|
||||||
|
|
||||||
- `valid`: a boolean flag indicating whether the lane is a valid choice in the current maneuver
|
- `valid`: a boolean flag indicating whether the lane is a valid choice in the current maneuver
|
||||||
|
|
||||||
@@ -566,7 +566,7 @@ A lane give a representation of turn lane at the corresponding turn location.
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"indication": ["left", "straight"],
|
"indications": ["left", "straight"],
|
||||||
"valid": "false"
|
"valid": "false"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -107,6 +107,24 @@ Feature: Turn Lane Guidance
|
|||||||
| a,d | road,turn,turn | depart,turn right,arrive | ,straight:false right:true, |
|
| a,d | road,turn,turn | depart,turn right,arrive | ,straight:false right:true, |
|
||||||
| a,c | road,road,road | depart,use lane straight,arrive | ,straight:true right:false, |
|
| a,c | road,road,road | depart,use lane straight,arrive | ,straight:true right:false, |
|
||||||
|
|
||||||
|
@PROFILE @LANES
|
||||||
|
Scenario: Turn with Bus-Lane but without lanes
|
||||||
|
Given the node map
|
||||||
|
| a | | b | | c |
|
||||||
|
| | | | | |
|
||||||
|
| | | d | | |
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | name | lanes:psv |
|
||||||
|
| ab | road | 1 |
|
||||||
|
| bc | road | yes |
|
||||||
|
| bd | turn | |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| waypoints | route | turns |
|
||||||
|
| a,d | road,turn,turn | depart,turn right,arrive |
|
||||||
|
| a,c | road,road | depart,arrive |
|
||||||
|
|
||||||
#turn lanes are often drawn at the incoming road, even though the actual turn requires crossing the intersection first
|
#turn lanes are often drawn at the incoming road, even though the actual turn requires crossing the intersection first
|
||||||
@todo @WORKAROUND-FIXME @bug
|
@todo @WORKAROUND-FIXME @bug
|
||||||
Scenario: Turn Lanes at Segregated Road
|
Scenario: Turn Lanes at Segregated Road
|
||||||
|
|||||||
+13
-7
@@ -189,7 +189,7 @@ local function getPSVCounts(way)
|
|||||||
if( psv_backward and psv_backward ~= "" ) then
|
if( psv_backward and psv_backward ~= "" ) then
|
||||||
bw = tonumber(psv_backward);
|
bw = tonumber(psv_backward);
|
||||||
if( bw == nil ) then
|
if( bw == nil ) then
|
||||||
fw = 0
|
bw = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return fw, bw
|
return fw, bw
|
||||||
@@ -206,10 +206,16 @@ local function getTurnLanes(way)
|
|||||||
local turn_lanes_bw = way:get_value_by_key("turn:lanes:backward")
|
local turn_lanes_bw = way:get_value_by_key("turn:lanes:backward")
|
||||||
|
|
||||||
if( fw_psv ~= 0 or bw_psv ~= 0 ) then
|
if( fw_psv ~= 0 or bw_psv ~= 0 ) then
|
||||||
turn_lanes = trimLaneString(turn_lanes, bw_psv, fw_psv )
|
if turn_lanes and turn_lanes ~= "" then
|
||||||
turn_lanes_fw = trimLaneString(turn_lanes_fw, bw_psv, fw_psv )
|
turn_lanes = trimLaneString(turn_lanes, bw_psv, fw_psv )
|
||||||
|
end
|
||||||
|
if turn_lanes_fw and turn_lanes_fw ~= "" then
|
||||||
|
turn_lanes_fw = trimLaneString(turn_lanes_fw, bw_psv, fw_psv )
|
||||||
|
end
|
||||||
--backwards turn lanes need to treat bw_psv as fw_psv and vice versa
|
--backwards turn lanes need to treat bw_psv as fw_psv and vice versa
|
||||||
turn_lanes_bw = trimLaneString(turn_lanes_bw, fw_psv, bw_psv )
|
if turn_lanes_bw and turn_lanes_bw ~= "" then
|
||||||
|
turn_lanes_bw = trimLaneString(turn_lanes_bw, fw_psv, bw_psv )
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return turn_lanes, turn_lanes_fw, turn_lanes_bw
|
return turn_lanes, turn_lanes_fw, turn_lanes_bw
|
||||||
@@ -427,15 +433,15 @@ function way_function (way, result)
|
|||||||
local turn_lanes_backward = ""
|
local turn_lanes_backward = ""
|
||||||
|
|
||||||
turn_lanes, turn_lanes_forward, turn_lanes_backward = getTurnLanes(way)
|
turn_lanes, turn_lanes_forward, turn_lanes_backward = getTurnLanes(way)
|
||||||
if( turn_lanes ~= "" ) then
|
if turn_lanes and turn_lanes ~= "" then
|
||||||
result.turn_lanes_forward = turn_lanes;
|
result.turn_lanes_forward = turn_lanes;
|
||||||
result.turn_lanes_backward = turn_lanes;
|
result.turn_lanes_backward = turn_lanes;
|
||||||
else
|
else
|
||||||
if( turn_lanes_forward ~= "" ) then
|
if turn_lanes_forward and turn_lanes_forward ~= "" then
|
||||||
result.turn_lanes_forward = turn_lanes_forward;
|
result.turn_lanes_forward = turn_lanes_forward;
|
||||||
end
|
end
|
||||||
|
|
||||||
if( turn_lanes_backward ~= "" ) then
|
if turn_lanes_backward and turn_lanes_backward ~= "" then
|
||||||
result.turn_lanes_backward = turn_lanes_backward;
|
result.turn_lanes_backward = turn_lanes_backward;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user