Pickup and Delivery

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.

Principe

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.

Disponibilité

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é.

Paramètres / propriétés

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
Ce paramètre est omis si le paramètre configName est utilisé.

oui

profileId (déprécié)

Identifiant du véhicule (enregistré dans les profils de véhicule)
Ce paramètre est omis si le paramètre configName est utilisé.

oui

profileName (déprécié)

Profil du véhicule (enregistré dans les profils de véhicule)
Ce paramètre est omis si le paramètre configName est utilisé.

oui

configName

Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes)
Il remplace l’usage de graphName, profileId et profileName

oui

snapMethod

Méthode d’accrochage au graphe
- standard : au tronçon connectable le plus proche
- extended : via les tronçons restreints (piétons…)
- nearest : uniquement au tronçon le plus proche
- unrestricted : sans règles de restriction
- nodes : Accrochage direct aux noeuds fournis par les paramètres originNode, destinationNode et waypointNodes ou, si ces premiers ne sont pas renseignés, aux noeuds les plus proches des paramètres origin, destination et waypoint

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
Exemple en wgs84 : POLYGON ((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)) - MULTIPOLYGON (((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)), ((-1.558639 47.218144, -1.558639 47.218193, [...] -1.558639 47.218144)))
Attention les géométries WKT doivent être fermées.

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 ;
- trafficPatterns : utilise les statistiques routières (il est nécessaire de renseigner le paramètre startDateTime et d’utiliser un graphe intégrant les informations de traffic patterns)
- speedPattern (M18) : utilise d’une speed pattern tel que définis dans le fichier SmartRoutingVehicles.xml qui se trouve dans le dossier `‘<GEOCONCEPT_WEB_HOME>’'\smartrouting\jee\smartrouting\conf\ . Usage : "speedPattern:slow-speed"
- length (M18) : longueur maximale autorisée en centimètre (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "length:950"
- width (M18) : largeur maximale autorisée en centimètre (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "width:255"
- height (M18) : hauteur maximale autorisée en centimètre (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "height:360"
- weight (M18) : poids maximum autorisé en kilogramme (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "weight:18000"
- axles (M18) : nombre maximum d’axe autorisé (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "axles:2"
- weightPerAxle (M18) : poids maximum autorisé par axe en kilogramme (il est nécessaire d’utiliser un graphe intégrant les attributs poids lourds). Usage : "weightPerAxle:9000"
- snapSpeed : vitesse d’accrochage au graphe en kilomètre par heure. Usage : "snapSpeed:10"

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.
La durée du détour est définie comme :
(durée avec détour) - (durée sans détour)

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.
Le ratio de distance commun est défini comme :
(distance commune) / (distance totale avec détour)

Tri (pickupDeliverySortingOptions)

paramètre type optionnel description

routesAndCandidatesSortCriterium

(sortCriteriaEnum)

Oui

Options de tri :
- MIN_DETOUR_DURATION = tri (ascendant) les résultats selon la durée du détour
- MIN_DETOUR_DISTANCE = tri (ascendant) les résultats selon la distance du détour
- MAX_SHARED_DISTANCE = tri (descendant) les résultats selon le ratio de distance commun

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)
Pour un lieu de dépose : durée depuis le lieu de dépose jusqu’au point d’arrivée du trajet (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)
Pour un lieu de dépose : distance depuis le lieu de dépose jusqu’au point d’arrivée du trajet (en mètres)

meetingPointSubPath

int

Position du segment optimal (dans le trajet) du lieu de ramassage/dépose.

REST (POST)

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
                }
            ]
        }
    ]
}

FAQ

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 ?

1.

Comment utiliser les statistiques routières ?

Vérifier que le graphe contient bien ces statistiques et utiliser les deux paramètres suivants : computeOptions avec la valeur trafficPatterns et startDateTime pour préciser la date/heure de départ.

2.

Comment faire un calcul d’itinéraire sans péage?

Si la contrainte Toll a bien été incluse dans le graphe, placer une exclusion dans exclusions

3.

Qu’est-ce que les Speed Patterns ? Comment les utiliser ?

Afin de proposer des temps de trajets au plus près des conditions de circulation, les graphes fournis par GEOCONCEPT SAS intègrent, à partir de la version M18, pour les voitures et pour les camions 5 profils de vitesses (Speed Patterns) pour tenir compte des différents niveaux de congestion dans une journée :

  • standard normal-speed correspond à la vitesse d’une heure moyennement chargée (11h)
  • nuit fast-speed correspond à un trafic très fluide, observé le plus souvent la nuit (3h)
  • chargée slow-speed correspond aux heures de trafic denses (8h)
  • heure de pointe very-slow-speed correspond aux heures de trafic denses dans les grandes agglomérations, plus lent que le précédent (8h)
  • défaut defaut correspond aux vitesses moyennées sur une journée entière

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