L'évitement des demi-tours est une fonctionnalité d'optimisation des itinéraires qui empêche les véhicules de faire demi-tour au lieu de prise en charge ou de livraison spécifique d'une visite. En configurant l'évitement des demi-tours, vous spécifiez que le véhicule doit être orienté dans la même direction à son arrivée et à son départ d'un lieu de visite.
L'évitement des demi-tours fonctionne comme suit :
- Vous définissez la propriété d'évitement des demi-tours pour une visite spécifique.
- L'API prend en compte les deux sens de circulation sur les routes à double sens et choisit le chemin le plus optimal.
- L'API génère un itinéraire dans lequel le véhicule arrive et repart sans faire demi-tour au lieu de la visite. Le conducteur devra peut-être traverser la route pour atteindre ce lieu.
Cette propriété est idéale dans les situations où il est difficile ou impossible de faire demi-tour en raison de la taille du véhicule, des panneaux de signalisation ou des conditions de circulation habituelles.
Propriétés
La propriété d'évitement des demi-tours est définie dans l'objet VisitRequest.
Cet objet est utilisé dans les tableaux pickups et deliveries d'un
envoi.
| Propriété | Type | Description |
|---|---|---|
avoidUTurns |
booléen | Lorsque la valeur est définie sur true, l'API empêche le véhicule de faire demi-tour à ce lieu de visite. Le véhicule arrivera et repartira dans la même direction. |
Exemples
Cette section couvre deux types d'exemples :
- Des exemples de code qui illustrent la structure de l'évitement des demi-tours.
- Un exemple de requête qui inclut la fonctionnalité.
Exemples de code
L'exemple suivant montre la structure de avoidUTurns dans une prise en charge
et une livraison :
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
Exemple de requête
L'exemple suivant montre une requête optimizeTours de base qui
intègre l'évitement des demi-tours. Cette requête inclut les éléments suivants :
- Un envoi avec une prise en charge et une livraison dans l'objet
model. - La propriété
avoidUTurnsest définie surtruepour les lieux de prise en charge et de livraison afin d'empêcher le véhicule de changer de direction à ces arrêts.
{ "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 } ] } }
Éviter les demi-tours avec sideOfRoad
Bien que sideOfRoad soit une fonctionnalité distincte, elle est étroitement liée à l'évitement des demi-tours
, car elle empêche de nombreux demi-tours en acheminant le véhicule vers le côté de
la route le plus proche de la destination. Cela oblige le véhicule à s'approcher d'un lieu de visite dans une direction spécifique, ce qui élimine la nécessité de faire demi-tour.
En pratique, vous devez utiliser l'évitement des demi-tours lorsqu'il est sûr de traverser la route à pied pour vous rendre au lieu de la visite. Si la traversée de la route est
déconseillée ou impossible, envisagez plutôt de définir sideOfRoad sur true
à la place.
La propriété sideOfRoad est définie dans un objet Waypoint.
Interaction avec d'autres fonctionnalités
L'évitement des demi-tours interagit avec d'autres fonctionnalités de routage de la manière suivante :
- Côté de la route : si vous définissez
avoidUTurnsetsideOfRoadsurtrue, vous augmentez légèrement les chances d'éviter un demi-tour tout en acheminant le véhicule vers le côté de la route le plus proche du lieu de la visite. Toutefois, cela introduit des complexités supplémentaires liées aux restrictions de l'évitement des demi-tours. Pour la plupart des lieux de visite, il suffit de définir une seule de ces propriétés pour éviter les demi-tours. - Solutions injectées : lorsque vous utilisez l'évitement des demi-tours, la réponse de l'API
inclut un
injectedSolutionLocationTokendans leShipmentRoute.Visitgénéré pour enregistrer le côté de la route qu'il a sélectionné. Si vous réutilisez cette visite comme solution injectée dans une requête ultérieure, vous devez renvoyer ce jeton à l'API.
Limites
L'évitement des demi-tours est une fonctionnalité qui sera effectuée au mieux. L'API peut toujours inclure des demi-tours dans un itinéraire généré dans les conditions suivantes :
- Le mode de transport est défini sur un mode autre que
DRIVING. - Les lieux d'arrivée et de départ d'un lieu de visite spécifique sont différents. Dans ce cas, l'API renvoie une erreur.
- La visite se trouve sur une voie sans issue, ce qui nécessite un demi-tour pour sortir.
- Le demi-tour se produit le long de l'itinéraire, plutôt qu'au lieu de la visite.
- La manœuvre est un virage très serré sur une autre route, que l'API ne classe pas comme un demi-tour.