Учет геозон

Геозоны можно создавать в интерфейсе и затем использовать при планировании через Excel или API. Также геозоны можно задавать непосредственно в запросе API.

Игнорирование зон

Включение опции options.ignore_zones позволяет отменить все ограничения, связанные с геозонами. Подробнее см. Геозоны и Несовместимые зоны.

"options": {
    "ignore_zones": true
}

При планировании через Excel опция ignore_zones задается в интерфейсе Планирования на вкладке НастройкиУчитывать зоны. Значению поля ignore_zones = true соответствует нажатая кнопка Нет.

Несовместимые зоны

При планировании может потребоваться распределить заказы по разным рейсам:

  • Из-за особенностей дорог. Например, заказы, находящиеся на разных берегах реки или по разным сторонам железной дороги, лучше не выполнять в одном рейсе, чтобы сократить использование мостов и переездов.

  • Из-за особенностей тарификации. Например, чтобы разделить заказы по направлениям.

В таких случаях можно использовать геозоны и указывать их несовместимость на листе Options в поле incompatible_zones.N, где N — номер набора несовместимых зон (наборов может быть несколько, нумерация начинается с 0).

Заказы, относящиеся к несовместимым геозонам, не могут выполняться в одном рейсе. При планировании заказы разделяются по разным рейсам, если у них есть по крайней мере одна несовместимая зона.

"options": {
    "incompatible_zones": [
        [
            "zone2",
            "zone3"
        ]
    ]
}

Несовместимые зоны можно также задавать для отдельных курьеров.

Примечание

Чтобы разрешить курьерам посещать отдельные комбинации несовместимых зон в одном маршруте, используйте параметр compatible_zones. Подробнее см. Управление совместимостью геозон.

Пример 1

В примере заданы несовместимые геозоны zone1 и zone2, заказы в которых нельзя выполнять в одном рейсе. При этом заказ 2 находится внутри zone1, заказ 4 внутри zone2. Все заказы обслуживает один автомобиль.

В результате автомобиль выполняет два рейса.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Те же условия, что в примере 1, но в интерфейсе при планировании включено НастройкиУчитывать зоныНет.

В результате автомобиль выполняет все заказы за один рейс.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Управление совместимостью геозон

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

Для этого используйте пару параметров:

  • options.incompatible_zones — задает список зон, которые нельзя посещать в одном маршруте всем курьерам;

  • options.compatible_zones — задает список зон, которые можно совмещать, даже если они попали в список несовместимых.

Параметры работают только в паре — options.compatible_zones отменяет ограничения из options.incompatible_zones.

Список таких зон можно задать не только для всего решения, но и для конкретного курьера — параметрами vehicles.incompatible_zones и vehicles.compatible_zones.

Примечание

Параметры vehicle.incompatible_zones и vehicle.compatible_zones имеют более высокий приоритет, чем options.incompatible_zones и options.compatible_zones.

Как это работает

  1. В options.incompatible_zones перечислите зоны, которые несовместимы друг с другом.

  2. В options.compatible_zones укажите совместимые зоны.

  3. Алгоритм сначала применит запрет, а затем «отменит» его для комбинаций из списка совместимых.

Например, нельзя посещать в одном рейсе удаленные районы: Север, Юг, Запад и Восток. При этом в качестве исключения можно совместить Север и Восток, так как их связывает скоростная магистраль.

Запрос
"options": {
    "incompatible_zones": [
        [
            "north",
            "south",
            "west",
            "east"
        ]
    ],
    "compatible_zones": [
        [
            "north",
            "east"
        ]
    ]
}

Пример

Курьеры доставляют заказы в разные районы города. Эти районы заданы геозонами: Krylatskoye, Strogino, Tushino, Mitino и Chertanovo.

Чтобы исключить долгие переезды, все 5 районов несовместимы между собой. При этом есть совместимые геозоны:

  • соседние районы — Mitino и Tushino;

  • быстрый маршрут по МКАД — Krylatskoye и Strogino.

Для этого:

  1. В options.incompatible_zones указаны несовместимые геозоны: Krylatskoye, Strogino, Tushino, Mitino и Chertanovo.

  2. В options.compatible_zones указаны геозоны, которые можно посетить:

    1. Mitino и Tushino.

    2. Krylatskoye и Strogino.

