Как Waze определяет инструкции на перекрестках

From Wazeopedia

Все ниже сказанное относится к поворотам направо в странах с правосторонним движением, для поворотов налево все строго симметрично. Инструкция «продолжайте движение» не отображается клиентом.

Определения

  • s-in — участок дороги перед перекрестком (с точки зрения проезжающего)
  • s-out — участок дороги после перекрестка (с точки зрения проезжающего)
  • s1,s2,…sN — все участки дорог примыкающие к перекрестку
  • «естественное продолжение» — участок дороги после перекрестка, для которого при подъезде со стороны s-in естественно считать, что направление движения не меняется.

Для того, что бы определить, является ли s-out «естественным продолжением» s-in, проверяются следующие условия:

  • если s-out имеет такой же тип дороги и название как и s-in он выбирается «естественным продолжением»
  • в ином случае рассматриваются s1, s2,.., sN (за исключением s-in и s-out). Один из них выбирается более естественным, чем s-out, при выполнении следующих условий:
  • этот участок дороги лучше соотносится с s-in, чем s-out (имеет то же название, что s-in, а s-out — нет, имеет тот же тип дороги, что s-in, а s-out — нет, при этом имя дороги имеет приоритет над типом)
  • угол между этим участком и s-in меньше, чем угол между s-in и s-out

Алгоритм

Алгоритм выбора инструкций проходит последовательно по списку условий, и как только условие выполняется, происходит выбор инструкции и алгоритм прекращает свое действие.

1. Если у перекрестка только 2 участка: инструкция — «продолжайте движение» При определенных условиях Т-перекресток может быть рассмотрен, как перекресток только с двумя участками (см. ниже)

2. Если угол между естественным продолжением и s-out больше 45 градусов (и меньше 180) инструкция — «поверните направо»

В предположении, что на хайвеях углы между участками меньше 45 градусов 3. Если s-out считается естественным продолжением s-in, то инструкция — «продолжайте движение»

4. Если s-in хайвей, а s-out — нет, то инструкция — «съезд справа»

5. Если s-in рампа, а s-out ни хайвей, ни рампа, то инструкция — «съезд справа»

6. Во всех остальных случаях инструкция — «держитесь правее»

Т-перекрести и дороги с односторонним движением

В некоторых случаях перекресток создан более чем двумя участками дорог, но маршрутный сервер рассматривает только два из них при конкретном пересечении перекрестка и поэтому инструкция будет «продолжайте движение».

В следующем примере перекресток залочен (все подходящие к нему участки дороги имеют статус «locked») и при движении с севера единственно возможный поворот направо будет считаться «естественным продолжением», а значит, инструкция будет «продолжайте движение».

http://world.waze.com/wiki/images/0/00/Right_turn_1.png

Как этим пользоваться

Вот конкретный перекресток трех улиц (с севера подходит улица Воровского, на северо-запад уходит улица Тургенева и на юго-восток — улица Хмельницкого):

http://waze.su/wp-content/uploads/2012/10/junction.png

Воровского-Тургенева — главная, Хмельницкого — второстепенная. Когда я ехал через этот перекресток в первый раз, моим штурманом был человек, который ни слова не сказал, что и как дальше, но по знакам и разметке было вполне естественно сделать поворот с Тургенева на Воровского, как-будто этого перекрестка не было вообще. Года через три, там же, уже успев все позабыть, я ехал с навигатором и он предложил мне повернуть направо. Я был несколько растерян, так как справа дорог вроде не было, но пару секунд хватило понять, какой маневр навигатор посчитал поворотом направо. И когда у меня у меня появились права на этот участок дороги, я так и нарисовал:

http://waze.su/wp-content/uploads/2012/10/option1.png

В таком виде, при движении с Воровского на Тургенева будет сформирована подсказка «поверните направо», так как однозначного «естественного продолжения» нет — углы между Воровского и Хмельницкого и между Воровского и Тургенева практически одинаковы.

А когда таки проехал с Вейзом по этому маршруту, опять на пару секунд задумался:  »где же здесь справа?». И в результате перерисовал:

http://waze.su/wp-content/uploads/2012/10/option2.png

Теперь подсказка — «продолжайте движение» (т.е. отсутствие таковой в клиенте), так как есть «естественное продолжение» — в данном случае, Воровского и Тургенева имеют одинаковый тип дороги, отличный от Хмельницкого и угол на перекрестке между Воровского и Тургенева практически отсутствует.

Понятно, что это пример как управлять подсказками, а не как правильно рисовать. Как правильно рисовать — понятие достаточно субъективное и в каждом конкретном случае требует своего подхода.