Основные понятия

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

Способы передвижения

Используйте обязательный параметр travelMode (travel_mode), чтобы указать способ передвижения:

  • DRIVE – рассчитывает доступность для легкового автомобиля на дорогах , по которым можно ездить, с учетом ограничений скорости, иерархии дорог, штрафов за повороты и (необязательно) загруженности дорог.
  • TWO_WHEELER – рассчитывает доступность для двухколесного моторизованного транспортного средства (например, мотоцикла или скутера), используя правила доступа к дорогам для конкретного режима и более низкие смоделированные скорости, чем DRIVE на скоростных дорогах. В результате изохрона TWO_WHEELER обычно охватывает область, которая больше, чем BICYCLE, но меньше, чем DRIVE вдоль скоростных автомагистралей.
  • BICYCLE. Рассчитывает доступность для велосипедиста на улицах, велодорожках и общих дорогах, где разрешено движение на велосипеде. Скорость корректируется с учетом типа дороги и уклона. Автомагистрали и скоростные шоссе с ограниченным доступом исключаются.
  • WALK – рассчитывает доступность для пешехода, идущего по тротуарам, пешеходным дорожкам, тропам и улицам, доступным для пешеходов, со скоростью ходьбы, скорректированной с учетом уклона. При построении пешеходных маршрутов не учитываются ограничения на одностороннее движение транспортных средств.

Временной горизонт

Основное ограничение, которое вы задаете для сервиса, – это travelDuration (travel_duration). Оно определяет временной горизонт для расчета.

  • Минимальная и максимальная продолжительность. Продолжительность должна быть не менее "1s" (1 секунда). Если указать ноль ("0s"), отрицательное значение или значение меньше одной секунды (например, "0.5s"), возвращается ошибка 400 INVALID_ARGUMENT. API поддерживает максимальное время в пути 3600 секунд (1 час) для режимов DRIVE и TWO_WHEELER и 7200 секунд (2 часа) для режимов WALK и BICYCLE.
  • Минимальный размер многоугольника. Поскольку API преобразует достигнутые сегменты дорог в ячейки пространственной сетки, при очень коротких интервалах времени возвращается небольшой многоугольник, охватывающий ячейки сетки вокруг привязанной начальной точки.
  • Производительность. Время расчета зависит от запрашиваемой продолжительности и выбранного способа передвижения. Изохрона для часовой поездки на автомобиле охватывает значительно большую географическую область и дорожную сеть, чем изохрона для часовой пешей прогулки, что приводит к более высокой задержке при запросе на вождение.
  • Форматирование. Поскольку API использует google.protobuf.Duration, продолжительность должна быть отформатирована как строка, заканчивающаяся на "s" (например, "3600s"), а не как целое число.

Начальные точки и привязка к дорогам

Указать начальную точку для изохроны можно двумя способами:

  • Координаты (location). Пара значений широты и долготы. Укажите оба значения: latitude (в [-90, 90]) и longitude (в [-180, 180]). Если вы опустите одно из них, API будет считать его равным 0.0, что поместит точку на экватор или нулевой меридиан. Если вы не укажете ни один из них ({}) или отправите (0, 0), API вернет ошибку 400 INVALID_ARGUMENT.
  • Идентификаторы мест (place). Уникальный идентификатор определенного места на Google Картах. Когда вы указываете идентификатор места, сервис определяет координаты его центроида и привязывает эту точку к ближайшей дороге. Используйте формат названия ресурса, начинающийся с places/ (например, places/ChIJIQBpAG2ahYAR_6128GcTUEo). Также принимается идентификатор места без префикса places/. Подробнее об идентификаторах мест…

