For example, if it says “bear left” versus “turn left”, what process is it using to make that nuanced judgment?
I see two possible ways:
a) It analyzes the map visually and has an algorithm to decide, based on the angle/curve/etc, which way to describe the turn.
b) Every place where two roads meet has metadata keyed in, indicating what type of turn it is in each direction.
I think option (a) is too expensive to be done in real-time by the end-user’s GPS, so most likely if option (a) is used, it’s done periodically on the server side to generate metadata as in option (b). And then perhaps this metadata is hand-checked by a person, and things the analysis gets wrong are overridden by a person, but all of this is just speculation on my part.
This question came up when some turn-by-turn directions incorrectly said to “bear left” at a standard, right angle intersection. I wondered if someone keyed something in wrong or if there is some little blip in the way the map was drawn at the intersection that we wouldn’t visually detect, but threw off the turn-by-turn.
I expected to easily find an article spelling it out, but I haven’t been able to and it’s driving me crazy not knowing for certain!
This depends on what navigation software you’re using, but I have some experience editing the Waze map. The way it works on Waze is that your phone sends the server your desired start and end points, and the server responds with a list of all the intersections you need to traverse in order. (This is actually a series of road segment junctions, wherever the map editors joined two road pieces together). These intersections can contain metadata on how to announce specific turns, but generally don’t because there’s an algorithm that looks at the angle the segments meet at and automatically decides how to describe the turn. The places I’ve seen it manually overridden include intersections where two divided highways meet at an angle far enough from 90° that it gets confused about how to announce a left vs a u-turn. I’ve also seen forks in the road where the side road requires less of a turn than continuing on the main road and the algorithm gives ambiguous instructions, like “continue straight” meaning turn onto the side road.
Edit: On your point about non-visually noticeable “blips”. This is also pretty common when roads change width right at an intersection (e.g. adding turn lanes). The Waze map doesn’t include road width in its data, so editors usually draw it down the centerline of the road. If the road changes width suddenly, you have to choose between keeping the line straight-ish, or faithfully following the centerline, which can mean that if you were to zoom way in there can be weird jumps and sharp angles that get smoothed out by the visual renderer
My Spanish is mediocre, but typically can get me from A to B without a lot of misunderstandings. I was driving back from the Mall in San Juan, Puerto Rico, and my very British GPS decided to route me via “Calle Ajore.” Now everybody uses abbreviations for the word “street” - and in Spanish uses “C.” For “Calle” just like English uses “St.”
So, I’m battling traffic, and Lady Winifred Windsor the GPS advises me to “Turn right to see a whore.”
Lady Winifred was just looking out for your mental health after she detected your road rage setting in.
It doesn’t have to analyze the map visually, the graphical map you see on your screen is the part that’s generated locally by your device. The map data your device receives is already in vector form, which is a mathematical list of angles, line lengths etc.
Sorry, that’s what I meant but just wanted to make a clear delineation between the data that plots out the roads on the map and the other metadata that may be tacked onto that. I wasn’t trying to suggest it actually looks at the rendered map output on the screen.
Then i don’t understand your question
I think maybe i get your question. I believe you’re asking:
“How does navigation software decide which task you should do at any point? Is the specific maneuver task hardcoded into the map, or does the device itself decide which task it should tell you to do?”
If that’s the question then the answer is almost entirely the device (or server the device is connected to) decides on the fly. There are generally no navigation instructions hardcoded into the map data (unless there’s a particularly tricky intersection). The navigation software will simply be programmed to use specific task words for each angle of an intersection. Like:
If route angle = -5 to 5 degrees, then say “turn right”
If route angle = 6 to 85 degrees, then say “bear right”
I think it’s analyzing the angles between the curves dynamically, with manual overrides in some places where they have been added. I don’t think this would be very computationally expensive to do on the client side, but it could be cached as metadata.
I imagine it’s done by hand and your experience with the mistake was just that.
I remember the early days of this tech where the program controlling the voice output didn’t know how to distinguish between “Dr.”, the abbreviation for doctor, and “dr”, the abbreviation for drive. So it would tell you to turn onto Doctor Martin Luther King Doctor and other wacky things.
Mine likes to say “turn slightly left” for small bends and “keep left” for lanes.