Commit Graph

228 Commits

Author SHA1 Message Date
Patrick Niklaus
7f6e0c478b Split QueryNode into coordinates and osm id 2017-04-06 15:42:38 +00:00
Moritz Kobitzsch
6c3390f14d refactor of post-processing
- moves collapse into a dedicated set of functions / files
 - make collapse scenarios distinct (slight performance cost)
 - reduce verbosity for short name segments (now actually working, was supposed to do so before)
2017-02-25 12:17:22 +00:00
Moritz Kobitzsch
dc1d491c15 comments 2017-02-13 10:55:40 +00:00
Moritz Kobitzsch
e4d500f451 fix handling none-tags in presence of multiple turns within 2017-02-13 10:55:40 +00:00
Michael Krasnyk
6e1c4bfecd Added indexed array data type with variable and fixed group blocks 2017-02-07 07:41:12 +00:00
Michael Krasnyk
ad594cb2e4 Update review findings 2017-01-27 11:19:37 +01:00
Patrick Niklaus
279f8aabfb Allow specifing a weight for routing that is independent of duration 2017-01-27 11:19:37 +01:00
Moritz Kobitzsch
c7640903c3 don't emit invalid turns when having u-turns on ferries 2017-01-26 13:08:00 +01:00
Huyen Chau Nguyen
a40abacfca Refactors the Turn Handler's Fork Abstraction, resolves #3457. 2017-01-19 19:49:40 +01:00
Moritz Kobitzsch
6b06c5bd32 fix emitting invalid turn types, now surfacing due to changes in obvious detection 2017-01-18 15:56:48 +01:00
Moritz Kobitzsch
c1f833c80f fix forks exiting a ferry 2017-01-12 09:58:51 +01:00
Moritz Kobitzsch
06ef3053de fix coordinate assertion for walking profile with steps 2017-01-11 22:44:23 +01:00
Daniel J. Hofmann
b3483f95a7 Fixes Sliproads onto a roundabout to be classified as sliproads, resolves #3540 2017-01-09 17:46:05 +01:00
Huyen Chau Nguyen
f313cb9913 Refactor fork handling in guidance (#3264)
refactor fork handler
2017-01-07 14:13:32 +01:00
Moritz Kobitzsch
15c8fd326f Remove assertions that could be triggered by bad data. (#3469)
When two consecutive nodes have identical coordinates, there is no valid
bearing.  For now, make equal nodes have bearing 0.

Full fix still needs to be done via https://github.com/Project-OSRM/osrm-backend/issues/3470.
2017-01-06 17:10:02 -08:00
Daniel J. Hofmann
1153b78c06 Fixes various compiler diagnostics
Found with LLVM 3.9.1 and then fixed the most severe categories.
2017-01-06 16:47:52 +01:00
Michael Krasnyk
7dea7476f1 Removed unused structure and fixed "multi-line comment" warning 2017-01-05 12:59:12 +01:00
Michael Krasnyk
24ab71a346 Fix c++ formatting 2017-01-04 08:46:16 +01:00
Moritz Kobitzsch
e6ff17ab2a refactor merging of segregated roads
adjust to generalFindMaximum function
moved parallel detection to ratio/absolute based regression testing
considerably improved detection quality using normalised regression lines
only follow initial direction/narrow turns for parallel detection
2017-01-03 12:32:51 +01:00
Moritz Kobitzsch
b9b52cb857 clean-up unused headers, use NoTurn for ferries instead of suppressed 2016-12-23 15:01:02 +01:00
Daniel J. Hofmann
9af67c5a9f Refactors Karen's work a bit 2016-12-23 15:01:02 +01:00
karenzshea
8ffe915395 do not emit turns on ferries 2016-12-23 15:01:02 +01:00
Moritz Kobitzsch
bc081b7132 refactor route step / intermediate intersections
rename intersection (engine version) to IntermediateIntersection
follow coding convention for existing functions, move invalidate into routeStep
moved elongate into route step
move forward-step-signage into route step
replace post-processings `forwardInto` with `RouteStep` functionality. Don't change maneuver in step
separete declaration and implementation
2016-12-22 08:33:27 +01:00
Moritz Kobitzsch
d584bcad11 fix roundabout handling with lanes
instead of artificially removing lanes from a roundabout, we don't assing them in the first place.
this also prevents a problem where we would end up collapsing turns with lanes in a roundabout
2016-12-15 13:07:26 +01:00
Daniel J. Hofmann
8a1afe456f Works around Unreachable Warning for Debug Build 2016-12-13 12:41:25 +01:00
Moritz Kobitzsch
1cd5394a16 fix invalid assertion in coordinate_extractor 2016-12-12 10:12:32 +01:00
Daniel J. Hofmann
875f482203 Refactors and improves the Sliproad Handler, resolves #3109 2016-12-07 19:22:03 +01:00
Moritz Kobitzsch
df3c39cef5 clean-up guidance code/code in general
removes duplicated includes
removes unused includes
eliminates dedicated toolkits that resulted in circular dependencies
moves functionality close to data, where possible
2016-12-07 12:10:56 +01:00
Moritz Kobitzsch
a28a20a1ba fix errors in coordinate extractor due to duplicated coordinates
fix offset calculation in curve detection
2016-12-07 11:33:58 +01:00
Daniel Patterson
468d8c0031 Refactor logging, improve error handling workflow, clang-format. (#3385) 2016-12-06 12:30:46 -08:00
Moritz Kobitzsch
24b01fae00 fix extraction of coordinate along a way (#3397)
Also fix interpolation when coordinates are duplicated at the end of the vector
2016-12-02 13:11:04 -08:00
Daniel J. Hofmann
9d8b92f418 Abstracts away over differences in IntersectionView and Intersection.
Usage:

    struct MyIntersection : EnableIntersectionOps<MyIntersection> {

    };

Done.

We require MyIntersection having at least the member attributes from
IntersectionViewData but don't enforce a inheritance hierarchy.
2016-12-02 12:32:07 +01:00
Moritz Kobitzsch
561b7cc58e Rember Intersection Shapes
Changes the processing order in the edge based graph factory.
Instead of iterating over all outgoing edges in order, we compute the edge
expanded graph in the order of intersections.
This allows to remember intersection shapes and re-use them for all possible ingoing edges.

Also: use low accuracry mode for intersections degree 2 intersections

We can use lower accuracy here, since the `bearing`
after the turn is not as relevant for off-route detection.
Getting lost is near impossible here.
2016-12-01 15:24:20 +01:00
Moritz Kobitzsch
5775679f64 fix coordinate extraction / errors in offset detector 2016-12-01 12:16:25 +01:00
Moritz Kobitzsch
a1127c3e09 reduce numbers of intersections in findNextIntersection, don't normalise for turn lanes 2016-11-30 10:21:53 +01:00
Moritz Kobitzsch
12d58ace10 add support for junction=circular, allowing named circular junctions to be treated as rotaries 2016-11-29 13:44:32 +01:00
Moritz Kobitzsch
186cc8340a handle service roads next to roundabouts - ambiguous exit... :( 2016-11-29 11:47:35 +01:00
Moritz Kobitzsch
d02dd67e95 fix update to length cache 2016-11-23 11:27:59 +01:00
Moritz Kobitzsch
a49bd70985 add low precision intersection_generator mode for faster graph traversal 2016-11-22 18:25:19 +01:00
karenzshea
0bd08224bf add comments, refactor find obvious turn 2016-11-21 13:16:30 -05:00
Moritz Kobitzsch
a4264c7849 fix node-based-graph-walker 2016-11-16 12:03:59 +01:00
Moritz Kobitzsch
538bbd47d1 fix length limited graph walker 2016-11-14 18:38:15 +01:00
Moritz Kobitzsch
f88ac989ea reserve when possible 2016-11-11 14:48:50 +01:00
Moritz Kobitzsch
827a1fbd7a separate intersection generation and intersection normalization 2016-11-10 12:56:46 +01:00
Moritz Kobitzsch
e84a0ea37c reduce coordinate_extraction overhead. slowdown reduced by 30 percent 2016-11-10 10:44:54 +01:00
Moritz Kobitzsch
7073403f1b rip out dedicated file for single function (minor refactor) 2016-11-09 12:52:39 +01:00
Daniel J. Hofmann
6ac9617d49 Adapt test to returning ref, Take Pronunciation into Account, Fixes name change heuristic usage in UTurn check 2016-11-08 12:14:23 +01:00
Moritz Kobitzsch
ccdebccde1 adjust sliproad handler for empty-name check, illustrate testcase 2016-11-08 12:14:23 +01:00
Daniel J. Hofmann
c1651ccb12 Uses Name Change Heuristic Instead of Comparing Name Ids
References:
- https://github.com/Project-OSRM/osrm-backend/issues/2857
- https://github.com/Project-OSRM/osrm-backend/pull/2900
- https://github.com/Project-OSRM/osrm-backend/issues/2909
2016-11-08 12:14:23 +01:00
Moritz Kobitzsch
2fb40944bf pull in intersection finder accumulator 2016-11-04 13:28:09 +01:00
Michael Krasnyk
b108d8ea21 Use explicit std::function for to_lane_count instead of auto 2016-11-04 10:46:24 +00:00
Daniel J. Hofmann
d2cd4fac2d Fixes Always-Zero Lane Count Introduced in #3237 2016-11-03 15:52:18 +01:00
Moritz Kobitzsch
cd03877c90 link ConnectedRoad and TurnOperation via class hierarchy
and empower intersection by adding basic functionality to pod type
refactor extractor/toolkit into intersection
2016-11-03 13:42:29 +01:00
Moritz Kobitzsch
faa5185440 add node-based-graph traversal capabilities 2016-11-02 15:38:09 +01:00
Moritz Kobitzsch
8dc667f20d fix warnings due to superfluous ; 2016-10-27 20:06:14 +02:00
Moritz Kobitzsch
8ff4bc09ac fix breaking the sorting order by node adjustments 2016-10-27 19:55:56 +02:00
Moritz Kobitzsch
88c3f4c481 Considering multiple small turns, right after each
other can result in a combined turn angle that is
straight instead of turning left and right.
2016-10-27 19:19:23 +02:00
Moritz Kobitzsch
01a2c66472 rip out unused m_node_info_list 2016-10-27 18:51:59 +02:00
Moritz Kobitzsch
e8b947bca6 fix coordinate extraction with less than 1 meters past lane distance 2016-10-25 10:07:09 -07:00
Moritz Kobitzsch
ecee13bffa actually calculate distance instead of using .distance which is a timing value 2016-10-20 12:27:02 +02:00
Moritz Kobitzsch
5e167b8745 Turn Angles in OSRM were computed using a lookahead of 10 meters.
This PR adds more advanced coordinate extraction, analysing the road
to detect offsets due to OSM way modelling.

In addition it improves the handling of bearings. Right now OSM reports
bearings simply based on the very first coordinate along a way.
With this PR, we store the bearings for a turn correctly, making the
bearings for turns correct.
2016-10-20 10:47:29 +02:00
karenzshea
72fa35da10 add a toolkit function to find lanes to the left/right of turn lanes 2016-10-13 17:59:25 +02:00
Moritz Kobitzsch
17eb664597 don't get disturbed by service roads in obvious discovery 2016-10-13 16:10:59 +02:00
Moritz Kobitzsch
036475afd0 restructure for readability 2016-10-07 09:35:16 +02:00
Moritz Kobitzsch
378322f6e3 don't provide turn-straight next to suppress-straight 2016-10-07 09:35:16 +02:00
Moritz Kobitzsch
73179641b1 clang-format code 2016-10-06 14:06:19 +02:00
Moritz Kobitzsch
66f2cc5184 fix detection of forks in present of oneways 2016-10-05 17:49:54 +02:00
Moritz Kobitzsch
a824e64682 Merge branch 'master' into guido/notification 2016-09-29 16:03:44 +02:00
Moritz Kobitzsch
da15e1fc5e adjust case/add clarification 2016-09-29 10:50:28 +02:00
Ansis Brammanis
7e2663f2ad calculate roundabout radius from circumference, fix #2716 2016-09-29 10:42:42 +02:00
karenzshea
1a96483f7b prefer notification over new-name/suppressed types 2016-09-29 10:26:56 +02:00
Daniel J. Hofmann
60010dd998 Reduce NewName Instructructions / Name Changes
With @karenzshea's name / ref split (ref. #2857) in master we want to
make use of it and reduce `NewName` instructions when ever possible.
This is a first step towards #2744 by using the already existing name
change heuristic from the extractor now in post-processing as well.

Limitations: at the moment we don't have the `SuffixTable` in
post-processing; this would require us serializing and subsequently
deserializing the table, passing it through from the profiles to the
API.
2016-09-21 12:42:39 +02:00
Moritz Kobitzsch
8522cddd61 Prevent loops in extraction based on merge 2016-09-19 13:33:52 +02:00
Moritz Kobitzsch
aa5f8dce23 fix may be uninitialised warnings 2016-09-15 08:25:17 +02:00
Moritz Kobitzsch
092e77e89b fix false positives in sliproads 2016-09-13 14:11:29 +02:00
Moritz Kobitzsch
b3c5a9c010 fix looping in sliproad handler for lanes 2016-09-12 18:20:28 +02:00
Moritz Kobitzsch
c306a59854 make sure to not-collapse different travel modes 2016-09-08 15:01:25 +02:00
Moritz Kobitzsch
9123c93a90 fix interaction between sliproads/segregated intersections 2016-09-07 12:36:29 +02:00
Moritz Kobitzsch
a551286a8f adjust testscases for collapse of use lane 2016-09-07 12:17:36 +02:00
Daniel J. Hofmann
86fd04e556 Improves lane handling for subsequent going straight, resolves #2625
Before we only worked on subsequent quick turns, as in:
`right, right` keeps the user on the rightmost lanes.

This changeset modifies the logic to work on any subsequent steps
that are "quick" and have lane information we can constrain later.

Because we do not have a from-lane => to-lanes mapping we take the
lanes left and right of the turn lanes into account when heuristically
assigning the leftmost / rightmost lanes.

There are some edge cases where this still does not give us the optimal
solution but it gets close to what is actually possible at the moment
without having a lane mapping in post-processing.

References:
- https://github.com/Project-OSRM/osrm-backend/issues/2625

fix rebase
2016-09-07 12:17:36 +02:00
Moritz Kobitzsch
b6dbf81206 don't assign lanes on delayed turns 2016-09-07 12:17:34 +02:00
Moritz Kobitzsch
3b81b39998 turn lane handler moved to scenario based handling 2016-09-07 12:16:59 +02:00
Moritz Kobitzsch
a0ed70f0a2 don't detect sliproads at wrong locations, don't emit invalid instructions 2016-09-06 09:01:06 +02:00
Moritz Kobitzsch
d3a6b5a77e detect broken roundabout-taggings 2016-09-05 16:49:57 +02:00
Moritz Kobitzsch
5d79e0ac2f catch infinite loops 2016-09-05 14:52:13 +02:00
Moritz Kobitzsch
6fac14dbd8 ignore invalid only_* restrictions 2016-09-01 09:14:01 +02:00
Moritz Kobitzsch
7e0d14b113 make collapse work by better detecting continue/non-continue situations 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
d06eec5e42 improve segregated road detection 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
9648821a79 handle missing cases, cleaning up 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
21fb18fe5e identify merges on non-perception cases 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
6a2518c0df handle stronger merge cases as well 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
7886d06839 adjust angles pre-merge as well 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
5a9eb6ef72 prepare solution 2016-08-24 10:34:07 +02:00
Moritz Kobitzsch
9b2f6585fb handle non-through case 2016-08-24 10:12:27 +02:00
Moritz Kobitzsch
46fd17a9ff moved obviousness discovery. updated sliproad handler. back to original cases failing 2016-08-24 10:12:27 +02:00
Daniel J. Hofmann
da73bae9c6 Scenario for unnecessary slight left onto Stralauer Str 2016-08-24 10:12:27 +02:00
Moritz Kobitzsch
e8bae78749
fix errors introduced in refactor 2016-08-18 11:36:36 +02:00
Moritz Kobitzsch
e14bc30428
adjusted for comments 2016-08-18 11:36:36 +02:00
Moritz Kobitzsch
9485c97738
adjusting u-turn handling in lane matching to fully fix 2706 2016-08-18 11:36:36 +02:00
Daniel J. Hofmann
d53c267129
Be more aggresive classifying Roundabout Intersections.
Roundabout Intersections are roundabouts with up to four ways and turn
angles which makes the turns obvious, e.g. as in:

```
    *
    *
* *   * *
    *
    *
```

but not

```
     *
    *
* *   *
    * *
     * *
```

For Roundabout Intersections we issue instructions such as
"turn <direction>" instead of "take the <nth> exit".

At the moment we have a limit on the radius for these Roundabout
Intersections of 5 meters. Which fails to classify a wide range of
Roundabout Intersections in the US (with the US-wide streets).

This changeset removes the Roundabout Intersection radius limit:

- if the roundabout is larger than a threshold and is named we classify
  it as a rotary

- if the roundabout matches our criteria for Roundabout Intersections
  we classify it as a Roundabout Intersection

- else fallback to plain old Roundabout

There is a second issue with determining a roundabout's radius.
But that's for another pull request (tracking in #2716).

References:
- https://github.com/Project-OSRM/osrm-backend/issues/2716
2016-08-18 10:50:32 +02:00