---
metadata:
  - name: generator
    content: Diplodoc Platform v5.59.0
alternate:
  - https://yandex.kz/routing/doc/en/vrp/options-geozones.md
  - https://yandex.kz/routing/doc/kk/vrp/options-geozones.md
  - https://yandex.kz/routing/doc/ru/vrp/options-geozones.md
  - href: https://yandex.kz/routing/doc/ru/vrp/options-geozones.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.kz/routing/doc/ru/vrp/llms.txt
    rel: describedby
title: Яндекс Маршрутизация — атрибуты и опции — учет геозон
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.kz/routing/doc/ru/llms.txt


# Учет геозон

Геозоны можно создавать в [интерфейсе](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-interface) и затем использовать при планировании через Excel или API. Также геозоны можно задавать непосредственно в [запросе API](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-api).

## Игнорирование зон {#ignore-zones}

Включение опции `options.ignore_zones` позволяет отменить все ограничения, связанные с геозонами. Подробнее см. [Геозоны](https://yandex.kz/routing/doc/ru/vrp/properties-of-vehicles.md#geozones) и [Несовместимые зоны](#incompatible-zones).

```json
"options": {
    "ignore_zones": true
}
```

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

## Несовместимые зоны {#incompatible-zones}

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

- Из-за особенностей дорог. Например, заказы, находящиеся на разных берегах реки или по разным сторонам железной дороги, лучше не выполнять в одном рейсе, чтобы сократить использование мостов и переездов.
    
- Из-за особенностей тарификации. Например, чтобы разделить заказы по направлениям.
    
В таких случаях можно использовать геозоны и указывать их несовместимость на листе **Options** в поле `incompatible_zones.N`, где N — номер набора несовместимых зон (наборов может быть несколько, нумерация начинается с 0). 

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

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

Несовместимые зоны можно также задавать для [отдельных курьеров](https://yandex.kz/routing/doc/ru/vrp/properties-of-vehicles.md#incompatible-geozones).

{% note info %}

Чтобы разрешить курьерам посещать отдельные комбинации несовместимых зон в одном маршруте, используйте параметр `compatible_zones`. Подробнее см. [Управление совместимостью геозон](#managing-geozone-compatibility).

{% endnote %}

**Пример 1**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/options_zones1.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/c3b82854-1f10384c-e276f36d-67b8138f) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/c3b82854-1f10384c-e276f36d-67b8138f) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#c3b82854-1f10384c-e276f36d-67b8138f)

**Пример 2**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/options_zones2.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/7d7bfaa4-f7f13036-c23247bb-11ff5f4) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/7d7bfaa4-f7f13036-c23247bb-11ff5f4) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#7d7bfaa4-f7f13036-c23247bb-11ff5f4)


## Управление совместимостью геозон {#managing-geozone-compatibility}

<!-- source: ru/vrp/_includes/description-incompatible-zones.md -->
Вы можете управлять совместимостью геозон — запретить доставку в несовместимые геозоны, но сделать исключения для определенных комбинаций. Например, это полезно, когда курьерам в целом запрещено перемещаться между отдаленными районами, но разрешено посещать соседние, которые связанны одной магистралью.
<!-- endsource: ru/vrp/_includes/description-incompatible-zones.md -->

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

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

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

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

