The pickup and delivery service can be used to list the best solutions for pickup/collection and drop-off/delivery, whether for the transport of people or of goods.
The web service takes two types of data input:
- Existing journeys
 - Pickup/collection points and drop-off/delivery points
 
The algorithm explores the solutions to find a pair that includes one pick-up point and one drop-off point in the existing journeys. It returns, for each journey, the best detours possible among the candidates (pick-up and drop-off points).
In the case where only one candidate (pickup or drop-off) is available, the web service tries to insert one step in existing journeys instead of two.
{
        "url":"https://api.geoconcept.com/EU/GCW/geoconcept-web/api/lbs/pickupDelivery.json",
        "method":"POST",
        "body":
    {
      "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"
      },
      "configName":"car",
      "size" : {
        "routes" : 1,
        "candidates" : 1
      }
    }
}
               Input
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               routes  | 
                           
                               array of routes/route (pickupDeliveryRouteInput)  | 
                           
                               No  | 
                           
                               Table of journeys as input. Pre-existing journeys in which candidates must be inserted.  | 
                        
| 
                               pickupPoints  | 
                           
                               array of pickupPoints/pickupPoint (wayPoint)  | 
                           
                               Yes  | 
                           
                               Table of candidate pick-up points to insert in journeys.  | 
                        
| 
                               deliveryPoints  | 
                           
                               array of deliveryPoints/deliveryPoint (wayPoint)  | 
                           
                               Yes  | 
                           
                               Table of possible drop-off candidates to insert in journeys.  | 
                        
| 
                               constraints  | 
                           
                               (pickupDeliveryConstraints)  | 
                           
                               Yes  | 
                           
                               Definition of constraints to filter the journeys to use.  | 
                        
| 
                               sortOptions  | 
                           
                               (pickupDeliverySortingOptions)  | 
                           
                               Yes  | 
                           
                               Definition of the sort on the results.  | 
                        
| 
                               srs  | 
                           
                               projection (EPSG code such as epsg:4326 or wgs84)  | 
                           
                               yes  | 
                           |
| 
                               configName  | 
                           
                               Name of the configuration to use:  | 
                           
                               yes  | 
                           |
| 
                               snapMethod  | 
                           
                               Snap to graph method  | 
                           
                               yes  | 
                           
                               standard  | 
                        
| 
                               exclusions  | 
                           
                               List of restriction rules to use, separated by the ; character  | 
                           
                               yes  | 
                           |
| 
                               startDateTime  | 
                           
                               Start date and time (format ISO8601: local time) example: 2014-01-21T09:00:00.000+01:00 (or 2014-01-21T09:00:00.000%2B01:00) for a start on 21 January 2014, at 9.00am in Paris  | 
                           
                               yes  | 
                           |
| 
                               avoidArea  | 
                           
                               Forbidden transit zone in WKT format (POLYGON or MULTIPOLYGON) in the requested projection (srs parameter)  | 
                           
                               yes  | 
                           |
| 
                               size  | 
                           
                               (pickupDeliverySizes)  | 
                           
                               No  | 
                           
                               Number of journeys and candidates to return.  | 
                        
| 
                               dataVersionHash  | 
                           
                               string  | 
                           
                               Yes  | 
                           
                               Graph identifier (non-utilised)  | 
                        
| 
                               computeOptions  | 
                           
                               Selection of variables to use in calculations, using semi-colons ; as separators:  | 
                           
                               yes  | 
                           
(pickupDeliveryRouteInput) journeys as input
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               id  | 
                           
                               string  | 
                           
                               No  | 
                           
                               Journey identifier  | 
                        
| 
                               departure  | 
                           
                               (location)  | 
                           
                               No  | 
                           
                               Start point coordinates  | 
                        
| 
                               arrival  | 
                           
                               (location)  | 
                           
                               No  | 
                           
                               Finish point coordinates  | 
                        
| 
                               distance  | 
                           
                               long  | 
                           
                               Yes  | 
                           
                               Journey distance (in meters)  | 
                        
| 
                               duration  | 
                           
                               long  | 
                           
                               Yes  | 
                           
                               Journey duration (in seconds)  | 
                        
| 
                               waypoints  | 
                           
                               Array of wayPoint  | 
                           
                               Yes  | 
                           
                               List of journey steps  | 
                        
(wayPoint) steps
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               id  | 
                           
                               string  | 
                           
                               No  | 
                           
                               Step identifier  | 
                        
| 
                               location  | 
                           
                               (location)  | 
                           
                               No  | 
                           
                               Step coordinates  | 
                        
| 
                               stopoverPosition  | 
                           
                               long  | 
                           
                               Yes  | 
                           
                               Position of the step in the journey, if the step is a stop. If no values are assigned, this step is just a waypoint.  | 
                        
(location) coordinates
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               lat  | 
                           
                               double  | 
                           
                               No  | 
                           
                               Latitude of the point (in wgs84)  | 
                        
