Cette page n’est plus maintenue depuis la version 2022 de Geoconcept Web. Pour accéder à la documentation à jour de ce web service, veuillez suivre ce lien.
Le web service pickup and delivery peut être utilisé pour lister les meilleures solutions de ramassage/collecte et dépose/livraison que ce soit pour du transport de personnes ou du transport de biens.
Le web service prend en entrée deux types de données :
- Les trajets existants
- Points de ramassage/collecte et points de dépose/livraison éventuels
L’algorithme explore les solutions pour trouver un couple comprenant un point de ramassage et un point de dépose dans les trajets existants. Il retourne, pour chaque trajet, les meilleurs détours possibles parmi les candidats (points de ramassage et de dépose).
Dans le cas où un seul candidat (ramassage ou dépose) est disponible, le web service essaye d’insérer une étape dans les trajets existants au lieu de deux.
Ce web service est une option de Geoconcept Web, veuiller nous contacter pour connaître les modalités d’acquisition.
Il nécessite l’usage d’un graphe accéléré.
En entrée
paramètre | type | optionnel | description |
---|---|---|---|
routes |
array of routes/route (pickupDeliveryRouteInput) |
Non |
Tableau des trajets en entrée. Trajets pré-existant dans lesquels les candidats doivent être insérés. |
pickupPoints |
array of pickupPoints/pickupPoint (wayPoint) |
Oui |
Tableau des candidats de ramassage à inserer dans les trajets. |
deliveryPoints |
array of deliveryPoints/deliveryPoint (wayPoint) |
Oui |
Tableau des possible candidats de dépose à inserer dans les trajets. |
constraints |
(pickupDeliveryConstraints) |
Oui |
Définition des contraintes pour filtrer les trajets à utiliser. |
sortOptions |
(pickupDeliverySortingOptions) |
Oui |
Définition du tri des résultats. |
srs |
projection (code EPSG comme epsg:4326 ou wgs84) |
oui |
|
graphName (déprécié) |
Nom du graphe à utiliser |
oui |
|
profileId (déprécié) |
Identifiant du véhicule (enregistré dans les profils de véhicule) |
oui |
|
profileName (déprécié) |
Profil du véhicule (enregistré dans les profils de véhicule) |
oui |
|
configName |
Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes) |
oui |
|
snapMethod |
Méthode d’accrochage au graphe |
oui |
standard |
exclusions |
Liste des règles de restrictions à utiliser, séparés par le caractère ; (Exemple : Toll, Tunnel, Bridge) |
oui |
|
startDateTime |
Date et heure de départ (format ISO8601 : heure locale) Exemple : 2014-01-21T09:00:00.000+01:00 (ou 2014-01-21T09:00:00.000%2B01:00) pour un départ le 21 janvier 2014, à 9h à Paris. Attention le caractère + peut être mal interprété par les navigateurs, dans ce cas, il faut le remplacer par %2B. |
oui |
|
avoidArea |
Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée |
oui |
|
size |
(pickupDeliverySizes) |
Non |
Nombre de trajets et de candidats à retourner. |
dataVersionHash |
string |
Oui |
Identifiant de graphe (non utilisé) |
computeOptions |
Liste des options pour le calcul, séparées par le caractère ; |
oui |
Trajets en entrée (pickupDeliveryRouteInput)
paramètre | type | optionnel | description |
---|---|---|---|
id |
string |
Non |
Identifiant du trajet |
departure |
(location) |
Non |
Coordonnées du point de départ |
arrival |
(location) |
Non |
Coordonnées du point d’arrivée |
distance |
long |
Oui |
Distance du trajet (en mètre) |
duration |
long |
Oui |
Durée du trajet (en secondes) |
waypoints |
Array of wayPoint |
Oui |
Liste des étapes du trajet |
Etapes (wayPoint)
paramètre | type | optionnel | description |
---|---|---|---|
id |
string |
Non |
Identifiant de l'étape |
location |
(location) |
Non |
Coordonnées de l'étape |
stopoverPosition |
long |
Oui |
Position de l'étape sur le trajet, si l'étape est un arrêt. Si non renseigné cette étape n’est qu’un point de passage. |
Coordonnées (location)
paramètre | type | optionnel | description |
---|---|---|---|
lat |
double |
Non |
Latitude du point (en wgs84) |
long |
double |
Non |
Longitude du point (en wgs84) |
nodeId |
string |
Oui |
Noeud du graphe. Attention : un noeud physique n’a pas le même ID dans un autre graphe. |
Contraintes (pickupDeliveryConstraints)
paramètre | type | optionnel | description |
---|---|---|---|
maxDetourDuration |
long |
Oui |
Durée maximale du détour (en secondes). Seuls les trajets résultants pour lesquels la durée ajoutée est inférieure à cette
limite seront renvoyés par le web service. |
minSharedDistance |
long |
Oui |
Valeur minimale du ratio de distance commun. Seuls les trajets résultants pour lesquels le ratio de distance commun est supérieur
à cette limite seront renvoyés par le web service. |
Tri (pickupDeliverySortingOptions)
paramètre | type | optionnel | description |
---|---|---|---|
routesAndCandidatesSortCriterium |
(sortCriteriaEnum) |
Oui |
Options de tri : |
Nombre de retour (pickupDeliverySizes)
paramètre | type | optionnel | description |
---|---|---|---|
routes |
long |
Non |
Nombre maximal de trajet à renvoyer. |
candidates |
long |
Non |
Nombre maximal de candidats à renvoyer pour chaque trajet. |
En sortie
paramètre | type | description |
---|---|---|
results |
array of results/result (pickupDeliveryRouteResult) |
Liste des trajets calculés. |
Liste des trajets calculés (pickupDeliveryRouteResult)
paramètre | type | description |
---|---|---|
routeId |
string |
Liste des trajets calculés. |
candidates |
array of candidates/candidate (pickupDeliveryRouteCandidate) |
Liste des détours possibles pour le trajet. |
Liste des détours possibles pour le trajet (pickupDeliveryRouteCandidate)
paramètre | type | description |
---|---|---|
pickup |
(meetingPointCandidate) |
Candidat pour le ramassage. |
delivery |
(meetingPointCandidate) |
Candidat pour la dépose. |
sharedRouteDuration |
long |
Durée du trajet commun (en secondes). |
sharedRouteDistance |
long |
Distance du trajet commun (en mètres). |
totalDurationWithDetour |
long |
Durée totale du trajet incluant le détour (en secondes). |
totalDistanceWithDetour |
long |
Distance totale du trajet incluant le détour (en mètres). |
detourDuration |
long |
Durée du détour = (durée avec détour) - (durée du trajet original) |
detourDistance |
long |
Distance du détour = (distance avec détour) - (distance du trajet original) |
sharedDistance |
double |
Distance commune = ratio entre (distance commune) et ( Distance totale du trajet incluant le détour) |
Candidats (meetingPointCandidate)
paramètre | type | description |
---|---|---|
meetingPointId |
string |
Identifiant du lieu de ramassage/dépose |
duration |
long |
Pour un lien de ramassage : durée depuis le point de départ du trajet jusqu’au lieu de ramassage (en secondes) |
distance |
long |
Pour un lien de ramassage : distance depuis le point de départ du trajet jusqu’au lieu de ramassage (en mètres) |
meetingPointSubPath |
int |
Position du segment optimal (dans le trajet) du lieu de ramassage/dépose. |
Requête
Requête
http://<server>/<webapp>/api/lbs/pickupDelivery.json
Data (JSON)
{ "routes" : [ { "id" : "trip_1", "departure" : { "lat" : "47.333990", "lon" : "-1.805604" }, "arrival" : { "lat" : "47.479740", "lon" : "-1.095251" }, "waypoints" : [ { "id" : "waypoint_1", "location" : { "lat" : "47.157530", "lon" : "-1.421958" } }] }], "pickupPoints" : [ { "id" : "depMeet_1", "location" : { "lat" : "47.228659", "lon" : "-1.600995" } }], "deliveryPoints" : [ { "id" : "arrMeet_1", "location" : { "lat" : "47.293823", "lon" : "-1.480789" } }], "constraints" : { "maxDetourDuration" : 3600, "minSharedDistance" : 0.1 }, "sortOptions" : { "routesAndCandidatesSortCriterium" : "MIN_DETOUR_DURATION" }, "size" : { "routes" : 1, "candidates" : 1 } }
Requête Réponse
La réponse est toujours encodée en UTF-8.
Format JSON
{ "message": null, "status": "OK", "results": [ { "routeId": "trip_1", "candidates": [ { "pickup": { "meetingPointId": "depMeet_1", "duration": 1349, "distance": 23426, "meetingPointSubPath": 0 }, "delivery": { "meetingPointId": "arrMeet_1", "duration": 2177, "distance": 43159, "meetingPointSubPath": 0 }, "sharedRouteDuration": 1333, "sharedRouteDistance": 18767, "totalDurationWithDetour": 4860, "totalDistanceWithDetour": 85352, "detourDuration": -577, "detourDistance": -19590, "sharedDistance": 0.21 } ] } ] }
- 1. Comment utiliser les statistiques routières ?
- 2. Comment faire un calcul d’itinéraire sans péage?
- 3. Qu’est-ce que les Speed Patterns ? Comment les utiliser ?
Pour les utiliser il faut passer, lors de l’appel au web service, le paramètre computeOptions
avec l’option speedPattern et préciser la valeur de la Speed Pattern demandée sans omettre un profil de véhicule
Exemple :
+
&computeOptions=speedPattern:fast-speed&profileId=1
- Comment utiliser les attributs poids lourds ?
-
Il faut que le graphe intègre les attributs de poids lourds (en standard dans les graphes fournis par GEOCONCEPT SAS à partir de la version M18) et soit calculer un itinéraire en utilisant un profil de véhicule utilisant les restrictions (cf. le catalogue de véhicules, éditable, définit dans le fichier SmartRoutingVehicles.xml, dans le dossier `‘<GEOCONCEPT_WEB_HOME>’'\smartrouting\jee\smartrouting\conf\ ), soit surcharger l’appel au web service en utilisant le paramètre
computeOptions
avec les options length, width, height, weight, axles et/ou weightPerAxle.
Exemple pour un trajet avec un véhicule de 4,5 mètres de hauteur :&computeOptions=height:450