Уклонение от разворота

Функция предотвращения разворота присутствует в `ShipmentModel.Shipment` в объектах погрузки и разгрузки.

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

Система предотвращения разворотов работает следующим образом:

  1. Свойство предотвращения разворота устанавливается для конкретного посещения.
  2. API учитывает оба направления движения по дорогам с двусторонним движением и выбирает наиболее оптимальный маршрут.
  3. API генерирует маршрут, по которому транспортное средство прибывает и уезжает, не совершая разворота в месте посещения. Водителю, возможно, потребуется перейти дорогу, чтобы добраться до этого места.

Этот объект идеально подходит для ситуаций, когда разворот затруднен или невозможен из-за размеров транспортного средства, дорожных знаков или обычных дорожных условий.

Характеристики

Свойство предотвращения разворота определяется внутри объекта VisitRequest . Этот объект используется в массивах pickups и deliveries отправления.

Свойство Тип Описание
avoidUTurns логический Если установить значение true , API не позволит транспортному средству развернуться в этом месте. Транспортное средство прибудет и уедет, двигаясь в одном направлении.

Примеры

В этом разделе рассматриваются два типа примеров:

  • Примеры кода, иллюстрирующие структуру предотвращения разворота.
  • Пример запроса, включающего данную функцию.

Примеры кода

Следующий пример демонстрирует структуру avoidUTurns в рамках операции по приему и доставке груза:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

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

В следующем примере показан базовый запрос optimizeTours , включающий в себя предотвращение разворотов. Этот запрос содержит следующие элементы:

  • Груз, включающий в себя этапы погрузки и разгрузки внутри model объекта.
  • Для предотвращения изменения направления движения транспортного средства на этих остановках необходимо установить свойство avoidUTurns в значение true как для места погрузки, так и для места разгрузки.
  {
    "model": {
      "shipments":[
        {
          "pickups":[
            {
              "arrivalLocation": {
                "latitude": 37.42506261000996,
                "longitude": -122.09535511930135
              },
              "avoidUTurns": true
            }
          ],
          "deliveries":[
            {
              "arrivalLocation": {
                "latitude": 37.42421503206021,
                "longitude": -122.09526063135228
              },
              "avoidUTurns": true
            }
          ]
        }
      ],
      "vehicles":[
        {
          "travelMode": "DRIVING",
          "costPerKilometer": 1.0
        }
      ]
    }
  }

Избегайте разворотов на sideOfRoad .

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

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

Свойство sideOfRoad определено внутри объекта Waypoint .

Взаимодействие с другими функциями

Функция предотвращения разворотов взаимодействует с другими функциями маршрутизации следующим образом:

  • Обочина дороги: Установка параметров avoidUTurns и sideOfRoad в значение true немного увеличивает вероятность избежать разворота при направлении транспортного средства на обочину дороги, ближайшую к месту посещения. Однако это вносит дополнительные сложности, связанные с ограничениями на предотвращение разворотов. Для большинства мест посещения достаточно установить только один из этих параметров, чтобы избежать разворотов.
  • Внедренные решения: При использовании обхода разворотов ответ API включает в себя внедренный токен injectedSolutionLocationToken внутри сгенерированного ShipmentRoute.Visit , чтобы указать, какую сторону дороги он выбрал. Если вы когда-либо повторно используете этот объект `Visit` в качестве внедренного решения в будущем запросе, вы должны передать этот токен обратно в API.

Ограничения

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

  • Режим движения установлен на другой режим, отличный от DRIVING .
  • Места прибытия и отправления для конкретного места посещения различаются. В этом случае API возвращает ошибку.
  • Место назначения — тупиковая дорога, для выезда с которой необходимо развернуться.
  • Разворот происходит по пути следования, а не в самом месте посещения.
  • Этот маневр представляет собой очень резкий поворот на другую дорогу, который API не классифицирует как разворот.