| 
                               long  | 
                           
                               double  | 
                           
                               No  | 
                           
                               Longitude of the point (in wgs84)  | 
                        
| 
                               nodeId  | 
                           
                               string  | 
                           
                               Yes  | 
                           
                               Graph node. Caution: a physical node does not have the same ID in another graph.  | 
                        
(pickupDeliveryConstraints) contraintes
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               maxDetourDuration  | 
                           
                               long  | 
                           
                               Yes  | 
                           
                               Maximum duration of detour (in seconds). Only resulting journeys for which the duration added is less than this limit will
                                 be returned by the web service.  | 
                        
| 
                               minSharedDistance  | 
                           
                               long  | 
                           
                               Yes  | 
                           
                               Minimum value of common distance ratio. Only those resulting journeys for which the common distance ratio exceeds this limit
                                 will be returned by the web service.  | 
                        
(pickupDeliverySortingOptions) sort
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               routesAndCandidatesSortCriterium  | 
                           
                               (sortCriteriaEnum)  | 
                           
                               Yes  | 
                           
                               Sort options:  | 
                        
(pickupDeliverySizes) number of returns
| parameter | type | optional | description | 
|---|---|---|---|
| 
                               routes  | 
                           
                               long  | 
                           
                               No  | 
                           
                               Maximum number of journeys to return.  | 
                        
| 
                               candidates  | 
                           
                               long  | 
                           
                               No  | 
                           
                               Maximum number of candidates to return for each journey.  | 
                        
Output
| parameter | type | description | 
|---|---|---|
| 
                               results  | 
                           
                               array of results/result (pickupDeliveryRouteResult)  | 
                           
                               List of journeys calculated.  | 
                        
(pickupDeliveryRouteResult) list of journeys calculated
| parameter | type | description | 
|---|---|---|
| 
                               routeId  | 
                           
                               string  | 
                           
                               List of journeys calculated.  | 
                        
| 
                               candidates  | 
                           
                               array of candidates/candidate (pickupDeliveryRouteCandidate)  | 
                           
                               List of possible detours for the journey.  | 
                        
(pickupDeliveryRouteCandidate) list of detours possible for the journey
| parameter | type | description | 
|---|---|---|
| 
                               pickup  | 
                           
                               (meetingPointCandidate)  | 
                           
                               Pick-up candidate.  | 
                        
| 
                               delivery  | 
                           
                               (meetingPointCandidate)  | 
                           
                               Drop-off candidate.  | 
                        
| 
                               sharedRouteDuration  | 
                           
                               long  | 
                           
                               Common journey duration (in seconds).  | 
                        
| 
                               sharedRouteDistance  | 
                           
                               long  | 
                           
                               Common journey distance (in meters).  | 
                        
| 
                               totalDurationWithDetour  | 
                           
                               long  | 
                           
                               Total journey duration including the detour (in seconds).  | 
                        
| 
                               totalDistanceWithDetour  | 
                           
                               long  | 
                           
                               Total journey distance including the detour (in meters).  | 
                        
| 
                               detourDuration  | 
                           
                               long  | 
                           
                               Detour duration = (duration with detour) - (original journey duration)  | 
                        
| 
                               detourDistance  | 
                           
                               long  | 
                           
                               Detour distance = (distance with detour) - (original journey distance)  | 
                        
| 
                               sharedDistance  | 
                           
                               double  | 
                           
                               Common distance = ratio between (common distance) and (Total journey distance including the detour)  | 
                        
(meetingPointCandidate) candidates
| parameter | type | description | 
|---|---|---|
| 
                               meetingPointId  | 
                           
                               string  | 
                           
                               Identifier for the pickup/drop-off location  | 
                        
| 
                               duration  | 
                           
                               long  | 
                           
                               For a pickup link: duration from the journey departure point to the pickup point (in seconds)  | 
                        
| 
                               distance  | 
                           
                               long  | 
                           
                               For a pickup link: distance from the journey departure point to the pickup point (in meters)  | 
                        
| 
                               meetingPointSubPath  | 
                           
                               int  | 
                           
                               Optimum segment position (in the journey) for the pickup/drop-off point.  | 
                        
Case of an optimization applied successfully
{
   "steps": [
      {
        "x": 2.33906,
        "y": 48.84467,
        "id": "1",
        "duration": 600000,
        "effectiveStart": 0,
        "driveDistanceBefore": 0,
        "driveDistanceAfter": 5057,
        "driveTimeBefore": 0,
        "driveTimeAfter": 737740,
        "timeWindows": [
          {
            "start": 0,
            "end": 3600000
          },
          [...]
        ]
      },
      [...]
   ],
   "distanceMeters": 13502,
   "durationSeconds": 2015
}
- 1. How perform a route calculation without including any road tolls?
 - 2. What are the maximum values allowed by predefined configName?
 - 3. What are the exclusions available?
 - 4. What are the Hazardous material exclusions?
 - 5. What are Speed Patterns? How are they used?
 - 6. How do you use heavy goods vehicle attributes?
 