Список таких зон можно задать не только для всего решения, но и для [конкретного курьера](https://yandex.kz/routing/doc/ru/vrp/properties-of-vehicles.md#managing-geozone-compatibility) — параметрами `vehicles.incompatible_zones` и `vehicles.compatible_zones`.

<!-- source: ru/vrp/_includes/priority-incompatible-zones.md -->
{% note info %}

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

{% endnote %}
<!-- endsource: ru/vrp/_includes/priority-incompatible-zones.md -->

#### Как это работает {#how-it-works}

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

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

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

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

{% cut "Запрос" %}

```json
"options": {
    "incompatible_zones": [
        [
            "north",
            "south",
            "west",
            "east"
        ]
    ],
    "compatible_zones": [
        [
            "north",
            "east"
        ]
    ]
}
```

{% endcut %}

**Пример**

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

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

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

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

Для этого:

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

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

   1. `Mitino` и `Tushino`.
   
   1. `Krylatskoye` и `Strogino`.

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

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

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

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

[Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/bd1a71d3-7e6efcaf-5fcf98ef-6332b8ca) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/bd1a71d3-7e6efcaf-5fcf98ef-6332b8ca) ⋅ [Открыть на карте](https://courier.yandex.ru/mvrp-map#bd1a71d3-7e6efcaf-5fcf98ef-6332b8ca)

## Исключенные зоны {#avoid-zones}

Через некоторые участки (например, дороги в горной местности, мосты, переправы) курьерам проезжать не следует. Запрет может действовать постоянно или только в определенное время. 

Чтобы обозначить такие участки:

1. Определите зоны в [интерфейсе](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-interface) или [через API](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-api).

1. На листе **Options** при планировании задайте условия в зависимости от времени действия запрета:

    - постоянно — в поле `avoid_zones` укажите названия зон через запятую; 
    - временно — задайте расписание, где:

        - `avoid_zones_schedule.N.id` — название зоны;
        - `avoid_zones_schedule.N.schedule.N` — временной интервал, в который нужно ограничить посещение.

{% note info "Различие между запрещенными и исключенными зонами" %}

Геозоны, в которых курьерам запрещено выполнять заказы, указываются на листе **Vehicles** в поле `forbidden_zones`, см. [Определение геозон](https://yandex.kz/routing/doc/ru/vrp/properties-of-vehicles.md#geozones). Но проезжать через эти зоны курьеры могут. Зоны, перечисленные на листе **Options** в поле `avoid_zones`, запрещены даже для проезда курьеров.

{% endnote %}

Для определения исключенных зон через [интерфейс](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-interface) или [API](https://yandex.kz/routing/doc/ru/vrp/geozones.md#geozones-api) можно использовать в сумме не больше 300 точек. Чтобы соблюсти лимит, рекомендуется:

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

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

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

{% cut "Скриншот" %}

![](_images/avoid-zones-example.png)

{% endcut %}

{% note warning %}

Рекомендуем проектировать исключенные зоны так, чтобы они пересекали как можно меньше дорог. При подсчете сервис учитывает суммарное количество дорог, попадающих в зоны из `avoid_zones`, а также пересечения с платными дорогами при включенном объезде [платных участков](https://yandex.kz/routing/doc/ru/vrp/avoid-tolls.md).

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

{% endnote %}


**Пример 1**

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-bridge1.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/6585d328-8dd053fd-5a340957-46780675) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/6585d328-8dd053fd-5a340957-46780675) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#6585d328-8dd053fd-5a340957-46780675)

**Пример 2**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-bridge2.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/ddcd5de3-65f79905-c676b55e-2656ca9d) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/ddcd5de3-65f79905-c676b55e-2656ca9d) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#ddcd5de3-65f79905-c676b55e-2656ca9d)

**Пример 3**

Те же условия, что в примере 1, но в файле планирования на листе **Options** заданы временные окна, в которые посещать зону `Bridge` не следует — с 10:00 до 10:15 и с 17:00 до 17:15.

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-bridge3.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/019e5478-df3e-8719-8cb3-57d1eb385000) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/019e5478-df3e-8719-8cb3-57d1eb385000) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#019e5478-df3e-8719-8cb3-57d1eb385000)


## Распределение проблемных заказов {#haversine-fallback}

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

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

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

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

**Пример 1**

Нужно выполнить 5 заказов, один из которых расположен на острове. Маршрут к этому заказу проложен через мост. Длина маршрута составила 46,08 км. Длина пути до заказа 5 — 5,78 км, путь к заказу проложен по мосту, это видно в [режиме «по дорогам»](https://yandex.kz/routing/doc/ru/vrp/interface-result.md#routes).

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-1.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/44c31341-71d5d556-1e9fa447-b3671c24) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/44c31341-71d5d556-1e9fa447-b3671c24) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#44c31341-71d5d556-1e9fa447-b3671c24)

**Пример 2**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-2.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/84c366cd-36541ad6-531455b6-e238d989) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/84c366cd-36541ad6-531455b6-e238d989) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#84c366cd-36541ad6-531455b6-e238d989)

**Пример 3**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/avoid-zones-3.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/71e6ef2b-d40ffc6d-cc7cf78e-7452d0c2) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/71e6ef2b-d40ffc6d-cc7cf78e-7452d0c2) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#71e6ef2b-d40ffc6d-cc7cf78e-7452d0c2)

**Пример 4**

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

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

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/haversine-edge-1.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/2e093170-d496b523-f6d6ae9a-c28263d6) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/2e093170-d496b523-f6d6ae9a-c28263d6) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#2e093170-d496b523-f6d6ae9a-c28263d6)

<!-- source: ru/vrp/_includes/feedback.md -->
<a href="feedback">
  <span class="button">Написать в службу поддержки</span>
</a>




<!-- source: ru/_includes/neuroexpert.md -->



<!-- endsource: ru/_includes/neuroexpert.md -->
<!-- endsource: ru/vrp/_includes/feedback.md -->