Независимо от способа ввода API не рассчитывает время в пути от точной физической точки, если она находится не на дороге, например в парке или здании. Чтобы справиться с этой ситуацией, сервис использует привязку к дороге. Привязка к дороге имеет следующие особенности:

  • Умная привязка. Сервис пытается привязать начальную точку к ближайшему сегменту дороги, по которому можно проехать.
  • Учет режима. Логика привязки учитывает travel_mode. Если вы запрашиваете DRIVE или TWO_WHEELER, API игнорирует пешеходные дорожки и ищет ближайшую улицу, по которой можно проехать. Если вы запрашиваете WALK, API отдает приоритет пешеходным дорожкам и тротуарам.
  • Случаи сбоя. Если API не может найти подходящий сегмент дороги в пределах максимального расстояния привязки от начальной точки (около 200 метров или меньше для WALK и BICYCLE), API возвращает ошибку 404 NOT_FOUND. Крупные географические объекты (например, парки, кампусы или смотровые площадки) могут иметь центроид идентификатора места, расположенный дальше расстояния привязки от ближайшей дороги, подходящей для выбранного способа передвижения. В таких случаях передавайте явные координаты location въезда на дорогу.

Направление движения (въезд или выезд)

Вы можете рассчитать доступность как для входящих, так и для исходящих пакетов, используя параметр travelDirection (travel_direction):

  • FROM (Outbound) – рассчитывает область, которой можно достичь из начальной точки за указанное время. Это подходит для таких сценариев, как зоны доставки или зоны обслуживания.
  • TO (Входящий). Рассчитывается область, из которой можно добраться до начальной точки за указанное время. Это подходит для определения зон охвата, например, откуда сотрудники могут добираться до центрального офиса.

Осведомленность о дорожной ситуации

Управлять тем, как данные о трафике влияют на сгенерированный многоугольник, можно с помощью параметра routingPreference (routing_preference):

  • TRAFFIC_UNAWARE (по умолчанию). Для создания многоугольника изохроны используются ограничения скорости при свободном движении и иерархия дорог. В результате получается детерминированная форма, которая не зависит от времени суток. Этот параметр идеально подходит для общего анализа или планирования базовых сценариев.
  • TRAFFIC_AWARE – рассчитывает изохроны с учетом загруженности дорог в реальном времени на момент обработки запроса (в версии 1 нельзя задать временные метки отправления или прибытия в будущем или прошлом). В результате зона доступности уменьшается в часы пик и увеличивается в остальное время. При отсутствии пробок или в непиковые часы TRAFFIC_AWARE и TRAFFIC_UNAWARE могут возвращать почти идентичные многоугольники. Примечание. Прокладка маршрутов с учетом загруженности дорог поддерживается, только если для параметра travelMode задано значение DRIVE или TWO_WHEELER.

Сглаживание и точность

Вы можете настроить внешний вид и точность выходных многоугольников с помощью параметров polygonFidelity (polygon_fidelity) и enableSmoothing (enable_smoothing). Хотя эти параметры независимы, они работают вместе, чтобы определить окончательную форму.

  • polygonFidelity – управляет разрешением ячеек пространственной сетки, используемых для аппроксимации достижимой границы:

    • LOW – используются самые большие ячейки сетки (несколько сотен метров в поперечнике). Лучше всего подходит для больших областей с меньшим количеством вершин и без внутренних пробелов. В результате получается обобщенная форма, которая может переоценивать доступную область вдоль узких дорожных коридоров.
    • MEDIUM – сбалансированная точность и количество вершин.
    • HIGH – используются самые маленькие ячейки сетки (примерно 100–150 метров в поперечнике). В результате область будет точнее соответствовать дорожной сети, но в ней могут появиться пустые места, если дорожная сеть разреженная.
    • POLYGON_FIDELITY_UNSPECIFIED. Если не указано, сервис выбирает разрешение автоматически на основе способа передвижения и длительности, используя более мелкие ячейки для коротких поездок и для WALK и более крупные ячейки для длительных поездок. Чтобы сравнить изохроны для разных значений длительности или способов передвижения, задайте polygonFidelity явным образом.
      Высокая, средняя и низкая точность полигонов
      Высокая, средняя и низкая точность многоугольников
  • enableSmoothing – определяет, будут ли сглажены ступенчатые края ячеек сетки, заданные точностью.

    • false (Raw) – вариант по умолчанию. Возвращает границу, выровненную по сетке. Края выглядят ступенчатыми вдоль ячеек сетки. Лучше всего подходит для точного анализа, например для строгой проверки точек в многоугольнике.
    • true (Сглаженная). Острые углы сглаживаются, а площадь каждого кольца остается примерно такой же. Граница больше не следует за ячейками сетки.
      Изохрона со сглаживанием и без него
      Изохрона со сглаживанием и без