Изохрона, это полигон, отвечающий на обманчиво простой вопрос: куда я могу добраться отсюда за X минут? Постройте 15-минутную изохрону по времени поездки вокруг кофейни, и вы получите её реальную зону охвата. Постройте 30-минутную пешеходную изохрону вокруг станции метро, и вы получите её пешеходный радиус. Каждая функция «рядом со мной», каждое исследование зоны охвата магазина, каждый фильтр недвижимости по времени поездки строится на этой идее.
В этом руководстве разбираем, что такое изохрона на самом деле, как изохроны вычисляются на дорожной сети, где они появляются в продакшен-системах и какие подводные камни обходятся командам в время и деньги.
Что такое изохрона на самом деле
Слово происходит от греческих isos (равный) и chronos (время): кривая, вдоль которой время в пути одинаково. В современной картографии изохрона, это полигон (или набор вложенных полигонов), представляющий все точки, достижимые из исходной точки в рамках выбранного лимита времени при выбранном режиме передвижения.
Две вещи отличают изохрону от простого буфера. Во-первых, она вычисляется на дорожной сети, а не на плоскости. Реки, автомагистрали, горы и улицы с односторонним движением искажают её форму. Во-вторых, она зависит от режима передвижения: 20-минутная изохрона на автомобиле, 20-минутная велоизохрона и 20-минутная пешеходная изохрона из одной точки, это три совершенно разных полигона.
Результат почти всегда представлен в формате GeoJSON, с геометрией Polygon или MultiPolygon и свойствами, несущими порог времени и режим передвижения. Именно это рисует ваша карта во фронтенде и именно к этому обращаются запросы вашей пространственной базы данных.
Как вычисляются изохроны
Наивный подход, запустить поиск кратчайшего пути из исходной точки и остановиться, когда суммарное время в пути достигнет порога. На практике это слишком медленно при масштабировании, поэтому продакшен-системы используют предварительно построенные графы дорожной сети и ускоренные алгоритмы поиска.
Граф дорог строится один раз из источника вроде OpenStreetMap или коммерческого набора дорожных данных: каждое пересечение становится узлом, каждый сегмент дороги становится ребром, взвешенным по времени в пути для каждого режима. Из исходной точки поиск по графу (Dijkstra, A* или их двунаправленный вариант) идёт наружу, расширяя сначала самый дешёвый непосещённый узел, пока бюджет времени не исчерпан. Множество достигнутых узлов плюс частично достигнутые рёбра определяют границу.
Современные движки используют contraction hierarchies или схожие техники, чтобы ускорить процесс. Граф предобрабатывается в иерархию, где сокращающие рёбра пропускают менее важные узлы, поэтому запрос, который иначе затронул бы миллионы рёбер, отрабатывает за миллисекунды. Достижимые узлы затем оборачиваются в полигон, обычно с помощью вогнутой оболочки или альфа-формы, чтобы контур повторял реальную протяжённость дорог, а не раздувался в пустое пространство.
Результат, это GeoJSON-полигон, который можно стримить прямо на карту Leaflet, Mapbox GL или MapLibre, либо загрузить в PostGIS для пространственных join-операций.
Где применяются изохроны
Изохроны тихо обеспечивают работу множества продуктовых функций, завязанных на местоположение.
- Зоны охвата магазинов и заведений: ритейлеры строят изохроны по времени поездки вокруг каждой точки, чтобы оценить население, которое они обоснованно обслуживают, а затем накладывают данные переписи или потребительских расходов для оценки рынка
- Планирование запаса хода EV: изохроны с учётом заряда показывают, как далеко электромобиль может проехать на оставшемся заряде, учитывая высоту, скорость и расход энергии
- Фильтры недвижимости по времени до работы: «покажите мне все квартиры в 30 минутах езды от этого офиса», это изохрона, пересечённая с таблицей объявлений о недвижимости
- Анализ доступности здравоохранения: планировщики сравнивают изохроны вокруг больниц и клиник с сетками населения, чтобы найти зоны с недостаточным покрытием
- Зоны обслуживания в логистике: курьеры, выездные сервисные команды и платформы доставки on-demand используют изохроны, чтобы определять, какие заказы они принимают с конкретного депо
- Городское планирование и транспорт: исследования концепции 15-минутного города, планы зон охвата станций и аудиты доступности работают на мультимодальных изохронах
В каждом случае изохрона, это пространственный фильтр. Она превращает расплывчатый вопрос («насколько близко достаточно близко?») в полигон, с которым можно делать пересечения, отрисовывать его и рассуждать о нём.
Подводные камни в продакшене
Изохроны выглядят простыми в демо и становятся сложнее в продакшене.
Несовпадение режима. Автомобильная изохрона использует скорости автомагистралей и игнорирует ограничения одностороннего движения для пешеходов. Пешеходная изохрона использует тропинки и пешеходные сокращения, недоступные для автомобилей. Их смешивание, самая частая причина баг-репортов «полигон выглядит неправильно». Всегда передавайте явный режим и отображайте его в UI.
Время суток и трафик. 15-минутная поездка в 03:00 покрывает гораздо большую площадь, чем те же 15 минут в 17:30. Если ваш сценарий учитывает поездки на работу (фильтры недвижимости, часы работы магазинов, диспетчеризация), передавайте departure_time и используйте движок с учётом трафика. Статичные изохроны лгут о часе пик.
Сшивка мультимодальных маршрутов. Реальные поездки сочетают режимы: дойти до метро, проехать две остановки, дойти до пункта назначения. Наивные одномодальные изохроны полностью пропускают это. Настоящие мультимодальные изохроны требуют расписания общественного транспорта и графа, объединяющего пешеходные и транзитные рёбра, что значительно сложнее, чем чисто автомобильный вариант.
Упрощение покрытия. Некоторые движки агрессивно сглаживают полигон, чтобы он выглядел красиво, и тем самым тихо завышают покрытие, включая зоны, до которых на самом деле не доходит ни одна дорога. Для решений, которые имеют значение (открытие магазина, согласование зоны доставки), осматривайте сырую границу, а не доверяйте отрисованной форме.
Размер полигона при масштабировании. Длинные изохроны (60, 90 минут) могут содержать десятки тысяч вершин. Упрощайте их перед отправкой в браузер или отрисовывайте на сервере, иначе ваша карта будет тормозить.
Изохроны в MapAtlas
MapAtlas Isochrone API возвращает полигоны времени поездки на автомобиле, пешком, на велосипеде и с учётом трафика в формате GeoJSON, поддерживая несколько порогов времени в одном запросе и параметры времени отправления для результатов с учётом трафика. Полигоны вычисляются на постоянно обновляемом графе дорог и возвращаются в форме, которую ваша библиотека карт может отрисовать без дополнительной обработки.
Для рабочих процессов, требующих как полигонов достижимой зоны, так и попарных времён в пути, Isochrone API сочетается с Distance Matrix API, так что один пайплайн отвечает на вопросы «куда я могу добраться за 20 минут?» и «отранжируй этих кандидатов по времени поездки».
Изохрона, в конечном счёте, просто полигон. Но это тот полигон, который превращает время в пути в форму, которую ваше приложение может фильтровать, отрисовывать и анализировать, и именно он отделяет настоящую функцию с учётом времени поездки от круга, нарисованного вокруг булавки.
Часто задаваемые вопросы
Что такое изохрона?
Изохрона, это полигон или набор вложенных полигонов, который показывает все точки, достижимые из исходной точки за заданное время в пути. Например, 15-минутная изохрона по времени поездки вокруг магазина очерчивает на карте область, содержащую каждый сегмент дороги, до которого клиент способен добраться за 15 минут или меньше. Форма почти никогда не бывает кругом, потому что в реальной дорожной сети есть реки, автомагистрали, тупики и улицы с односторонним движением.
Чем изохрона отличается от радиуса?
Радиус, это буфер по прямой, прочерченный циркулем: каждая точка внутри находится на одинаковом расстоянии по прямой от центра. Изохрона, это буфер по времени, рассчитанный на реальной дорожной сети: каждая точка внутри достижима за одинаковое количество минут. Радиус 10 км и 10-минутная изохрона по времени поездки практически никогда не совпадают, потому что рельеф, автомагистрали и трафик искажают форму.
Что возвращает API изохрон?
API изохрон возвращает один или несколько полигонов в формате GeoJSON, каждый помечен порогом времени, которое он представляет (например, 5, 10, 15 минут). Полигоны вычисляются на графе дорог для выбранного режима передвижения (автомобиль, пешком, велосипед, общественный транспорт) и могут быть возвращены для конкретного времени отправления с учётом трафика. GeoJSON можно сразу нанести на карту или использовать как пространственный фильтр в PostGIS.
Почему изохроны выглядят такими зубчатыми?
Изохроны строятся из графа дорожных сегментов, а не из непрерывной поверхности. Граница полигона интерполируется по самым дальним достижимым узлам в рамках лимита времени, поэтому края повторяют геометрию дорог. Более гладкие формы можно получить с помощью вогнутых оболочек или альфа-форм, но слегка зубчатый контур честнее: он показывает, где на самом деле заканчивается сеть, а не где сглаживающая функция представила её окончание.

