Project-OSRM / osrm-backend

Open Source Routing Machine - C++ backend
http://map.project-osrm.org
BSD 2-Clause "Simplified" License
6.42k stars 3.4k forks source link

Ideas to improve route instructions #684

Open svenluzar opened 11 years ago

svenluzar commented 11 years ago

Type of a way

For each instruction it would be helpful to know the type of a way, such that you can generate an instruction like

Notice: With the current bike profile you get the route instruction "{highway:cycleway}", if the way-name is unknown (see bicycle.lua#L189). But I think it would be better to know the type of a way for each instruction, because it can help to navigate the user more precise.

Roundabout

For a roundabout you only get the instruction number 11 (EnterRoundAbout) and this instruction marks the leave-point. In the code there are two instruction codes for enter (11) and leave (12) a roundabout (see TurnInstructions.h#L42). Hence I expected to get both codes (11 for an entrance and 12 for an exit). Is it a bug or a feature?

Furthermore many streets with bikeways are tagged like the following: The mappers added three lines for one logical street. One line for the bike-way on the left side, one line for the street itself and one line for the bike-way on the right side. E.g.: At a roundabout where a cyclist should leave onto second exit the above problem leads to the instruction leave roundabout onto fourth exit.

POIs for a route instruction

It would be helpful to know points of interest (POIs) near by an instruction, such that you can generate an instruction like

Realization-Idea: Define constants for a fixed set of POIs (bank, post office, ...) and use this constants in a route instruction to give a hint, if a POIs is nearby a turnout. The extractor could extract POIs nearby crossroads-nodes and could store the constant at the crossroad-node. The router must only output this constant, if a route goes along a crossroad.

Next Street

A navigation system should give a hint to the user, if he should turn left or right at the next crossroad. Therefore the navigation system must know, when a previous crossroad before was passed. For this previous crossroad does not exist a route instruction, if the user passed the crossroad straight on.

Realization-Idea: Introduce a field for each route instruction to store a distance (in meter) to the previous crossroad. if the user undercuts this distance to the next route instruction, we could output the desired message turn on the next crossroad.

Unknown instruction

With the profile bicycle you get sometimes an unknown instruction. It's a bug, isn't it? I think we should change the instruction in these cases to a more helpful message.

Wrong instructions

With the bicycle profile you get sometimes the instruction to go straight on, but in reality you must turn right or left. Reason: Sometimes bikeways start at the entrance of a crossroad and the router follows this ways (instruction go straight on), at the end of the crossroad the bikeway turns right (but no instruction is given).

I'm looking forward to implement these features, if the community agrees these enhancements. Feel free to comment my issue or to discuss the priority of the feature request.

emiltin commented 11 years ago

great input, thanks.

type of way: i think this would be nice, and easy to do.

roundabout: i agree it would be nice to split it into two instructions, enter and leave. some roundabouts are big, and it would be nice to have the distance to where leave the roundabout. regarding a single road being split into sevaral ways, i see how this could be an issue. perhaps we could think of grouping ways with the same name, when counting exists.

poi: nice idea, and especially well suited for bike routing where you go slow enough to notice such landmarks. it might be of less use for car routing? there was already some discussion about using landmarks at #440. the question is whether enough data is available in osm and it's possible to create a solutions that's general enough and scales well.

next street: makes sense to me, although it might be less reliable than the distance, since roads might be missing in osm, or it could be ambiguous due to small paths, split one-ways, intersections, etc. maybe grouping ways my name (like with roundabouts) could be considered.

Unknown instruction: i don't know why these would ever be useful. if you have concrete examples, i suggest you open a separate issue.

Wrong instructions: i think an concrete example with screenshot would be helpful. i suggest you open a separate issue.

svenluzar commented 11 years ago

@emiltin Thanks for your fast reply. I opened a separate issue for the unknown instruction (#685) and the wrong instructions (#686)

MoKob commented 8 years ago

We may look into adding information if no name is known. The type of way, except for ramps, probably will only clutter the instructions with unnecessary information. If you turn right, the turn onto a primary, secondary or tertiary does not matter. For minor roads, we might consider this at some point.

For roundabouts, we will remain at the single instruction. Given our new intersections, a frontend implementation can decide to issue two instructions for a roundabout. Our main response will remain at a single instruction.

Points of interest are on our radar, but are more likely to be considered only for walking or maybe for routing in areas where road names are not heavily used.

Next street can be done by now using our intersection classes for intermediate intersections.

Unknown/wrong instructions seem fixed by now.