Skip to content

Commit 3b09696

Browse files
committed
Remove correctly the last segment in annotation
1 parent 7154ed9 commit 3b09696

File tree

4 files changed

+33
-28
lines changed

4 files changed

+33
-28
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# 5.16.3
22
- Changes from 5.16.2:
3+
- FIXED: Remove the last short annotation segment in `trimShortSegments` [#4946](https://github.com/Project-OSRM/osrm-backend/pull/4946)
34
- Performance
45
- FIXED: Speed up response time when lots of legs exist and geojson is used with `steps=true` [#4936](https://github.com/Project-OSRM/osrm-backend/pull/4936)
56

features/testbot/annotations.feature

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Feature: Annotations
1111
"""
1212

1313
And the query options
14-
| annotations | duration,speed,weight |
14+
| annotations | duration,speed,weight,nodes |
1515

1616
And the ways
1717
| nodes | highway |
@@ -22,10 +22,10 @@ Feature: Annotations
2222
| lm | residential |
2323

2424
When I route I should get
25-
| from | to | route | a:speed | a:weight |
26-
| h | j | hk,jk,jk | 6.7:6.7 | 15:15 |
27-
| i | m | il,lm,lm | 6.7:6.7 | 15:15 |
28-
| j | m | jk,lm | 6.7:6.7:6.7 | 15:15:15 |
25+
| from | to | route | a:speed | a:weight | a:nodes |
26+
| h | j | hk,jk,jk | 6.7:6.7 | 15:15 | 1:4:3 |
27+
| i | m | il,lm,lm | 6.7:6.7 | 15:15 | 2:5:6 |
28+
| j | m | jk,lm | 6.7:6.7:6.7 | 15:15:15 | 3:4:5:6 |
2929

3030

3131
Scenario: There should be different forward/reverse datasources
@@ -81,5 +81,5 @@ Feature: Annotations
8181
| bearings | 90,5;180,5 |
8282

8383
When I route I should get
84-
| from | to | route | a:speed | a:distance | a:duration | a:nodes |
85-
| a | c | abc,abc | 10:10:10 | 249.998641:299.931643:0 | 25:30:0 | 1:2:3 |
84+
| from | to | route | a:speed | a:distance | a:duration | a:nodes |
85+
| a | c | abc,abc | 10:10 | 249.998641:299.931643 | 25:30 | 1:2:3 |

features/testbot/traffic_speeds.feature

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ Feature: Traffic - speeds
4848

4949
When I route I should get
5050
| from | to | route | speed | weights | a:datasources |
51-
| a | b | ad,de,eb,eb | 30 km/h | 1275.7,400.4,378.2,0 | 1:0:0:0 |
51+
| a | b | ad,de,eb,eb | 30 km/h | 1275.7,400.4,378.2,0 | 1:0:0 |
5252
| a | c | ad,dc,dc | 31 km/h | 1275.7,956.8,0 | 1:0 |
53-
| b | c | bc,bc | 27 km/h | 741.5,0 | 1:0 |
54-
| a | d | ad,ad | 27 km/h | 1275.7,0 | 1:0 |
53+
| b | c | bc,bc | 27 km/h | 741.5,0 | 1 |
54+
| a | d | ad,ad | 27 km/h | 1275.7,0 | 1 |
5555
| d | c | dc,dc | 36 km/h | 956.8,0 | 0 |
5656
| g | b | fb,fb | 36 km/h | 164.7,0 | 0 |
5757
| a | g | ad,df,fb,fb | 30 km/h | 1275.7,487.5,304.7,0 | 1:0:0 |
@@ -74,12 +74,12 @@ Feature: Traffic - speeds
7474

7575
When I route I should get
7676
| from | to | route | speed | weights | a:datasources |
77-
| a | b | ad,de,eb,eb | 30 km/h | 1275.7,400.4,378.2,0 | 1:0:0:0 |
77+
| a | b | ad,de,eb,eb | 30 km/h | 1275.7,400.4,378.2,0 | 1:0:0 |
7878
| a | c | ad,dc,dc | 31 km/h | 1275.7,956.8,0 | 1:0 |
79-
| b | c | bc,bc | 27 km/h | 741.5,0 | 1:0 |
80-
| a | d | ad,ad | 27 km/h | 1275.7,0 | 1:0 |
79+
| b | c | bc,bc | 27 km/h | 741.5,0 | 1 |
80+
| a | d | ad,ad | 27 km/h | 1275.7,0 | 1 |
8181
| d | c | dc,dc | 36 km/h | 956.8,0 | 0 |
82-
| g | b | ab,ab | 1 km/h | 10010.4,0 | 1:0 |
82+
| g | b | ab,ab | 1 km/h | 10010.4,0 | 1 |
8383
| a | g | ab,ab | 1 km/h | 10010.3,0 | 1 |
8484

8585

@@ -106,14 +106,14 @@ Feature: Traffic - speeds
106106

107107
When I route I should get
108108
| from | to | route | speed | weights | a:datasources |
109-
| a | b | ab,ab | 1 km/h | 20020.73,0 | 1:0 |
110-
| a | c | ab,bc,bc | 2 km/h | 20020.73,741.51,0 | 1:1:0 |
111-
| b | c | bc,bc | 27 km/h | 741.51,0 | 1:0 |
109+
| a | b | ab,ab | 1 km/h | 20020.73,0 | 1 |
110+
| a | c | ab,bc,bc | 2 km/h | 20020.73,741.51,0 | 1:1 |
111+
| b | c | bc,bc | 27 km/h | 741.51,0 | 1 |
112112
| a | d | ab,eb,de,de | 2 km/h | 20020.73,378.17,400.41,0 | 1:0:0 |
113113
| d | c | dc,dc | 36 km/h | 956.8,0 | 0 |
114-
| g | b | ab,ab | 1 km/h | 10010.37,0 | 1:0 |
114+
| g | b | ab,ab | 1 km/h | 10010.37,0 | 1 |
115115
| a | g | ab,ab | 1 km/h | 10010.36,0 | 1 |
116-
| g | a | ab,ab | 1 km/h | 10010.36,0 | 1:1 |
116+
| g | a | ab,ab | 1 km/h | 10010.36,0 | 1 |
117117

118118

119119
Scenario: Speeds that isolate a single node (a)
@@ -135,14 +135,14 @@ Feature: Traffic - speeds
135135
| annotations | true |
136136

137137
When I route I should get
138-
| from | to | route | speed | weights | a:datasources |
139-
| a | b | fb,fb | 36 km/h | 329.4,0 | 0 |
140-
| a | c | fb,bc,bc | 30 km/h | 329.4,741.5,0 | 0:1:0 |
141-
| b | c | bc,bc | 27 km/h | 741.5,0 | 1:0 |
142-
| a | d | fb,df,df | 36 km/h | 140,487.5,0 | 0:0:0 |
143-
| d | c | dc,dc | 36 km/h | 956.8,0 | 0 |
144-
| g | b | fb,fb | 36 km/h | 164.7,0 | 0 |
145-
| a | g | fb,fb | 36 km/h | 164.7,0 | 0 |
138+
| from | to | route | speed | weights | a:datasources | a:speed | a:nodes|
139+
| a | b | fb,fb | 36 km/h | 329.4,0 | 0 | 7 | 6:2 |
140+
| a | c | fb,bc,bc | 30 km/h | 329.4,741.5,0 | 0:1 | 10:7.5 | 6:2:3 |
141+
| b | c | bc,bc | 27 km/h | 741.5,0 | 1 | 7.5 | 2:3 |
142+
| a | d | fb,df,df | 36 km/h | 140,487.5,0 | 0:0 | 10:10 | 2:6:4 |
143+
| d | c | dc,dc | 36 km/h | 956.8,0 | 0 | 10 | 4:3 |
144+
| g | b | fb,fb | 36 km/h | 164.7,0 | 0 | 3.5 | 6:2 |
145+
| a | g | fb,fb | 36 km/h | 164.7,0 | 0 | 5.4 | 6:2 |
146146

147147

148148
Scenario: Verify that negative values cause an error, they're not valid at all

src/engine/guidance/post_processing.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ void trimShortSegments(std::vector<RouteStep> &steps, LegGeometry &geometry)
370370
geometry.segment_offsets.pop_back();
371371
// remove all the last coordinates from the geometry
372372
geometry.locations.resize(geometry.segment_offsets.back() + 1);
373-
geometry.annotations.resize(geometry.segment_offsets.back() + 1);
373+
geometry.annotations.resize(geometry.segment_offsets.back());
374374
geometry.osm_node_ids.resize(geometry.segment_offsets.back() + 1);
375375

376376
BOOST_ASSERT(geometry.segment_distances.back() <= 1);
@@ -429,6 +429,10 @@ void trimShortSegments(std::vector<RouteStep> &steps, LegGeometry &geometry)
429429
last_step.intersections.front().bearings.front() = util::bearing::reverse(bearing);
430430
}
431431

432+
BOOST_ASSERT(geometry.segment_offsets.back() + 1 == geometry.locations.size());
433+
BOOST_ASSERT(geometry.segment_offsets.back() + 1 == geometry.osm_node_ids.size());
434+
BOOST_ASSERT(geometry.segment_offsets.back() == geometry.annotations.size());
435+
432436
BOOST_ASSERT(steps.back().geometry_end == geometry.locations.size());
433437

434438
BOOST_ASSERT(steps.front().intersections.size() >= 1);

0 commit comments

Comments
 (0)