В результате планирования:

  • район Chertanovo не попадает в маршруты с другими районами;

  • заказы из Mitino и Tushino объединены в один маршрут;

  • заказы из Krylatskoye и Strogino объединены в один маршрут.

Запрос API (JSON)Ответ APIОткрыть на карте

Исключенные зоны

Компания может запретить курьерам проезжать через определенные геозоны. Это могут быть, например, дороги с высокой аварийностью в горной местности, опасные мосты, переправы и т. п. Такие зоны можно определить в интерфейсе или через API и при планировании перечислить их названия через запятую на листе Options в поле avoid_zones.

Различие между запрещенными и исключенными зонами

Геозоны, в которых курьерам запрещено выполнять заказы, указываются на листе Vehicles в поле forbidden_zones, см. Определение геозон. Но проезжать через эти зоны курьеры могут. Зоны, перечисленные на листе Options в поле avoid_zones, запрещены даже для проезда курьеров.

Для определения исключенных зон через интерфейс или API можно использовать в сумме не больше 300 точек. Чтобы соблюсти лимит, рекомендуется:

  • задавать геозоны в форме треугольника;

  • выделять не всю зону, а только контрольно-пропускные пункты и въезды.

Например, чтобы запретить движение по мосту, не нужно выделять территорию всего моста. Достаточно добавить геозону треугольной формы на въезд.

Скриншот

Важно

Рекомендуем проектировать исключенные зоны так, чтобы они пересекали как можно меньше дорог. При подсчете сервис учитывает суммарное количество дорог, попадающих в зоны из avoid_zones, а также пересечения с платными дорогами при включенном объезде платных участков.

В случае превышения технического лимита пересечений маршруты не построятся.

Пример 1

Курьер выполняет 10 заказов за 2 смены. Его маршрут пересекает мост Лужники. В файле планирования на листе Options в поле avoid_zones исключенные зоны не указаны.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Те же условия, что в примере 1, но в файле планирования на листе Options в поле avoid_zones указана исключенная зона Bridge. На карте она обозначена с помощью трех точек. В интерфейсе планирования включена опция Учитывать геозоны.

В результате маршрут курьера строится так, чтобы избежать зоны Bridge.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Распределение проблемных заказов

В некоторых случаях проложить маршрут к заказу по дорогам не получится, например:

  • заказ находится в недоступном месте;
  • на пути расположены исключенные геозоны.

Если доставка по дорогам невозможна, заказ все равно попадет в запланированный маршрут, но путь к нему будет проложен «по воздуху». Длина отрезка маршрута и время в пути при этом увеличатся в 5 раз. В ответе API для недоступного заказа будет указан параметр route.node.haversine_edge = true.

Чтобы избежать такого планирования, на листе Options задайте параметр haversine_fallback (options.haversine_fallback в API) со значением false (по умолчанию — true). В этом случае заказы будут попадать в нераспределенные.

Пример 1

Нужно выполнить 5 заказов, один из которых расположен на острове. Маршрут к этому заказу проложен через мост. Длина маршрута составила 46,08 км. Длина пути до заказа 5 — 5,78 км, путь к заказу проложен по мосту, это видно в режиме «по дорогам».

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

То же, что в примере 1, но все мосты до острова определены как исключенные зоны. По умолчанию параметр haversine_fallback на листе Options не задан, но равен true.

В результате путь к заказу 5 проложен «по воздуху». Длина маршрута составила 57,64 км, длина пути до заказа 5 — 10,35 км.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

То же, что в примере 2, но параметр haversine_fallback на листе Options равен false.

В результате заказ 5 стал нераспределенным.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 4

Курьер выполняет 10 заказов. Для заказа 3 по ошибке указаны координаты острова в Рыбинском водохранилище Ярославской области. Добраться на остров по дорогам невозможно.

В результате заказ 3 попадает в маршрут, но отрезок и время пути увеличиваются в 5 раз. В ответе API отображается параметр route.node.haversine_edge = true. Маршрут строится «по воздуху».

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Написать в службу поддержки