Isochrone API

Mapbox предоставляет набор геопространственных сервисов, среди которых Isochrone API занимает ключевую роль при решении задач анализа доступности территории. В связке с Mapbox GL JS этот инструмент позволяет визуализировать области достижимости на карте в реальном времени и интегрировать их в интерактивные веб-приложения.

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


Принцип построения изохрон

Основная идея Isochrone API заключается в графовом анализе дорожной сети. Географическое пространство интерпретируется как взвешенный граф, где:

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

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

Ключевые параметры анализа:

  • режим передвижения (driving, walking, cycling);
  • временной интервал (minutes);
  • расстояние (meters);
  • учёт трафика (опционально);
  • допустимые ограничения маршрута.

Формирование запроса к Isochrone API

Базовый HTTP-запрос формируется через REST-интерфейс:

https://api.mapbox.com/isochrone/v1/{profile}/{longitude},{latitude}

Где:

  • {profile} — режим передвижения (например, driving, walking, cycling);
  • {longitude},{latitude} — координаты точки отправления.

Пример запроса

https://api.mapbox.com/isochrone/v1/mapbox/driving/69.5901,42.3417
  ?contours_minutes=5,10,15
  &polygons=true
  &access_token=YOUR_MAPBOX_ACCESS_TOKEN

Основные параметры

  • contours_minutes — список временных интервалов;
  • contours_meters — альтернативный режим по расстоянию;
  • polygons — возврат геометрии в виде полигонов;
  • denoise — сглаживание результата;
  • generalize — упрощение геометрии;
  • access_token — ключ доступа.

Интеграция с Mapbox GL JS

В Mapbox GL JS изохроны отображаются как GeoJSON-слои. Типичный поток работы включает:

  1. Запрос данных из Isochrone API
  2. Преобразование ответа в GeoJSON
  3. Добавление слоя fill на карту
  4. Настройка визуализации

Пример загрузки данных

map.on('load', async () => {
  const response = await fetch(
    'https://api.mapbox.com/isochrone/v1/mapbox/driving/69.5901,42.3417?contours_minutes=5,10,15&polygons=true&access_token=YOUR_MAPBOX_ACCESS_TOKEN'
  );

  const data = await response.json();

  map.addSource('isochrone', {
    type: 'geojson',
    data: data
  });

  map.addLayer({
    id: 'isochrone-fill',
    type: 'fill',
    source: 'isochrone',
    paint: {
      'fill-color': '#3b82f6',
      'fill-opacity': 0.4
    }
  });

  map.addLayer({
    id: 'isochrone-outline',
    type: 'line',
    source: 'isochrone',
    paint: {
      'line-color': '#1d4ed8',
      'line-width': 2
    }
  });
});

Многоуровневая визуализация зон доступности

Isochrone API возвращает несколько контуров, каждый из которых соответствует отдельному временно́му порогу. Это позволяет строить вложенные области:

  • 5 минут — ядро доступности
  • 10 минут — расширенная зона
  • 15 минут — периферийная зона

В Mapbox GL JS такие зоны обычно визуализируются через градиентную заливку:

'fill-color': [
  'interpolate',
  ['linear'],
  ['get', 'contour'],
  5, '#1e3a8a',
  10, '#2563eb',
  15, '#60a5fa'
]

Использование данных в аналитике

Isochrone-геометрия часто применяется в пространственном анализе:

1. Анализ доступности объектов

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

2. Оценка покрытия сервисов

  • доставка еды
  • логистические зоны
  • курьерские маршруты

3. Градостроительное моделирование

  • плотность инфраструктуры
  • оптимизация размещения объектов
  • анализ транспортной нагрузки

Работа с профилями маршрутизации

Isochrone API поддерживает несколько профилей:

  • driving — автомобильный транспорт
  • walking — пешие маршруты
  • cycling — велосипедные маршруты

Каждый профиль использует отдельную дорожную модель и влияет на форму изохрон. Например:

  • walking формирует компактные области
  • driving создаёт вытянутые зоны вдоль дорог
  • cycling зависит от велоинфраструктуры

Оптимизация геометрии

При работе с большими наборами изохрон важно учитывать производительность:

Упрощение геометрии

Параметр generalize уменьшает количество вершин полигона:

&generalize=50

Снижение детализации

Параметр denoise удаляет шумовые сегменты:

&denoise=0.3

Баланс между точностью и производительностью особенно важен при рендеринге на клиенте через Mapbox GL JS.


Обработка ошибок и ограничений

При работе с Isochrone API возникают типовые сценарии:

Неверные координаты

Возвращается ошибка геометрии при выходе за пределы допустимого диапазона.

Превышение лимита контуров

Слишком большое количество значений contours_minutes может привести к ограничению запроса.

Ошибки токена

Некорректный или истёкший access_token блокирует выполнение запроса.

Ограничение детализации

Слишком сложная геометрия может быть упрощена на стороне сервера.


Комбинирование с другими сервисами Mapbox

Isochrone API часто используется вместе с:

  • Geocoding API — преобразование адресов в координаты
  • Directions API — маршрутизация между точками
  • Tiles API — подложки карты
  • Mapbox GL JS — визуализация

Типичный сценарий:

  1. Геокодирование точки
  2. Построение изохрон
  3. Наложение точек интереса
  4. Фильтрация объектов внутри полигона

Фильтрация данных внутри изохрон

После получения полигона часто выполняется пространственная проверка попадания объектов внутрь области:

import * as turf from '@turf/turf';

const point = turf.point([69.5901, 42.3417]);
const inside = turf.booleanPointInPolygon(point, isochroneFeature);

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


Динамическое обновление изохрон

В интерактивных приложениях изохроны часто обновляются при перемещении маркера:

map.on('click', async (e) => {
  const { lng, lat } = e.lngLat;

  const res = await fetch(
    `https://api.mapbox.com/isochrone/v1/mapbox/driving/${lng},${lat}?contours_minutes=10&polygons=true&access_token=YOUR_MAPBOX_ACCESS_TOKEN`
  );

  const geojson = await res.json();
  map.getSource('isochrone').setData(geojson);
});

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


Производственные сценарии использования

Логистика

  • расчет зоны доставки за 15–30 минут
  • оптимизация складов
  • анализ покрытия курьерских служб

Городская аналитика

  • доступность больниц
  • транспортная связанность районов
  • оценка инфраструктурного равенства

Коммерческие сервисы

  • выбор места открытия магазина
  • анализ клиентского охвата
  • маркетинговое сегментирование

Особенности интерпретации результатов

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

  • дорожной сетью
  • скоростью движения
  • природными барьерами
  • односторонними дорогами
  • ограничениями маршрутизации

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