«Куда мы доставим за 30 минут?», «Сколько клиентов живёт в пяти минутах езды от магазина?», «Куда может добраться бригада за час?» Круг на карте даёт неверный ответ на каждый из этих вопросов: радиус 3 км вдоль реки, железной дороги или промзоны означает совсем разное время в пути. Правильный инструмент — изохрона, зона, до любой точки которой можно добраться из центра за заданное время по реальной дорожной сети. Разберём, как построить такие зоны в Karty, как узнать, сколько людей в них живёт, и где расчёт нельзя принимать за гарантию.

Что такое изохрона и чем она отличается от радиуса

Изохрона (от греч. «равное время») — многоугольник, ограничивающий всё, что достижимо из точки за N минут. Её контур повторяет форму дорожной сети: вытягивается вдоль магистралей, «втягивается» там, где нет мостов, и не пересекает реки и железные дороги в местах, где нет переезда. В Karty изохроны считаются по открытым данным OpenStreetMap и ограничениям скорости на дорогах; доступны четыре режима передвижения:

Режим (costing)Для чего
auto (по умолчанию)Легковой автомобиль: зона доставки, выезд бригады, такси
truckГрузовой транспорт: учитывает ограничения для грузовиков
bicycleВелокурьеры, прокат самокатов и велосипедов
pedestrianПешая доступность: кафе, аптека, остановка, школа

За один запрос можно получить до трёх контуров (например, 5, 10 и 15 минут), каждый — не больше 60 минут.

Где это применяют

  • Зона доставки. Вместо круглого радиуса на странице доставки показывается реальная зона, куда курьер успеет за 30 или 45 минут. Это же ограничивает заказы вне зоны на стороне сайта.
  • Выбор места для точки. Для двух-трёх кандидатов на помещение строят одинаковые зоны на 10 минут пешком и сравнивают, сколько людей в них живёт. Это быстрее и дешевле, чем заказывать исследование.
  • Зона обслуживания. Сервисные службы, выездные мастера и охранные компании показывают клиенту, обслуживается ли его адрес.
  • Аналитика. Доля клиентов, живущих в 15 минутах от точки, — понятный показатель плотности сети.

Быстрый старт: зона в конструкторе встраивания

Проще всего увидеть, как это работает, в личном кабинете: раздел «Встраивание» → блок «Доп. функции» → переключатель «Зона доступности». В предпросмотре кликните в любое место карты — зона построится от этой точки.

Конструктор встраивания с включённой зоной доступности: профиль, время в пути и предпросмотр на карте
Рис. 1. Зона доступности в конструкторе: (1) переключатель функции, (2) профиль — «На машине» и другие, (3) время в пути, до трёх значений одновременно, (4) предпросмотр: клик по карте строит зону от этой точки, (5) готовая строка кода map.isochrone(...).

Результат — три вложенных зоны, окрашенные от центра к краю: самая близкая (5 минут) — зелёная, дальняя (15 минут) — красная. Ниже — тот же результат крупнее, для центра Барнаула.

Зоны доступности на автомобиле для 5, 10 и 15 минут вокруг центра Барнаула
Рис. 2. Изохроны для центра Барнаула: 5, 10 и 15 минут на автомобиле. Контур тянется вдоль магистралей и обходит реку и промзоны.

В эту же панель кабинет подставляет строку кода, которую остаётся скопировать на сайт. Обратите внимание: в панели есть предупреждение «Ориентировочно, без учёта пробок — по ограничениям скорости дорог». Оно вынесено в интерфейс не случайно, и к нему мы вернёмся.

Код: зона доступности на вашем сайте

На странице нужны скрипт виджета, контейнер и вызов метода isochrone:

<script src="https://kartrout.ru/widget/karty.js"></script>
<div id="map" style="width:100%;height:480px"></div>
<script>
  var map = Karty.map('map', { key: 'pk_live_ВАШ_КЛЮЧ', center: [83.7636, 53.3478], zoom: 11 });
  map.isochrone([83.7636, 53.3478], { minutes: [5, 10, 15], costing: 'auto' })
     .then(function (geojson) { console.log(geojson.features.length, 'зоны'); })
     .catch(function (err) { console.error(err.message); });
</script>

Метод рисует зоны на карте и возвращает Promise с исходным GeoJSON. Убрать зоны можно вызовом map.clearIsochrone() — удобно, если посетитель переключает режим «на машине / пешком». Для зоны от адреса клиента сначала геокодируйте адрес (поиск по адресу), а затем передайте координаты в isochrone.

Прямой запрос к API

Если нужна не картинка, а данные — например, чтобы проверить на сервере, попадает ли адрес в зону, — запрашивайте изохрону напрямую:

GET https://kartrout.ru/v1/isochrone?lon=83.7636&lat=53.3478&contours=5,10,15&costing=auto&key=pk_live_...

