Patrick Niklaus
7da86b5984
Implement CoreCH algorithm
2017-03-03 16:02:12 +00:00
Patrick Niklaus
922e155763
Add type traits to disable plugins for specific algorithms
2017-03-03 16:02:12 +00:00
Patrick Niklaus
436b34ffea
Refactor routing_algorithms to only contain free functions
2017-03-03 16:02:12 +00:00
Patrick Niklaus
2fa8d0f534
Port OSRM, Engine and Datafacades to be algorithm aware
2017-03-03 16:02:12 +00:00
Moritz Kobitzsch
786be6f570
Optimise Flow Algorithm/Datastructures in use
2017-03-01 16:09:29 +00:00
Lev Dragunov
07221f5a48
Do not take the current route into account in alternatives_count parameter.
2017-03-01 01:29:00 +00:00
Lev Dragunov
f7b8e06c3a
Matching alternatives count output. #3508
2017-03-01 01:29:00 +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
Michael Krasnyk
4161181a6c
revert watchdog singleton
2017-02-24 16:01:56 +00:00
Moritz Kobitzsch
03bb6dc161
reduce verbosity of use-lane in combination with lane-anticipation
2017-02-15 21:57:48 +00:00
Kajari Ghosh
2218658969
Trip with Fixed Start and End points (TFSE) ( #3408 )
...
* fixed start and end trip feature to trip service
2017-02-10 05:13:20 -05:00
Michael Krasnyk
b3ef27d104
Make watchdog a singleton instance
...
References:
https://github.com/Project-OSRM/osrm-backend/issues/3619
https://github.com/Project-OSRM/osrm-backend/pull/3627#issuecomment-276288138
2017-01-31 13:25:59 +01:00
Michael Krasnyk
c22ce3ae1f
Use shared memory region mapping at fixed address for OSX
2017-01-31 13:25:59 +01:00
Michael Krasnyk
ad594cb2e4
Update review findings
2017-01-27 11:19:37 +01:00
Michael Krasnyk
25baf51a2c
Add duration to edges and use it in table plugin
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
b5e289adc3
3605 - fix error in treating end-of-road as choiceless ( #3607 )
2017-01-24 11:23:54 -08:00
Daniel J. Hofmann
c277b95f03
Implements Zero-Copy String Views onto Contiguous Memory, resolves #3265 .
...
- http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html
- http://en.cppreference.com/w/cpp/string/basic_string_view
2017-01-23 15:22:39 +01:00
Moritz Kobitzsch
d129b0ef24
remove templates from routing algorithms
2017-01-21 23:59:15 +01:00
Moritz Kobitzsch
b8beac2d00
unite process/shared_memory datafacades into a single type using an allocator scheme
2017-01-19 17:18:35 +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
Michael Krasnyk
d0f1347ff1
Adjusted number of nodes
in annotation
, resolves #3515
2017-01-16 23:54:00 +01:00
Michael Krasnyk
b6f9ec2a33
make facades const to be consistent with const shmem block
2017-01-14 01:14:29 +01:00
Patrick Niklaus
a7bb26f2d6
Remove unnecessary includes and rename in Engine
2017-01-14 01:14:29 +01:00
Michael Krasnyk
fce8d72895
Change to condvar signaling if data region swapped
2017-01-14 01:14:29 +01: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
Daniel J. Hofmann
b5d5f309a3
Consider number of lanes to cross, resolves #3025 .
...
Lane Anticipation currently triggers on quick steps with lanes. This
changeset makes the "quick" part more dynamic by taking lanes left and
right of the turn into account. The reasoning for this is as follows.
The user can drive on the leftmost or rightmost lane and has to cross
all lanes left or right of the turn, respecitvely.
We scale our threshold appropriately, which now means the threshold
describes the duration the user needs for crossing _a single lane_.
Note: this is a heuristic and assumes the worst case. Which in my
opinion is fine to do since triggering Lane Anticipation in complex
scenarios is desirable.
2017-01-06 12:44:40 +01:00
Michael Krasnyk
7dea7476f1
Removed unused structure and fixed "multi-line comment" warning
2017-01-05 12:59:12 +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
Jihyun Yu
421caa1856
Fix copying vector on std::sort comparator ( #3504 )
2016-12-30 13:57:21 -08: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
Patrick Niklaus
3cbac0f012
Revert "Smarter search radius formula for map matching"
...
This reverts commit b73c59088c
.
2016-12-21 22:41:48 -08:00
Patrick Niklaus
f40b34af9d
Revert "Fix capture"
...
This reverts commit 4f81e31d63
.
2016-12-21 22:41:42 -08:00
Patrick Niklaus
cc14fb8bff
Revert "Hardcode search radius parameters"
...
This reverts commit 2c9e18d5a9
.
2016-12-21 22:41:34 -08:00
Patrick Niklaus
c5e3fa916f
Revert "Fix call to std::min"
...
This reverts commit 8bb183bc8c
.
2016-12-21 22:41:22 -08:00
Moritz Kobitzsch
dff7fe214b
don't assign exit
in arrive when ending in roundabout
2016-12-21 17:48:23 +01:00
Daniel J. Hofmann
b1f6797aab
Adds generate_hints=true
for dropping hints in response, resolves #1789 .
...
Adds an `generate_hints=false` option which lets us skip generating and
emitting hints for Waypoints. This can be used to decrease the response
size when the user does not need hints anyway.
We should think about making `false` the default here in v6.
2016-12-19 12:09:36 +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 Patterson
a51ef67db8
Use common function for clamping logic for all user-visible bearings.
2016-12-15 10:59:17 +01:00
Moritz Kobitzsch
67ce19cb14
fix problem at the source
2016-12-15 10:59:17 +01:00
Daniel Patterson
1b51163b1d
Clarify API and ensure bearings returned to users are in the range 0-359
2016-12-15 10:59:17 +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
Daniel Patterson
468d8c0031
Refactor logging, improve error handling workflow, clang-format. ( #3385 )
2016-12-06 12:30:46 -08:00
Michael Krasnyk
4b1aae40af
Decoding should not fail for incomplete polyline strings ( #3404 )
...
Possible fails in
1) correct lattitude, longitude is missing
2) no end-of-number (0 5th bit) marker in the last character
2016-12-06 14:09:18 +01:00
Daniel Patterson
0817cd6dfd
Enforce iteration order so that tiles are encoded consistently on all platforms ( #3393 )
2016-12-02 08:59:39 -08: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
Karen Shea
ef087f963d
Merge pull request #3324 from Project-OSRM/constrain-staggering
...
Constrain staggered intersection detection by mode change and intermediary intersections
2016-11-30 07:35:17 -05:00
Moritz Kobitzsch
a1127c3e09
reduce numbers of intersections in findNextIntersection, don't normalise for turn lanes
2016-11-30 10:21:53 +01:00
karenzshea
37824e2954
don't staggered intersections on intermediary mode changes
2016-11-29 14:39:16 -05:00
karenzshea
ce5bcc797b
opening typo
2016-11-29 09:39:05 -05:00
karenzshea
3680fc9d90
add check/test for intermediary intersections
2016-11-18 08:52:47 -05:00
karenzshea
836e8bdff0
don't collapse with mode changes
2016-11-18 08:52:47 -05:00
Kerrick Staley
8bb183bc8c
Fix call to std::min
2016-11-17 17:56:23 +01:00
Kerrick Staley
2c9e18d5a9
Hardcode search radius parameters
2016-11-17 17:56:23 +01:00
Kerrick Staley
4f81e31d63
Fix capture
2016-11-17 17:56:23 +01:00
kerrick-lyft
b73c59088c
Smarter search radius formula for map matching
2016-11-17 17:56:23 +01:00
Michael Krasnyk
1eaf9f3269
Fix ubsan runtime error: left shift of negative value -9
2016-11-16 12:12:20 -08:00
Daniel Patterson
608044305d
Rename the datafacades to more clearly describe what they do.
2016-11-15 16:55:02 -08:00
Daniel Patterson
bf6df74d44
Consolidate datafacade file loading logic.
...
Both datafacades now use a single large memory block and common
file loading logic.
2016-11-15 16:55:02 -08:00
Moritz Kobitzsch
6ec505281e
fix edge discovery in tile plugin
2016-11-12 02:15:04 +01:00
Moritz Kobitzsch
f88ac989ea
reserve when possible
2016-11-11 14:48:50 +01:00
Moritz Kobitzsch
88208bfa5d
add testscases for mode changes / additional assertions
2016-11-09 12:55:28 +01:00
Daniel Patterson
cef53c4b56
Fix key/val offset bug.
2016-11-08 11:45:28 -08:00
Daniel Patterson
481b03baeb
Review changes.
2016-11-08 11:45:28 -08:00
Daniel Patterson
f96e61ee06
Construct adjacency list and properly traverse it.
2016-11-08 11:45:28 -08:00
Daniel Patterson
af7960a796
Fix buffering of query box - it was shrinking in the Y axis, rather than growing.
2016-11-08 11:45:28 -08:00
Daniel Patterson
4c6d6aeaa7
Fix retrieval of forward/reverse data.
2016-11-08 11:45:27 -08: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
Kajari Ghosh
f33180f092
request polyline with precision of 5 or 6 positions ( #3220 )
2016-11-07 15:11:21 -05:00
Moritz Kobitzsch
3eeb3cb6c6
fix collapsing of roundabout instructions
2016-11-07 17:16:44 +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
388d84a89e
check for compatibility in post-processing ( #3227 )
2016-11-02 16:59:35 -06:00
Patrick Niklaus
b749d9bd2f
Address PR comments
2016-11-02 16:45:20 +00:00
Patrick Niklaus
8f00936790
Fix non-overlap logic for simplified geometries.
2016-11-02 16:45:20 +00:00
Kajari Ghosh
c30f43b148
added max_speed to the profiles ( #3089 )
2016-11-01 17:13:10 -04:00
Patrick Niklaus
f02b7b0910
[skip ci] Fix formating using format.sh
2016-10-28 14:45:05 -07: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
Daniel J. Hofmann
a933b5d949
Prevents the Matching getting confused when users are time-travelling.
2016-10-25 10:42:24 -07:00
Patrick Niklaus
b8795c7341
Rename increasingly inaccuratly named distance member of QueryEdge to weight
2016-10-21 21:00:02 +02:00
Moritz Kobitzsch
e3c2d4dddc
use-lane can occur in roundabouts as well
2016-10-20 14:28:33 -07: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
Moritz Kobitzsch
1f8ca2879f
fix u-turn collapsing onto empty name / in presence of turning use lane
2016-10-20 09:39:38 +02:00
Daniel J. Hofmann
18bc02f087
Collapses Double OSRM <-> Engine <-> .. PImpl Indirection, Resolves #3019 .
2016-10-19 13:42:08 -07:00
Patrick Niklaus
8205c34abe
Fix duplicated code in tile plugin
2016-10-18 22:11:43 +02:00
Patrick Niklaus
847f530c8e
Only keep reader lock on shared memory during queries.
2016-10-18 21:58:50 +02:00
Patrick Niklaus
c69545c47a
Don't block all requests to switch data
...
This switchtes the data even if there are requests still running on the
old data. osrm-datastore then waits until all of these old requests have
finished before freeing the old regions.
This also means that osrm-datastore will return with an error if there
is a data update currenlty in progress.
2016-10-18 21:58:50 +02:00
Patrick Niklaus
1557ff81bc
Simplify the locking logic
2016-10-18 21:58:50 +02:00
Patrick Niklaus
ceaf362326
Make SharedDataFacade immutable
2016-10-18 21:58:50 +02:00
Daniel J. Hofmann
8ed6bb8a1b
Asserts on valid v5 conforming maneuver types, resolves #3035
2016-10-14 15:59:26 +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
karenzshea
ee012ae2da
valid tiles are >= z12
2016-10-12 10:03:43 -04:00
Daniel J. Hofmann
32dcce88f7
Fixes missing memory include for make_unique; reported in #3018 .
...
https://github.com/Project-OSRM/osrm-backend/issues/3018#issuecomment-253118518
2016-10-12 12:55:05 +02:00
Moritz Kobitzsch
6cf99c886f
don't emit invalid on sliproads with incompatible modes
2016-10-11 10:59:10 +02:00
Patrick Niklaus
9eb7fc03ce
Use a shared (!) reader writer lock to protect CURRENT_REGIONS
...
This fixes issue #3016 .
2016-10-10 12:13:45 +02:00
jakepruitt
49a28b478c
Remove TODO - tiles are tested and seem to work
2016-10-06 10:09:57 -07:00
Lauren Budorick
a75e16e26b
Deduplicate foward/reverse geometries
...
Changes the internal representation of compressed geometries to be a
single array shared between forward and reverse geometries that can be
read in either direction. Includes a change on
extractor::OriginalEdgeData to store via_geometry ids that indicate
which direction to read the geometry for that edge based edge.
Closes #2592
2016-10-06 10:09:57 -07:00
Moritz Kobitzsch
73179641b1
clang-format code
2016-10-06 14:06:19 +02:00
Patrick Niklaus
1c2ead8fb8
Make DataFacade local to every request
...
This is the first step to having fine grained locking on data updates,
see issue #2570 .
2016-10-06 12:56:38 +02:00
Daniel J. Hofmann
d17eacc52b
Makes the OSRM interface threadsafe.
...
Technically speaking we're changing the `libosrm` API.
But since we're only lifting restrictions by marking the API threadsafe,
we should be fine here.
2016-10-04 09:32:22 +02:00
Moritz Kobitzsch
d1f1358e48
adjust for comments by daniel-j-h
2016-09-30 17:27:14 +02:00
Daniel Patterson
805d93912d
Construct an adjacency list in order to discover turns.
2016-09-30 17:12:23 +02:00
Daniel Patterson
3dd7732ffc
Add code comments and document some magic constants.
2016-09-30 17:12:22 +02:00
Daniel Patterson
c8eb2b2d11
Refactor edge unpacking so that it's CH indepenent and we don't repeat ourselves so much.
2016-09-30 17:12:22 +02:00
Lauren Budorick
14e7460465
Include turn information in debug tiles.
2016-09-30 17:12:20 +02:00
Moritz Kobitzsch
78d530ddae
fix polyline decoding
2016-09-29 11:56:51 +02:00
Daniel J. Hofmann
d1f555dcef
Removes unused JSON logger.
...
References:
- https://github.com/Project-OSRM/osrm-backend/pull/2769
2016-09-28 10:01: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
Daniel J. Hofmann
bf2b1a64b9
Fixes sign mismatch in Nearest limit comparison
2016-09-16 15:40:05 +02:00
Moritz Kobitzsch
861314256e
fix roundabout-intersection on immediate exit
2016-09-13 19:16:45 +02:00
Moritz Kobitzsch
b3c5a9c010
fix looping in sliproad handler for lanes
2016-09-12 18:20:28 +02:00
Daniel J. Hofmann
e3c1b133bf
Adds a limit for number of results returned in Nearest service, resolves #2872
2016-09-12 11:59:08 +02:00
Moritz Kobitzsch
c306a59854
make sure to not-collapse different travel modes
2016-09-08 15:01:25 +02:00
karenzshea
dcc1b5ab2b
return name and reference separately
2016-09-08 14:28:23 +02:00
Moritz Kobitzsch
938dff011f
handle all our new strings correctly, introduce rotary_pronunciation
2016-09-07 16:09:13 +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
Daniel J. Hofmann
af47252efe
Do not collapse away lane information as long as it is necessary
2016-09-07 12:17:00 +02:00
Moritz Kobitzsch
3b81b39998
turn lane handler moved to scenario based handling
2016-09-07 12:16:59 +02:00
Moritz Kobitzsch
97c66c6c82
added some concerns regarding the angles/length of the turns
2016-09-06 09:57:33 +02:00
Daniel J. Hofmann
733207d4a1
Be more strict classifying staggered intersections, resolves #2824
2016-09-06 09:57:33 +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
7a523713c7
remove broken assertion
2016-09-05 15:06:56 +02:00
Moritz Kobitzsch
b1b41435b6
Revert "make sure collapse only happens on valid indices"
...
This reverts commit 47a6cd5462
.
2016-09-05 14:54:30 +02:00
Moritz Kobitzsch
5d79e0ac2f
catch infinite loops
2016-09-05 14:52:13 +02:00
Moritz Kobitzsch
47a6cd5462
make sure collapse only happens on valid indices
2016-09-05 12:41:33 +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
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
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
Patrick Niklaus
41b22916f3
Merge pull request #2756 from gojuno/turn_annotation_bugfix
...
JSON instruction serialization fix.
2016-08-12 19:14:47 +02:00
Lev Dragunov
89f1071947
Static checks for guidance array sizes.
2016-08-12 18:52:54 +03:00
Moritz Kobitzsch
464de785cb
fix removal of multiple geometries for first vertex
2016-08-09 12:02:07 +02:00
Lev Dragunov
8986777c58
JSON instruction serialization fix.
2016-08-08 20:32:01 +03:00
Daniel J. Hofmann
b1e309b4eb
Collapse Staggered Intersections.
...
Staggered intersection are very short zig-zags of only a few meters.
They are common in rural and exurban areas, especially in the US.
(In addition, these cases could as well be tagging issues)
We do not want to announce these short left-rights or right-lefts:
* -> b a -> *
| or | becomes a -> b
a -> * * -> b
Here is one example:
- https://www.openstreetmap.org/edit#map=20/39.26017/-84.25182
And here are two edge-cases that we don't handle at the moment:
- http://www.openstreetmap.org/edit#map=20/38.87900/-76.98519
- http://www.openstreetmap.org/edit#map=19/45.51056/-122.63462
and probably should not handle since the distance in between is
quite long (roughly 7-15 meters). For these we want to announce
two turns to not confuse the user.
Thanks to @1ec5 for raising this issue and @karenzshea for
providing additional US examples and cultural insights.
2016-08-05 14:35:13 +02:00
Daniel J. Hofmann
7f71f0ed12
Warn on unused return values in guidance code, resolves #2686 .
...
https://github.com/Project-OSRM/osrm-backend/pull/2685/files
fixes an issue where we did
elongate(fstStep, sndStep);
instead of
newStep = elongate(fstStep, sndStep);
we didn't get any warnings.
The only way to trigger a warning here is to use
```cpp
__attribute__((warn_unused_result))
```
This changeset does exactly that: for the new guidance code prone to
these kind of issue we add such an attribute to the declaration.
2016-08-03 12:26:07 +02:00
Moritz Kobitzsch
0d36d472c9
change paradigm of merge to only emit on motorway-like roads
2016-07-30 23:55:39 +02:00
Daniel Patterson
280b000f07
Include datasources for each segment in route annotation.
2016-07-27 15:51:11 -07:00
Patrick Niklaus
c7a1576100
Apply clang-format again
2016-07-26 15:00:58 +02:00
Daniel J. Hofmann
748fd3efa9
Remove lanes from roundabouts, closes #2626
...
After half a day of looking at the tagging and the data came to the
following conclusion:
We can't keep the user to the innermost / outermost lanes depending on
the exit the route takes: we found situations where both heuristics were
wrong.
Even on popular roundabouts the tagging is often wrong or in the best
case not present at all.
There are at least two different ways to interpret roundabout
indications: 1/ where e.g. a right arrow on the lane indicates turn
restrictions for the roundabout and the need to take this lane to exit
the roundabout to the right (possibly skipping multiple exits) and 2/
where a right arrow just means this is a lane in a immediate right turn.
Example: Australia marks lanes with arrows that seem to indicate
"angles you can exit the roundabout from", for example, these two ways:
- http://www.openstreetmap.org/way/320941710
- http://www.openstreetmap.org/way/42918021
Whereas Germany marks lanes with "directions you can travel in these
lanes immediately after entering the roundabout":
- http://www.openstreetmap.org/way/52578338
These two different interpretations of how to draw the arrows on the
roads mean we have conflicting solutions to "which lanes can you use to
take exit B from entry A" based on locality.
Continuing to tag ways based on lane markings is no problem, but
unfortunately, we can't reliably resolve good advice for navigation
system users (like "use the inside lane to take the second exit at the
roundabout"), there are too many situations that would generate bad
instructions (instructions that tell users to go into a lane they
shouldn't use).
2016-07-25 19:29:55 +02:00
Moritz Kobitzsch
9e323d2d42
improve sliproad / fork handling
2016-07-22 15:16:59 +02:00
Moritz Kobitzsch
41ba20ca9a
switch api format to new structure
2016-07-21 17:42:10 +02:00
Moritz Kobitzsch
b25011ee60
fix use-lane handling
2016-07-21 16:37:54 +02:00
Moritz Kobitzsch
0e017a6ce5
collapse use-lane instructions if possible
2016-07-20 10:23:26 +02:00
Moritz Kobitzsch
2431e15ffa
mark second case as todo, see https://github.com/Project-OSRM/osrm-backend/issues/2661
2016-07-20 09:55:30 +02:00
Moritz Kobitzsch
396add1e9d
make roundabout maneuvers continuous with respect to lane changes
2016-07-20 09:55:30 +02:00
Moritz Kobitzsch
8831ca2f32
fix roundabouts with traffic lights
2016-07-19 14:49:09 +02:00
Daniel J. Hofmann
e76e39a398
Improves Lane Handling for Multi-Hop Roundabout Instruction
...
This changeset implements Lane Anticipation on roundabouts, delimited
by enter / leave step pairs. It does not handle lane anticipation
within a roundabout.
Lane anticipation happens on the granularity of a valid roundbaout:
We discard partial roundabout (enter without exit or exit without
enter) or data issues (no roundabout, exit before enter).
Related:
- https://github.com/Project-OSRM/osrm-backend/issues/2626 for lanes
within a roundabout
- https://github.com/Project-OSRM/osrm-backend/issues/2625 for handling
going straight in lane anticipation
2016-07-13 10:44:12 +02:00
Moritz Kobitzsch
f4db79fe9b
fix obvious turn collapsing for straight turns
2016-07-06 10:50:47 +02:00
Moritz Kobitzsch
6265b8fa77
fix broken assertion
2016-06-28 10:30:02 +02:00
Daniel Patterson
ec02cdc4cc
Use mmap instead of read - it's a lot faster here.
...
Also clean up construction of STRONG_TYPEDEF so that it can be
packed properly in structs (this explains all the () -> {}) changes
here.
2016-06-27 17:24:30 -07:00
Moritz Kobitzsch
5905708111
expose lanes as enums, adjusted for comments
2016-06-27 11:12:02 +02:00
Moritz Kobitzsch
5d91b759d1
Implement Turn Lane Api
2016-06-27 10:07:48 +02:00
Daniel J. Hofmann
ec0a1a4ab1
Anticipate Lane Changes
2016-06-27 10:07:43 +02:00
Moritz Kobitzsch
efa29edf09
basic turn lane handling
2016-06-27 10:07:41 +02:00
Moritz Kobitzsch
2a05b70dfc
reduce number of end-of-road instructions in unnecessary cases
2016-06-26 16:40:15 +02:00
Moritz Kobitzsch
4629a20fe4
improve handling of obvious for end-of-road situations
2016-06-24 12:05:42 +02:00
Daniel Patterson
6dedd9cb72
Fix segfault when route includes very short segments.
2016-06-22 14:48:57 -07:00
Patrick Niklaus
fddc19e98d
Fix regressed formating
2016-06-21 22:25:48 +02:00
Moritz Kobitzsch
2868f702a5
fix issues with roundabouts and intersections and sliproads
2016-06-21 16:56:57 +02:00
Michael Krasnyk
8c378191df
Fix omitting the last point's coordinates in the geometry field
2016-06-21 07:06:43 +02:00
Moritz Kobitzsch
306744e5cb
fix roundabout-handling when name changes
2016-06-17 11:02:14 +02:00
Moritz Kobitzsch
3ca32898a1
move guidance decision into debug header
2016-06-15 11:30:30 +02:00
Patrick Niklaus
0fc823041e
Removed debug code
2016-06-13 17:57:33 +02:00
Moritz Kobitzsch
2b5355edca
improve slipway handling to allow multiple styles of turn lanes / turn roads
2016-06-13 11:56:50 +02:00
Vladimir Kurchatkin
6bdfe68897
Add feature name to vector tiles ( #2488 )
2016-06-10 11:15:14 -07:00
Moritz Kobitzsch
312e86eb58
handle merge on collapsed instructions
2016-06-06 11:55:14 +02:00
Moritz Kobitzsch
1dfdb38d4a
improve collapse-handling
2016-06-06 10:05:18 +02:00
Lauren Budorick
a4ac07866a
Recreate feature/expose_node_ids
2016-06-02 14:27:25 +02:00
Daniel J. Hofmann
448f8377fb
Sync with Clang38 Format
2016-06-02 13:14:33 +02:00
Daniel J. Hofmann
6edc565c01
Add destinations API feature
2016-06-02 12:00:23 +02:00
Moritz Kobitzsch
bdc66049a5
fix INVALID_NAME_ID vs INVALID_NAMEID -> EMPTY_NAMEID
2016-06-01 23:19:26 +02:00
Patrick Niklaus
0a53775fb3
Expose pronunciation in RouteStep
...
Uses name:pronunciation by default for cars.
2016-06-01 23:17:57 +02:00
Patrick Niklaus
6e16eab6ec
Format with clang-format 3.8
2016-05-27 21:05:04 +02:00
Patrick Niklaus
d6de2ca71c
Really place annotations in RouteLeg and not Route
2016-05-27 16:46:28 +02:00
Daniel Patterson
3d03797e53
Distinguish between offramps and sliproads.
2016-05-26 21:31:04 +02:00
Moritz Kobitzsch
797f2a196b
handle intersection-access for roundabout correctly
2016-05-26 16:25:26 +02:00
Michael Krasnyk
b5225f07cb
Fix #2413 by converting enums to unsigned char constants
2016-05-23 18:33:24 +02:00
Patrick Niklaus
d1bc32fb31
Add comments and debug code
2016-05-20 18:52:29 +02:00
Patrick Niklaus
f9f87f25d4
Use elogate() to fixup geometry when merging steps, fixes #2424
2016-05-20 18:52:29 +02:00
Patrick Niklaus
57321979ae
Remove leftover debugging code
2016-05-19 16:44:31 +02:00
Patrick Niklaus
95af72c70c
Make intersection backwards compatible
...
For `depart` and `arrive` `step.intersections[0].{bearings|entry}` will have
only one entry.
2016-05-19 16:44:31 +02:00
Moritz Kobitzsch
98fe0badbe
fix loading in storage
2016-05-19 16:44:31 +02:00
Moritz Kobitzsch
9c8bf820de
adjusted to in/out. only emit one of them for depart/arrive
2016-05-19 16:44:31 +02:00
Moritz Kobitzsch
4d9aa65e78
intersection classes with variable degree of discretization
2016-05-19 16:44:31 +02:00
Moritz Kobitzsch
ba074b0116
initial version of intersection classification
2016-05-19 16:43:46 +02:00
Moritz Kobitzsch
a9f674497a
emit turn-straight for obvious turns where the main road continues
2016-05-18 19:54:53 +02:00
Daniel Patterson
fa525ad610
Return an array with meta-data for each coordinate.
...
Currently supports duration and distance for each coordinate.
This is particularly useful in map-matching, comparing how
a trip progresses compared to a real GPS trace that is
map-matched.
2016-05-12 01:11:09 +02:00
Moritz Kobitzsch
6018fcf490
Introduce on_ramp and off_ramp, deprecate ramp
2016-05-04 12:09:54 +02:00
Moritz Kobitzsch
1e6888c0d3
fix new-name on empty strings
2016-05-04 10:52:55 +02:00
Patrick Niklaus
a4f1dc536d
Trip plugin does not have a continue_straight parameter, use false
2016-05-03 21:13:22 +02:00
Patrick Niklaus
212ad94c90
x2 speedup in Douglas Peucker by projecting all coordinates first
2016-05-02 19:50:33 +02:00
Patrick Niklaus
378d9f4112
Remove debug ouput from post-processing
2016-05-02 19:47:59 +02:00
Moritz Kobitzsch
59168e21b4
remove unnecessary warnings, initialize correctly
2016-05-02 17:29:37 +02:00
Patrick Niklaus
83482afa02
Fix naming conventions of TrajanSCC
2016-05-02 17:25:58 +02:00
Patrick Niklaus
5ce465ce23
Remove extra ; in PostProcessing
2016-05-02 17:25:58 +02:00
Patrick Niklaus
930f6df2cb
Fixes #2335 , map matching was using shortest path with uturns disabled
2016-04-28 12:02:31 +02:00
Moritz Kobitzsch
a154d71841
enable suppression name suffix changes
2016-04-27 18:10:56 +02:00
Moritz Kobitzsch
fddb035539
suppress name additions (xxx -> xxxbridge)
2016-04-27 12:13:42 +02:00
Moritz Kobitzsch
1544a08ea2
introduce roundabout-turns into instruction set
2016-04-27 12:13:42 +02:00
Moritz Kobitzsch
c5e1742150
fix post-processing for local paths, fixes #2310
2016-04-26 13:15:46 +02:00
Moritz Kobitzsch
754bc2d274
handle combined turns at segregated roads
2016-04-26 13:13:20 +02:00
Moritz Kobitzsch
e59a7926a2
roundabout for segregated entry roads
2016-04-26 01:01:09 +02:00
Moritz Kobitzsch
7b32d3184c
remove unused instruction types
2016-04-25 19:24:59 +02:00
Daniel J. Hofmann
e04baef3bb
Do not copy geometries in loop
2016-04-25 12:12:32 +02:00
Patrick Niklaus
da6dbd2159
Revert "Removes summary from legs property"
...
This adds the summary back to the RouteLeg, it now depends on if
`steps=true`.
This reverts commit eaf9993dd9
.
2016-04-21 22:39:16 +02:00
karenzshea
58c13d2c07
remove movable bridge travel mode references
2016-04-19 12:59:33 -04:00
Patrick Niklaus
6979763292
Refactor the vector tile constants
2016-04-15 14:48:21 +02:00
Patrick Niklaus
589767fe6d
uturns -> continue_straight
2016-04-12 23:16:02 +02:00
Patrick Niklaus
dbd4ecf89b
Remove boost::irange
2016-04-12 18:11:08 +02:00
Patrick Niklaus
7416653874
Force correct type deduction for irange on windows
2016-04-12 18:11:08 +02:00
Patrick Niklaus
5052c4ae3a
Move projection function into own header and inline
2016-04-09 17:31:36 +02:00
Patrick Niklaus
4886d46d91
Use DouglasPeucker with squaredEuclideanDistance
2016-04-09 17:26:27 +02:00
Moritz Kobitzsch
dfd180a292
fixing unit tests
2016-04-08 11:21:14 +02:00
Moritz Kobitzsch
fa0a5040e5
adding tests for guidance
2016-04-08 10:43:22 +02:00
Moritz Kobitzsch
4d864b8267
fix warnings in compilation on clang
2016-04-06 18:44:42 +02:00
Moritz Kobitzsch
f2443c64db
adds distinction between rotaries/rounabouts
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
eaf9993dd9
Removes summary from legs property
2016-04-05 22:59:14 +02:00
Patrick Niklaus
849baea544
Fix uturn detection in match plugin
2016-04-05 22:59:14 +02:00
Moritz Kobitzsch
ef1fb08723
fix cucumber tests and issues
2016-04-05 22:59:14 +02:00
Daniel Patterson
97722adbfa
Adjust threshold when trimming steps (needs to be bigger).
...
Also, when trimming the last step, we need to copy name values from the new next-to-last step, otherwise
we can still end up with an arrive step on a different road to the last maneuver.
2016-04-05 22:59:14 +02:00
Patrick Niklaus
2c4ba90abb
Remove leftover hello_world and timestamp plugins
2016-04-05 22:59:14 +02:00
Patrick Niklaus
30a9bc3179
Fix mathematical assumptions in StaticRTree
...
StaticRTree now uses projected coordinates internally. That means we can
use a euclidean distance measure (squared distance) for sorting the
query queue.
2016-04-05 22:59:14 +02:00
Moritz Kobitzsch
f9350a276c
fix same segment routes
2016-04-05 22:59:14 +02:00
Moritz Kobitzsch
cd9addf0e2
Removed debug code
2016-04-05 22:59:14 +02:00
Moritz Kobitzsch
2219b6507c
correctly handle roundabouts in a wide set of special cases
2016-04-05 22:59:14 +02:00
Moritz Kobitzsch
5e6d638c6f
perform zero-length segment removal
2016-04-05 22:59:14 +02:00
Daniel Patterson
cc09df1961
Use correct perpendicular distance measure when simplifying line geometries.
2016-04-05 22:59:14 +02:00
Patrick Niklaus
fda4656630
Implement re-enabling of PhantomNode directions after bearing filtering
2016-04-05 22:59:14 +02:00
Patrick Niklaus
f4cfde719d
Round integers to remove fake precision
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
61c9c69718
Make unit tests compile again after rebasing
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
5beaab97da
Make Tile plugin validate its parameters, fixes #2109
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
843a4b8eae
Make Route plugin validate its parameters
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
9ec46222e3
Makes Nearest plugin adhere to v5 spec for precondition violations, fixes #2108
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
224c66e0dc
Makes table plugin adhere to v5 spec for limit violations, fixes #2100
2016-04-05 22:59:14 +02:00
Daniel J. Hofmann
3c5f6bd8ac
Makes hint Equatable and Printable for tests
2016-04-05 22:58:32 +02:00
Daniel J. Hofmann
b6b59e5c08
Make Hint encoding safe for passing them as GET parameter in URLs
...
Thanks @TheMarex for flagging this!
2016-04-05 22:58:32 +02:00
Daniel J. Hofmann
a7aa27c87c
Completely re-write base64 logic, make API suck less in doing so
2016-04-05 22:58:32 +02:00
Daniel J. Hofmann
f948380fa2
Object Encoder -> Base64, kill false dependencies while doing so
2016-04-05 22:58:32 +02:00
Daniel J. Hofmann
79cf1880fc
Adapts Hint encoding and decoding to new fixed data facade
2016-04-05 22:58:32 +02:00
Aleksei Potov
419cf9e2b0
compilation error on debian jessie with boost 1.54
2016-04-05 22:58:32 +02:00
Daniel Patterson
95c78eac9c
Fix boost geometry constructor.
...
Versions older than 1.58 don't support the initializer-list form.
2016-04-05 22:58:32 +02:00
Moritz Kobitzsch
51a4cf5e46
syncronize geometry and steps after post-processing
2016-04-05 22:58:32 +02:00
Moritz Kobitzsch
2472c5d6a1
added list of intersections to the step-maneuver, not in api so far
2016-04-05 22:58:32 +02:00
Moritz Kobitzsch
59fbb289b9
fix initial maneuvers
2016-04-05 22:58:32 +02:00
Moritz Kobitzsch
e82bc20422
post processing moved onto route-steps, looses sync with geometry segments
2016-04-05 22:58:32 +02:00
Patrick Niklaus
cb8bfa027e
Only allow to specify the common base path
2016-04-05 22:58:32 +02:00
Patrick Niklaus
e10e8910f3
Use global uturns parameter.
...
Instead of previously per-via settings like uturns=true;false;true;; it
now only supports a global setting uturns=true.
2016-04-05 22:58:32 +02:00