Expose driving_side as a property on RouteStep

This commit is contained in:
Daniel Patterson
2017-10-31 23:51:11 -04:00
parent 5b79640b44
commit 5b58445535
14 changed files with 1811 additions and 31 deletions
+20 -20
View File
@@ -4,7 +4,7 @@ Feature: Testbot - side bias
Scenario: Left-hand bias
Given the profile file "car" initialized with
"""
profile.left_hand_driving = true
profile.properties.left_hand_driving = true
profile.turn_bias = 1.075
"""
And the node map
@@ -20,14 +20,14 @@ Feature: Testbot - side bias
| bd |
When I route I should get
| from | to | route | time |
| d | a | bd,ab,ab | 24s +-1 |
| d | c | bd,bc,bc | 27s +-1 |
| from | to | route | time | driving_side |
| d | a | bd,ab,ab | 24s +-1 | left,left,left |
| d | c | bd,bc,bc | 27s +-1 | left,left,left |
Scenario: Right-hand bias
Given the profile file "car" initialized with
"""
profile.left_hand_driving = true
profile.properties.left_hand_driving = true
profile.turn_bias = 1 / 1.075
"""
And the node map
@@ -43,14 +43,14 @@ Feature: Testbot - side bias
| bd |
When I route I should get
| from | to | route | time | # |
| d | a | bd,ab,ab | 27s +-1 | should be inverse of left hand bias |
| d | c | bd,bc,bc | 24s +-1 | |
| from | to | route | time | driving_side | # |
| d | a | bd,ab,ab | 27s +-1 | left,left,left | should be inverse of left hand bias |
| d | c | bd,bc,bc | 24s +-1 | left,left,left | |
Scenario: Roundabout exit counting for left sided driving
Given the profile file "testbot" initialized with
Given the profile file "car" initialized with
"""
profile.left_hand_driving = true
profile.properties.left_hand_driving = true
"""
And a grid size of 10 meters
And the node map
@@ -70,10 +70,10 @@ Feature: Testbot - side bias
| bcegb | roundabout |
When I route I should get
| waypoints | route | turns |
| a,d | ab,cd,cd | depart,roundabout turn left exit-1,arrive |
| a,f | ab,ef,ef | depart,roundabout turn straight exit-2,arrive |
| a,h | ab,gh,gh | depart,roundabout turn right exit-3,arrive |
| waypoints | route | driving_side | turns |
| a,d | ab,cd,cd | left,left,left | depart,roundabout turn left exit-1,arrive |
| a,f | ab,ef,ef | left,left,left | depart,roundabout turn straight exit-2,arrive |
| a,h | ab,gh,gh | left,left,left | depart,roundabout turn right exit-3,arrive |
Scenario: Left-hand bias via location-dependent tags
@@ -92,9 +92,9 @@ Feature: Testbot - side bias
And the extract extra arguments "--location-dependent-data test/data/regions/null-island.geojson"
When I route I should get
| from | to | route | time |
| d | a | bd,ab,ab | 24s +-1 |
| d | c | bd,bc,bc | 27s +-1 |
| from | to | route | driving_side | time |
| d | a | bd,ab,ab | left,left,left | 24s +-1 |
| d | c | bd,bc,bc | left,left,left | 27s +-1 |
Scenario: Left-hand bias via OSM tags
@@ -113,6 +113,6 @@ Feature: Testbot - side bias
And the extract extra arguments "--location-dependent-data test/data/regions/null-island.geojson"
When I route I should get
| from | to | route | time |
| d | a | bd,ab,ab | 27s +-1 |
| d | c | bd,bc,bc | 24s +-1 |
| from | to | route | driving_side | time |
| d | a | bd,ab,ab | right,right,right | 27s +-1 |
| d | c | bd,bc,bc | right,right,right | 24s +-1 |
@@ -5,7 +5,7 @@ Feature: Basic Roundabout
Given a grid size of 10 meters
Given the profile file "car" initialized with
"""
profile.left_hand_driving = true
profile.properties.left_hand_driving = true
"""
Scenario: Roundabout exit counting for left sided driving
+4
View File
@@ -267,6 +267,10 @@ module.exports = function () {
return this.extractInstructionList(instructions, s => s.mode);
};
this.drivingSideList = (instructions) => {
return this.extractInstructionList(instructions, s => s.driving_side);
};
this.classesList = (instructions) => {
return this.extractInstructionList(instructions, s => '[' + s.intersections.map(i => '(' + (i.classes ? i.classes.join(',') : '') + ')').join(',') + ']');
};
+7 -1
View File
@@ -35,7 +35,8 @@ module.exports = function () {
if (err) return cb(err);
if (body && body.length) {
let destinations, exits, pronunciations, instructions, refs, bearings, turns, modes, times, classes,
distances, summary, intersections, lanes, locations, annotation, weight_name, weights, approaches;
distances, summary, intersections, lanes, locations, annotation, weight_name, weights, approaches,
driving_sides;
let json = JSON.parse(body);
@@ -53,6 +54,7 @@ module.exports = function () {
turns = this.turnList(json.routes[0]);
intersections = this.intersectionList(json.routes[0]);
modes = this.modeList(json.routes[0]);
driving_sides = this.drivingSideList(json.routes[0]);
classes = this.classesList(json.routes[0]);
times = this.timeList(json.routes[0]);
distances = this.distanceList(json.routes[0]);
@@ -186,6 +188,10 @@ module.exports = function () {
putValue('weight', weight);
putValue('approach', approaches);
if (driving_sides) {
putValue('driving_side', driving_sides);
}
for (var key in row) {
if (this.FuzzyMatch.match(got[key], row[key])) {
got[key] = row[key];