Ответ — стандартный GeoJSON FeatureCollection: по одному многоугольнику на каждое значение времени, у каждого в properties.contour лежит число минут. Дальше с ним работает любая GIS-библиотека; чтобы определить, лежит ли точка внутри, достаточно стандартной проверки «точка в многоугольнике» (например, в Turf.js функция booleanPointInPolygon).

Каждый запрос — одна единица квоты «Зоны доступности», независимо от числа контуров. Лимиты по тарифам: 10 запросов за 30 дней на «Базовом», 150 на «Старте», 500 на «Бизнесе», 2 000 на «Масштабе». Если зоны нужны для каждой из многих точек, строить их лучше заранее и сохранять результат у себя, а не пересчитывать при каждом заходе посетителя.

Сколько людей живёт в зоне: параметр population=1

Добавьте к запросу population=1, и в каждый контур добавятся поля с оценкой численности населения внутри него:

GET https://kartrout.ru/v1/isochrone?lon=83.7636&lat=53.3478&contours=5,10,15&population=1&key=pk_live_...

// в properties каждого контура:
{ "contour": 10, "population": 312113,
  "populationSource": "WorldPop Global 1km mosaic 2020", "populationYear": 2020,
  "populationAttribution": "WorldPop.org (CC BY 4.0)" }

Для центра Барнаула, автомобиль, наш тестовый запрос 14 октября 2026 года вернул примерно 134 тыс. человек в 5-минутной зоне, 312 тыс. в 10-минутной и 408 тыс. в 15-минутной. Те же 10 минут пешком — около 12,5 тыс. человек. Разница между режимами иллюстрирует, зачем вообще считать зоны, а не рисовать круги.

Как читать цифрыЭто оценка по открытому растру WorldPop с ячейкой около 1 км за 2020 год, а не данные переписи. Для крупных зон (10–60 минут) погрешность невелика, для маленьких (3–5 минут пешком) оценка грубая: в зону попадает несколько ячеек, и граница проходит по их центрам. Используйте цифру для сравнения вариантов («здесь втрое больше жителей, чем там»), а не как точное число. При публикации результата сохраняйте указание источника из поля populationAttribution — это требование лицензии WorldPop (CC BY 4.0).

Население считается по всей России. Параметр работает и в запросах из браузера, и из серверного кода; в виджетовом методе map.isochrone() он пока не передаётся, поэтому для получения чисел используйте прямой запрос из примера выше.

Ограничения, о которых нужно знать честно

  • Без пробок и светофоров. Время считается по ограничениям скорости дорог, а не по реальному трафику. В час пик фактическое время будет больше — как правило, заметно. Показывайте зону как ориентир («примерно 30 минут»), а не как обязательство.
  • Качество зависит от карты. Если в OpenStreetMap нет проезда, моста или дороги, зона их не учтёт. В крупных городах данные подробные, в сельской местности возможны пропуски.
  • Точка должна быть в зоне покрытия. Запросы вне поддерживаемой территории возвращают понятную ошибку, а не пустой контур.
  • Максимум 60 минут и 3 контура в одном запросе: для сверхдальних расчётов используйте несколько запросов.

Практический порядок работы

  1. Определите вопрос: «куда доезжаем», «кто живёт рядом» или «что доступно пешком».
  2. Выберите режим и время. Для доставки продуктов типично 15–30 минут на автомобиле, для кофейни — 5–10 минут пешком.
  3. Постройте зону в конструкторе и оцените на глаз: совпадает ли контур с вашим представлением о районе. Если нет — это часто повод пересмотреть саму зону доставки.
  4. Подключите на сайт map.isochrone() для посетителей или серверный запрос с population=1 для аналитики.
  5. Зафиксируйте результат и пересчитывайте при изменении сети точек, а не при каждом визите.

Частые вопросы

Чем изохрона отличается от радиуса на карте?

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

Учитываются ли пробки?

Нет. Время считается по ограничениям скорости дорог, а не по реальному трафику. В час пик фактическое время будет больше, поэтому зону стоит показывать как ориентир.

Какие режимы передвижения доступны?

Автомобиль (auto), грузовик (truck), велосипед (bicycle) и пешеход (pedestrian). За один запрос строится до трёх контуров, каждый — до 60 минут.

Как узнать, сколько людей живёт в зоне?

Добавьте к запросу изохроны параметр population=1: в каждый контур добавятся поля population, populationSource и populationYear. Это оценка по растру WorldPop с ячейкой около 1 км за 2020 год, работает по всей России.

Сколько стоит построение зоны?

Один запрос — одна единица квоты «Зоны доступности» независимо от числа контуров: 10 за 30 дней на «Базовом», 150 на «Старте», 500 на «Бизнесе», 2 000 на «Масштабе».