Calcul d’itinéraire

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

Ce web service calcule un itinéraire entre deux points et renvoie une feuille de route complète. L’ajout d'étapes intermédiaires est une possibilité. Il s’appuie sur le graphe paramétré dont le nom a été spécifié dans l’interface d’administration de Geoconcept Web.

Disponibilité

Ce web service est disponible en permanence avec Geoconcept Web et un graphe.

Changement de version

Les versions précédente du web service sont conservées dans Geoconcept Web pour assurer la compatibilité avec les développements antérieurs. Il est recommandé d’utiliser la version la plus récente.

Changements avec la v6

  • Ajout des paramètres "formatItems" et "fields".

Changements avec la v5

  • Ajout des paramètres "maxCost", "timeOut" et "computeOptions".
  • Ajout dans la snapMethod "nodes" de l’accrochage aux noeuds les plus proches.
  • Ajout des formats "compressedgeometry" et "compressedsimplifiedgeometry" avec utilisation de l’algorithme de compression encodage de polylines (Encoded Polyline Algorithm Format) qui permet de stocker les coordonnées dans une simple chaîne de caractères ASCII afin de réduire de manière significative la taille globale des données.
  • Ajout du format "tollcost", nécessite une licence d’accès à la plateforme HERE.

Changements avec la v4

  • Ajout de la notion de noeud, plus rapide, pour s’accrocher aux noeuds du graphe plutôt qu’a des coordonnées géographiques. Ajout des éléments suivants : "originNode", "destinationNode", "waypointNodes", de "node" dans le paramètre format et de "nodes" dans le paramètre snapMethod.
  • Ajout dans la réponse des éléments suivants : "originNode", "destinationNode", "waypointNodes" et "carbonFootprint".
  • Ajout des paramètres "avoidArea" et "configName".

Changements avec la v3

  • Ajout du paramètre "snapMethod"
  • Suppression du paramètre "projection", remplacé par "srs"
  • Suppression du paramètre "RejectFlags", remplacé par "exclusions"
  • Changement du typage des paramètres "distanceMeters" et "durationSeconds" de string/Double à double
  • Les paramètres "geometryWkt" et "simplifiedWkt" sont renommés respectivement "wktGeometry" et "wktSimplifiedGeometry"
  • Le paramètre "navInstruction" est renommé "navigationInstruction"
  • Dans RouteResultV3 ajout du paramètre "srs"
  • Le paramètre "elapsedTimeSeconds" est renommé "durationSeconds" et son typage passe de string à double
  • Le paramètre "coordinates" est renommé "location"

Changements avec la V2

  • Ajout du paramètre "timeLine"
  • Suppression des paramètres "map" et "applyMapPrecisionOut"
  • Les paramètres "distance" et "duration" sont renommés respectivement "distanceMeters" et "durationSeconds"

V6

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

originNode

Noeud de départ. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destinationNode

Noeud d’arrivée. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

waypointNodes

Noeuds d'étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypointNode>
Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie
- compressedgeometry : résultat = résumé de l’itinéraire / bornes / géometrie compressée avec encodage de polylines
- compressedsimplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géometrie simplifiée compressée avec encodage de polylines
- node : résultat = résumé de l’itinéraire / id des noeuds accrochés
- completegeometry : result = résumé de l’itinéraire / bornes / géométrie au format wkt / liste de segments concaténés avec géométrie au format wkt+ - compresscompletegeometry : result = résumé de l’itinéraire / bornes / géometrie simplifiée compressée avec encodage de polylines / liste de segments concaténés et géometrie compressée avec encodage de polylines
- tollcost : résultat = résumé de l’itinéraire / montant des péages. Le montant est calculé en fonction du type de véhicule définit configName ainsi que de la date/heure du départ de l’itinéraire startDateTime
- custom : retourne la liste des items déclarés dans le paramètre customFormat.

oui

standard

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName (déprécié)

Nom du graphe à utiliser
Ce paramètre est omis si le paramètre configName est utilisé.

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

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

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère ; (Exemple : Toll, Tunnel, Bridge)

oui

timeLine

Liste de durées intermédiaires pour calculer des positions le long du trajet. Exprimées en secondes, séparés par le caractère ;. La position retournée correspond au noeud précédent, sur le trajet, connectable au réseau. Par exemple, sur une autoroute, la position renvoyée est celle la dernière sortie ou aire de service avant la position demandée.

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

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

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

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"
- fuelType : type de carburant utilisé pour la calcul de l’empreinte carbone du trajet. Les valeurs disponibles sont : "UndefinedFuelType", "NoFuel", "Diesel", "UnleadedFuel", "LGP" et "CustomFuelType". Usage : "fuelType:Diesel"
- averageConsumption : consommation moyenne en litre pour 100 kilomètres. Usage : "averageConsumption:6.45"
- customAverageCO2UnitEmission : définit l’empreinte carbone en kilograme par litre. Usage : "customAverageCO2UnitEmission:2.724"
- snapSpeed : vitesse d’accrochage au graphe en kilomètre par heure. Usage : "snapSpeed:10"

oui

maxCost

Coût maximum à ne pas dépasser dans le calcul
-1 : pas de coût maximum à prendre en compte
0 : prendre la valeur par default défini dans la configuration de SmartRouting Server
sinon : valeur en mètres si method=distance ou en secondes si method=time

oui

timeOut

Time out pour le calcul (en millisecondes)

oui

formatItems

Liste des items de formats disponibles, si le paramètre format est définit sur custom
- ROUTE_DISTANCE
- ROUTE_DURATION
- ROUTE_DISTANCE_FORMATTED
- ROUTE_DURATION_FORMATTED
- ROUTE_BOUNDS
- SRS
- ROUTE_CARBON_FOOTPRINT
- START_FINISH_DATETIME
- SUBROUTE_DISTANCE
- SUBROUTE_DURATION
- SUBROUTE_DISTANCE_FORMATTED
- SUBROUTE_DURATION_FORMATTED
- SEGMENT_DISTANCE
- SEGMENT_DURATION
- SEGMENT_DISTANCE_FORMATTED
- SEGMENT_DURATION_FORMATTED
- SEGMENT_NAME
- SEGMENT_NAVIGATIONINSTRUCTION
- SEGMENT_POINTSLIST
- SEGMENT_FIELDSVALUES
- SEGMENT_UNCONSOLIDATED
- ROUTE_GEOMETRY_WKT
- ROUTE_SIMPLIFIEDGEOMETRY_WKT
- ROUTE_GEOMETRY_COMPRESSED
- ROUTE_SIMPLIFIEDGEOMETRY_COMPRESSED
- SUBROUTE_GEOMETRY_WKT
- SUBROUTE_GEOMETRY_COMPRESSED
- TIMELINE
- POINTS_GRAPHNODES
- ROUTE_TOLLCOST
- COMPUTATION_TIME

oui

fields

Liste des champs à afficher en resultat de chaque segment (pour les format standard et extended)
- Iso country code
- Country
- Postcode left
- Postcode right
- City name left
- City name right
- Ramp
- Urban
- Tunnel
- Toll
- Bicycles
- Automobiles
- Frontage
- Bridge

oui

(M18) Disponible à partir de la version M18 des graphes fournis par GEOCONCEPT SAS.

En sortie

Itinéraire (routeResultV6)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

wktGeometry

string

0/1

Géométrie de l’itinéraire au format WKT.

wktSimplified

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRouteV5 (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItemV5 (ou array en JSON / JSON-P)

0/illimité

Liste des positions calculées.

srs

string

0/1

projection passée en entrée (code EPSG comme epsg:4326 ou wgs84)

originNode

string

0/1

Identifiant du noeud de départ (renseigné si format=NODE).

destinationNode

string

0/1

Identifiant du noeud d’arrivée (renseigné si format=NODE).

waypointNodes

array de waypointNodes (string)

0/illimité

Identifiants des noeuds d'étapes (renseigné si format=NODE).

carbonFootprint

double

0/1

Empreinte carbone (émission CO2 en kilogrammes)

tollCost

Array de tollCost

0/illimité

Information sur le coût des péages (renseigné si format=tollCost).

fieldsNames

Array de fields

0/illimité

liste des champs demandés avec le paramètre field.

Portion d’itinéraire (subRouteV6)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segmentV5 (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segmentV6)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

Position d’itinéraire (timeLineItemV6)

paramètre type min/max description

durationSeconds

double

0/1

Durée de l’itinéraire en secondes jusquà cette position.

message

string

0/1

Message d’erreur pour cette position.

status

string

0/1

Status de cette position.

distanceMeters

double

0/1

Distance de l’itinéraire en mètres jusquà cette position.

location

string

0/1

Coordonnées de la position.

Coût des péages (tollCost)

paramètre type min/max description

amount

double

0/1

Coût total des péages.

currency

string

0/1

Devise.

costsByCountry

Array de costsByCountry

0/unlimited

Liste des coût des péages par pays.

Coût des péages par pays (costsByCountry)

paramètre type min/max description

amount

double

0/1

Coût des péages.

country

string

0/1

Code pays (3-lettres ISO codes pays).

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:routeV6>
         <!--Optional:-->
         <request>
            <origin>
               <x>-1.351448</x>
               <y>47.446923</y>
            </origin>
            <!--Optional:-->
            <originNode></originNode>
            <destination>
               <x>-1.34529</x>
               <y>47.4479931</y>
            </destination>
            <!--Optional:-->
            <destinationNode></destinationNode>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                  <x>-1.34981</x>
                  <y>47.44837</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <waypointNodes>
               <!--Zero or more repetitions:-->
               <waypointNode></waypointNode>
            </waypointNodes>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <format>STANDARD</format>
            <!--Optional:-->
            <tolerance>0.</tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <timeLine>
               <!--Zero or more repetitions:-->
               <timeLineItem></timeLineItem>
            </timeLine>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <computeOptions></computeOptions>
            <!--Optional:-->
            <timeOut></timeOut>
            <!--Optional:-->
            <configName></configName>
         </request>
      </sch:routeV6>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeV6Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>640 m</distance>
            <duration>0:02:06</duration>
            <distanceMeters>639.97</distanceMeters>
            <durationSeconds>126.88</durationSeconds>
            <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
            <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, [...] ,  -1.34529 47.447993)</wktGeometry>
            <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] , -1.34529 47.447993)</wktSimplifiedGeometry>
            <leg>
               <distance>233 m</distance>
               <duration>0:00:46</duration>
               <distanceMeters>233.1</distanceMeters>
               <durationSeconds>46.28</durationSeconds>
               <step>
                  <distance>139 m</distance>
                  <duration>0:00:29</duration>
                  <distanceMeters>138.59</distanceMeters>
                  <durationSeconds>29.28</durationSeconds>
                  <name>RUE LA FONTAINE BRUNEAU</name>
               </step>
               <step>
                  <distance>91 m</distance>
                  <duration>0:00:16</duration>
                  <distanceMeters>91.33</distanceMeters>
                  <durationSeconds>16.43</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DES SAULES</name>
               </step>
               <step>
                  <distance>3 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>3.18</distanceMeters>
                  <durationSeconds>0.57</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name />
               </step>
            </leg>
            <leg>
               <distance>407 m</distance>
               <duration>0:01:20</duration>
               <distanceMeters>406.87</distanceMeters>
               <durationSeconds>80.6</durationSeconds>
               <step>
                  <distance>18 m</distance>
                  <duration>0:00:03</duration>
                  <distanceMeters>17.64</distanceMeters>
                  <durationSeconds>3.17</durationSeconds>
                  <name />
               </step>
               <step>
                  <distance>67 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>66.62</distanceMeters>
                  <durationSeconds>15.05</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DES FOURS</name>
               </step>
               <step>
                  <distance>36 m</distance>
                  <duration>0:00:08</duration>
                  <distanceMeters>35.74</distanceMeters>
                  <durationSeconds>8.57</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>PLACE DE L'ÉGLISE</name>
               </step>
               <step>
                  <distance>72 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>72.25</distanceMeters>
                  <durationSeconds>15.24</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>RUE DES PRESSOIRS</name>
               </step>
               <step>
                  <distance>26 m</distance>
                  <duration>0:00:04</duration>
                  <distanceMeters>26.02</distanceMeters>
                  <durationSeconds>4.68</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name />
               </step>
               <step>
                  <distance>183 m</distance>
                  <duration>0:00:32</duration>
                  <distanceMeters>182.84</distanceMeters>
                  <durationSeconds>32.91</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DU BOURG DRAPÉ</name>
               </step>
               <step>
                  <distance>6 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>5.76</distanceMeters>
                  <durationSeconds>0.98</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DE LA CURE</name>
               </step>
            </leg>
            <srs>epsg:4326</srs>
            <carbonFootprint>0.0</carbonFootprint>
         </RouteResult>
      </ns2:routeV6Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route/v6.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route/v6.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route/v6.xml?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
    "message": null,
    "status": "OK",
    "distance": "640 m",
    "duration": "0:02:09",
    "distanceMeters": 639.95,
    "durationSeconds": 129.48,
    "bounds": "-1.351448,47.446922;-1.345263,47.44848",
    "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "legs": [
        {
            "distance": "233 m",
            "duration": "0:00:46",
            "distanceMeters": 233.09,
            "durationSeconds": 46.84,
            "steps": [
                {
                    "distance": "139 m",
                    "duration": "0:00:29",
                    "distanceMeters": 138.59,
                    "durationSeconds": 29.83,
                    "navigationInstruction": null,
                    "name": "RUE LA FONTAINE BRUNEAU",
                    "points": []
                },
                {
                    [...]
                }
            ]
        },
        {
            "distance": "407 m",
            "duration": "0:01:22",
            "distanceMeters": 406.86,
            "durationSeconds": 82.64,
            "steps": [
                {
                    "distance": "18 m",
                    "duration": "0:00:03",
                    "distanceMeters": 17.63,
                    "durationSeconds": 3.18,
                    "navigationInstruction": null,
                    "name": "",
                    "points": []
                },
                {
                   [...]
                }
            ]
        }
    ],
    "startDateTime": null,
    "finishDateTime": null,
    "srs": null,
    "originNode": null,
    "waypointNodes": null,
    "destinationNode": null,
    "carbonFootprint": 0.195038864105688
}

Format JSON-P 

myCallback(
    {
        "message": null,
        "status": "OK",
        "distance": "640 m",
        "duration": "0:02:09",
        "distanceMeters": 639.95,
        "durationSeconds": 129.48,
        "bounds": "-1.351448,47.446922;-1.345263,47.44848",
        "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "legs": [
            {
                "distance": "233 m",
                "duration": "0:00:46",
                "distanceMeters": 233.09,
                "durationSeconds": 46.84,
                "steps": [
                    {
                        "distance": "139 m",
                        "duration": "0:00:29",
                        "distanceMeters": 138.59,
                        "durationSeconds": 29.83,
                        "navigationInstruction": null,
                        "name": "RUE LA FONTAINE BRUNEAU",
                        "points": []
                    },
                    {
                        [...]
                    }
                ]
            },
            {
                "distance": "407 m",
                "duration": "0:01:22",
                "distanceMeters": 406.86,
                "durationSeconds": 82.64,
                "steps": [
                    {
                        "distance": "18 m",
                        "duration": "0:00:03",
                        "distanceMeters": 17.63,
                        "durationSeconds": 3.18,
                        "navigationInstruction": null,
                        "name": "",
                        "points": []
                    },
                    {
                       [...]
                    }
                ]
            }
        ],
        "startDateTime": null,
        "finishDateTime": null,
        "srs": null,
        "originNode": null,
        "waypointNodes": null,
        "destinationNode": null,
        "carbonFootprint": 0.195038864105688
    }
);

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV6>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV6>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route/v5.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResultV6/status est OK) 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV6>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV6>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResultV6/status est ERROR) 

<routeResultV6>
   <message>Origin and destination must be not null</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV6>

Cas d’un mauvais formatage du point de départ, d’arrivée ou des étapes (routeResultV6/status est ERROR) 

<routeResultV6>
   <message>Origin, destination and waypoints should be represented by a couple of coordinates</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV6>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 146.691012, 47.384813, 0.000000 }
failed to connect waypoint { 146.691012, 47.384813, 0.000000 }</message>
   <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

V5

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

originNode

Noeud de départ. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destinationNode

Noeud d’arrivée. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

waypointNodes

Noeuds d'étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypointNode>
Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie
- compressedgeometry : résultat = résumé de l’itinéraire / bornes / géometrie compressée avec encodage de polylines
- compressedsimplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géometrie simplifiée compressée avec encodage de polylines
- node : résultat = résumé de l’itinéraire / id des noeuds accrochés
- completegeometry : result = résumé de l’itinéraire / bornes / géométrie au format wkt / liste de segments concaténés avec géométrie au format wkt+ - compresscompletegeometry : result = résumé de l’itinéraire / bornes / géometrie simplifiée compressée avec encodage de polylines / liste de segments concaténés et géometrie compressée avec encodage de polylines
- tollcost: résultat = résumé de l’itinéraire / montant des péages. Le montant est calculé en fonction du type de véhicule définit configName ainsi que de la date/heure du départ de l’itinéraire startDateTime.

oui

standard

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName (déprécié)

Nom du graphe à utiliser
Ce paramètre est omis si le paramètre configName est utilisé.

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

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

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère ; (Exemple : Toll, Tunnel, Bridge)

oui

timeLine

Liste de durées intermédiaires pour calculer des positions le long du trajet. Exprimées en secondes, séparés par le caractère ;. La position retournée correspond au noeud précédent, sur le trajet, connectable au réseau. Par exemple, sur une autoroute, la position renvoyée est celle la dernière sortie ou aire de service avant la position demandée.

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

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

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

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"
- fuelType : type de carburant utilisé pour la calcul de l’empreinte carbone du trajet. Les valeurs disponibles sont : "UndefinedFuelType", "NoFuel", "Diesel", "UnleadedFuel", "LGP" et "CustomFuelType". Usage : "fuelType:Diesel"
- averageConsumption : consommation moyenne en litre pour 100 kilomètres. Usage : "averageConsumption:6.45"
- customAverageCO2UnitEmission : définit l’empreinte carbone en kilograme par litre. Usage : "customAverageCO2UnitEmission:2.724"
- snapSpeed : vitesse d’accrochage au graphe en kilomètre par heure. Usage : "snapSpeed:10"

oui

maxCost

Coût maximum à ne pas dépasser dans le calcul
-1 : pas de coût maximum à prendre en compte
0 : prendre la valeur par default défini dans la configuration de SmartRouting Server
sinon : valeur en mètres si method=distance ou en secondes si method=time

oui

timeOut

Time out pour le calcul (en millisecondes)

oui

(M18) Disponible à partir de la version M18 des graphes fournis par GEOCONCEPT SAS.

En sortie

Itinéraire (routeResultV5)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

wktGeometry

string

0/1

Géométrie de l’itinéraire au format WKT.

wktSimplified

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRouteV5 (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItemV5 (ou array en JSON / JSON-P)

0/illimité

Liste des positions calculées.

srs

string

0/1

projection passée en entrée (code EPSG comme epsg:4326 ou wgs84)

originNode

string

0/1

Identifiant du noeud de départ (renseigné si format=NODE).

destinationNode

string

0/1

Identifiant du noeud d’arrivée (renseigné si format=NODE).

waypointNodes

array de waypointNodes (string)

0/illimité

Identifiants des noeuds d'étapes (renseigné si format=NODE).

carbonFootprint

double

0/1

Empreinte carbone (émission CO2 en kilogrammes)

tollCost

Array de tollCost

0/illimité

Information sur le coût des péages (renseigné si format=tollCost).

Portion d’itinéraire (subRouteV5)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segmentV5 (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segmentV5)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

Position d’itinéraire (timeLineItemV5)

paramètre type min/max description

durationSeconds

double

0/1

Durée de l’itinéraire en secondes jusquà cette position.

message

string

0/1

Message d’erreur pour cette position.

status

string

0/1

Status de cette position.

distanceMeters

double

0/1

Distance de l’itinéraire en mètres jusquà cette position.

location

string

0/1

Coordonnées de la position.

Coût des péages (tollCost)

paramètre type min/max description

amount

double

0/1

Coût total des péages.

currency

string

0/1

Devise.

costsByCountry

Array de costsByCountry

0/unlimited

Liste des coût des péages par pays.

Coût des péages par pays (costsByCountry)

paramètre type min/max description

amount

double

0/1

Coût des péages.

country

string

0/1

Code pays (3-lettres ISO codes pays).

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:routeV5>
         <!--Optional:-->
         <request>
            <origin>
               <x>-1.351448</x>
               <y>47.446923</y>
            </origin>
            <!--Optional:-->
            <originNode></originNode>
            <destination>
               <x>-1.34529</x>
               <y>47.4479931</y>
            </destination>
            <!--Optional:-->
            <destinationNode></destinationNode>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                  <x>-1.34981</x>
                  <y>47.44837</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <waypointNodes>
               <!--Zero or more repetitions:-->
               <waypointNode></waypointNode>
            </waypointNodes>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <format>STANDARD</format>
            <!--Optional:-->
            <tolerance>0.</tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <timeLine>
               <!--Zero or more repetitions:-->
               <timeLineItem></timeLineItem>
            </timeLine>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <computeOptions></computeOptions>
            <!--Optional:-->
            <timeOut></timeOut>
            <!--Optional:-->
            <configName></configName>
         </request>
      </sch:routeV5>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeV5Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>640 m</distance>
            <duration>0:02:06</duration>
            <distanceMeters>639.97</distanceMeters>
            <durationSeconds>126.88</durationSeconds>
            <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
            <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, [...] ,  -1.34529 47.447993)</wktGeometry>
            <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] , -1.34529 47.447993)</wktSimplifiedGeometry>
            <leg>
               <distance>233 m</distance>
               <duration>0:00:46</duration>
               <distanceMeters>233.1</distanceMeters>
               <durationSeconds>46.28</durationSeconds>
               <step>
                  <distance>139 m</distance>
                  <duration>0:00:29</duration>
                  <distanceMeters>138.59</distanceMeters>
                  <durationSeconds>29.28</durationSeconds>
                  <name>RUE LA FONTAINE BRUNEAU</name>
               </step>
               <step>
                  <distance>91 m</distance>
                  <duration>0:00:16</duration>
                  <distanceMeters>91.33</distanceMeters>
                  <durationSeconds>16.43</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DES SAULES</name>
               </step>
               <step>
                  <distance>3 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>3.18</distanceMeters>
                  <durationSeconds>0.57</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name />
               </step>
            </leg>
            <leg>
               <distance>407 m</distance>
               <duration>0:01:20</duration>
               <distanceMeters>406.87</distanceMeters>
               <durationSeconds>80.6</durationSeconds>
               <step>
                  <distance>18 m</distance>
                  <duration>0:00:03</duration>
                  <distanceMeters>17.64</distanceMeters>
                  <durationSeconds>3.17</durationSeconds>
                  <name />
               </step>
               <step>
                  <distance>67 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>66.62</distanceMeters>
                  <durationSeconds>15.05</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DES FOURS</name>
               </step>
               <step>
                  <distance>36 m</distance>
                  <duration>0:00:08</duration>
                  <distanceMeters>35.74</distanceMeters>
                  <durationSeconds>8.57</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>PLACE DE L'ÉGLISE</name>
               </step>
               <step>
                  <distance>72 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>72.25</distanceMeters>
                  <durationSeconds>15.24</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>RUE DES PRESSOIRS</name>
               </step>
               <step>
                  <distance>26 m</distance>
                  <duration>0:00:04</duration>
                  <distanceMeters>26.02</distanceMeters>
                  <durationSeconds>4.68</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name />
               </step>
               <step>
                  <distance>183 m</distance>
                  <duration>0:00:32</duration>
                  <distanceMeters>182.84</distanceMeters>
                  <durationSeconds>32.91</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DU BOURG DRAPÉ</name>
               </step>
               <step>
                  <distance>6 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>5.76</distanceMeters>
                  <durationSeconds>0.98</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DE LA CURE</name>
               </step>
            </leg>
            <srs>epsg:4326</srs>
            <carbonFootprint>0.0</carbonFootprint>
         </RouteResult>
      </ns2:routeV5Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route/v5.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route/v5.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
    "message": null,
    "status": "OK",
    "distance": "640 m",
    "duration": "0:02:09",
    "distanceMeters": 639.95,
    "durationSeconds": 129.48,
    "bounds": "-1.351448,47.446922;-1.345263,47.44848",
    "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "legs": [
        {
            "distance": "233 m",
            "duration": "0:00:46",
            "distanceMeters": 233.09,
            "durationSeconds": 46.84,
            "steps": [
                {
                    "distance": "139 m",
                    "duration": "0:00:29",
                    "distanceMeters": 138.59,
                    "durationSeconds": 29.83,
                    "navigationInstruction": null,
                    "name": "RUE LA FONTAINE BRUNEAU",
                    "points": []
                },
                {
                    [...]
                }
            ]
        },
        {
            "distance": "407 m",
            "duration": "0:01:22",
            "distanceMeters": 406.86,
            "durationSeconds": 82.64,
            "steps": [
                {
                    "distance": "18 m",
                    "duration": "0:00:03",
                    "distanceMeters": 17.63,
                    "durationSeconds": 3.18,
                    "navigationInstruction": null,
                    "name": "",
                    "points": []
                },
                {
                   [...]
                }
            ]
        }
    ],
    "startDateTime": null,
    "finishDateTime": null,
    "srs": null,
    "originNode": null,
    "waypointNodes": null,
    "destinationNode": null,
    "carbonFootprint": 0.195038864105688
}

Format JSON-P 

myCallback(
    {
        "message": null,
        "status": "OK",
        "distance": "640 m",
        "duration": "0:02:09",
        "distanceMeters": 639.95,
        "durationSeconds": 129.48,
        "bounds": "-1.351448,47.446922;-1.345263,47.44848",
        "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "legs": [
            {
                "distance": "233 m",
                "duration": "0:00:46",
                "distanceMeters": 233.09,
                "durationSeconds": 46.84,
                "steps": [
                    {
                        "distance": "139 m",
                        "duration": "0:00:29",
                        "distanceMeters": 138.59,
                        "durationSeconds": 29.83,
                        "navigationInstruction": null,
                        "name": "RUE LA FONTAINE BRUNEAU",
                        "points": []
                    },
                    {
                        [...]
                    }
                ]
            },
            {
                "distance": "407 m",
                "duration": "0:01:22",
                "distanceMeters": 406.86,
                "durationSeconds": 82.64,
                "steps": [
                    {
                        "distance": "18 m",
                        "duration": "0:00:03",
                        "distanceMeters": 17.63,
                        "durationSeconds": 3.18,
                        "navigationInstruction": null,
                        "name": "",
                        "points": []
                    },
                    {
                       [...]
                    }
                ]
            }
        ],
        "startDateTime": null,
        "finishDateTime": null,
        "srs": null,
        "originNode": null,
        "waypointNodes": null,
        "destinationNode": null,
        "carbonFootprint": 0.195038864105688
    }
);

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV5>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV5>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route/v5.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResultV5/status est OK) 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV5>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV5>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResultV5/status est ERROR) 

<routeResultV5>
   <message>Origin and destination must be not null</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV5>

Cas d’un mauvais formatage du point de départ, d’arrivée ou des étapes (routeResultV5/status est ERROR) 

<routeResultV5>
   <message>Origin, destination and waypoints should be represented by a couple of coordinates</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV5>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 146.691012, 47.384813, 0.000000 }
failed to connect waypoint { 146.691012, 47.384813, 0.000000 }</message>
   <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

V4

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

originNode

Noeud de départ. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destinationNode

Noeud d’arrivée. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

waypointNodes

Noeuds d'étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypointNode>
Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie.
- node : résultat = résumé de l’itinéraire + Id des noeuds accrochés

oui

standard

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName

Nom du graphe à utiliser
Ce paramètre est omis si le paramètre configName est utilisé.

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

profileId

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

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

oui

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère , ou ; (Exemple : Toll, Tunnel, Bridge)

oui

timeLine

Liste de durées intermédiaires pour calculer des positions le long du trajet. Exprimées en secondes, séparés par le caractère ;

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 fourni par les paramètres originNode, destinationNode and waypointNodes

oui

standard

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

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

En sortie

Itinéraire (routeResultV4)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

wktGeometry

string

0/1

Géométrie de l’itinéraire au format WKT.

wktSimplified

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRouteV4 (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItemV4 (ou array en JSON / JSON-P)

0/illimité

Liste des positions calculées.

srs

string

0/1

projection passée en entrée (code EPSG comme epsg:4326 ou wgs84)

originNode

string

0/1

Identifiant du noeud de départ (renseigné si format=NODE).

destinationNode

string

0/1

Identifiant du noeud d’arrivée (renseigné si format=NODE).

waypointNodes

array de waypointNodes (string)

0/illimité

Identifiants des noeuds d'étapes (renseigné si format=NODE).

carbonFootprint

double

0/1

Empreinte carbone (émission CO2 en kilogrammes)

Portion d’itinéraire (subRouteV4)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segmentV4 (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segmentV4)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

Position d’itinéraire (timeLineItemV4)

paramètre type min/max description

durationSeconds

double

0/1

Durée de l’itinéraire en secondes jusquà cette position.

message

string

0/1

Message d’erreur pour cette position.

status

string

0/1

Status de cette position.

distanceMeters

double

0/1

Distance de l’itinéraire en mètres jusquà cette position.

location

string

0/1

Coordonnées de la position.

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:routeV4>
         <!--Optional:-->
         <request>
            <origin>
               <x>-1.351448</x>
               <y>47.446923</y>
            </origin>
            <!--Optional:-->
            <originNode></originNode>
            <destination>
               <x>-1.34529</x>
               <y>47.4479931</y>
            </destination>
            <!--Optional:-->
            <destinationNode></destinationNode>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                  <x>-1.34981</x>
                  <y>47.44837</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <waypointNodes>
               <!--Zero or more repetitions:-->
               <waypointNode></waypointNode>
            </waypointNodes>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <format>STANDARD</format>
            <!--Optional:-->
            <tolerance>0.</tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <timeLine>
               <!--Zero or more repetitions:-->
               <timeLineItem></timeLineItem>
            </timeLine>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <configName></configName>
         </request>
      </sch:routeV4>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeV4Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>640 m</distance>
            <duration>0:02:06</duration>
            <distanceMeters>639.95</distanceMeters>
            <durationSeconds>126.88</durationSeconds>
            <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
            <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] )</wktGeometry>
            <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] )</wktSimplifiedGeometry>
            <leg>
               <distance>233 m</distance>
               <duration>0:00:46</duration>
               <distanceMeters>233.09</distanceMeters>
               <durationSeconds>46.28</durationSeconds>
               <step>
                  <distance>139 m</distance>
                  <duration>0:00:29</duration>
                  <distanceMeters>138.59</distanceMeters>
                  <durationSeconds>29.28</durationSeconds>
                  <name>RUE LA FONTAINE BRUNEAU</name>
               </step>
               <step>
                  <distance>91 m</distance>
                  <duration>0:00:16</duration>
                  <distanceMeters>91.33</distanceMeters>
                  <durationSeconds>16.43</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DES SAULES</name>
               </step>
               <step>
                  <distance>3 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>3.17</distanceMeters>
                  <durationSeconds>0.57</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name/>
               </step>
            </leg>
            <leg>
               <distance>407 m</distance>
               <duration>0:01:20</duration>
               <distanceMeters>406.86</distanceMeters>
               <durationSeconds>80.6</durationSeconds>
               <step>
                  <distance>18 m</distance>
                  <duration>0:00:03</duration>
                  <distanceMeters>17.63</distanceMeters>
                  <durationSeconds>3.17</durationSeconds>
                  <name/>
               </step>
               <step>
                  <distance>67 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>66.62</distanceMeters>
                  <durationSeconds>15.05</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DES FOURS</name>
               </step>
               <step>
                  <distance>36 m</distance>
                  <duration>0:00:08</duration>
                  <distanceMeters>35.74</distanceMeters>
                  <durationSeconds>8.57</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>PLACE DE L'ÉGLISE</name>
               </step>
               <step>
                  <distance>72 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>72.25</distanceMeters>
                  <durationSeconds>15.24</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>RUE DES PRESSOIRS</name>
               </step>
               <step>
                  <distance>26 m</distance>
                  <duration>0:00:04</duration>
                  <distanceMeters>26.02</distanceMeters>
                  <durationSeconds>4.68</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name/>
               </step>
               <step>
                  <distance>183 m</distance>
                  <duration>0:00:32</duration>
                  <distanceMeters>182.84</distanceMeters>
                  <durationSeconds>32.91</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DU BOURG DRAPÉ</name>
               </step>
               <step>
                  <distance>6 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>5.76</distanceMeters>
                  <durationSeconds>0.98</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DE LA CURE</name>
               </step>
            </leg>
            <timeLineItem>
               <durationSeconds>0.0</durationSeconds>
               <status>OK</status>
               <distanceMeters>0.0</distanceMeters>
               <location>-1.351448,47.446923</location>
            </timeLineItem>
            <srs>epsg:4326</srs>
            <carbonFootprint>0.0</carbonFootprint>
         </RouteResult>
      </ns2:routeV4Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route/v4.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route/v4.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route/v4.xml?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
    "message": null,
    "status": "OK",
    "distance": "640 m",
    "duration": "0:02:09",
    "distanceMeters": 639.95,
    "durationSeconds": 129.48,
    "bounds": "-1.351448,47.446922;-1.345263,47.44848",
    "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
    "legs": [
        {
            "distance": "233 m",
            "duration": "0:00:46",
            "distanceMeters": 233.09,
            "durationSeconds": 46.84,
            "steps": [
                {
                    "distance": "139 m",
                    "duration": "0:00:29",
                    "distanceMeters": 138.59,
                    "durationSeconds": 29.83,
                    "navigationInstruction": null,
                    "name": "RUE LA FONTAINE BRUNEAU",
                    "points": []
                },
                {
                    [...]
                }
            ]
        },
        {
            "distance": "407 m",
            "duration": "0:01:22",
            "distanceMeters": 406.86,
            "durationSeconds": 82.64,
            "steps": [
                {
                    "distance": "18 m",
                    "duration": "0:00:03",
                    "distanceMeters": 17.63,
                    "durationSeconds": 3.18,
                    "navigationInstruction": null,
                    "name": "",
                    "points": []
                },
                {
                   [...]
                }
            ]
        }
    ],
    "startDateTime": null,
    "finishDateTime": null,
    "srs": null,
    "originNode": null,
    "waypointNodes": null,
    "destinationNode": null,
    "carbonFootprint": 0.195038864105688
}

Format JSON-P 

myCallback(
    {
        "message": null,
        "status": "OK",
        "distance": "640 m",
        "duration": "0:02:09",
        "distanceMeters": 639.95,
        "durationSeconds": 129.48,
        "bounds": "-1.351448,47.446922;-1.345263,47.44848",
        "wktGeometry": "LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
        "legs": [
            {
                "distance": "233 m",
                "duration": "0:00:46",
                "distanceMeters": 233.09,
                "durationSeconds": 46.84,
                "steps": [
                    {
                        "distance": "139 m",
                        "duration": "0:00:29",
                        "distanceMeters": 138.59,
                        "durationSeconds": 29.83,
                        "navigationInstruction": null,
                        "name": "RUE LA FONTAINE BRUNEAU",
                        "points": []
                    },
                    {
                        [...]
                    }
                ]
            },
            {
                "distance": "407 m",
                "duration": "0:01:22",
                "distanceMeters": 406.86,
                "durationSeconds": 82.64,
                "steps": [
                    {
                        "distance": "18 m",
                        "duration": "0:00:03",
                        "distanceMeters": 17.63,
                        "durationSeconds": 3.18,
                        "navigationInstruction": null,
                        "name": "",
                        "points": []
                    },
                    {
                       [...]
                    }
                ]
            }
        ],
        "startDateTime": null,
        "finishDateTime": null,
        "srs": null,
        "originNode": null,
        "waypointNodes": null,
        "destinationNode": null,
        "carbonFootprint": 0.195038864105688
    }
);

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV4>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV4>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route/v4.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResultV4/status est OK) 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV4>
        <status>OK</status>
        <distance>640 m</distance>
        <duration>0:02:09</duration>
        <distanceMeters>639.95</distanceMeters>
        <durationSeconds>129.48</durationSeconds>
        <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
        <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
        <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
        <leg>
                <distance>233 m</distance>
                <duration>0:00:46</duration>
                <distanceMeters>233.09</distanceMeters>
                <durationSeconds>46.84</durationSeconds>
                <step>
                        <distance>139 m</distance>
                        <duration>0:00:29</duration>
                        <distanceMeters>138.59</distanceMeters>
                        <durationSeconds>29.83</durationSeconds>
                        <name>RUE LA FONTAINE BRUNEAU</name>
                </step>
                <step>
            [...]
                </step>
        </leg>
        <leg>
                <distance>407 m</distance>
                <duration>0:01:22</duration>
                <distanceMeters>406.86</distanceMeters>
                <durationSeconds>82.64</durationSeconds>
                <step>
                        <distance>18 m</distance>
                        <duration>0:00:03</duration>
                        <distanceMeters>17.63</distanceMeters>
                        <durationSeconds>3.18</durationSeconds>
                        <name />
                </step>
                <step>
                        [...]
                </step>
        </leg>
        <carbonFootprint>0.195038864105688</carbonFootprint>
</routeResultV4>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResultV4/status est ERROR) 

<routeResultV4>
   <message>Origin and destination must be not null</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV4>

Cas d’un mauvais formatage du point de départ, d’arrivée ou des étapes (routeResultV4/status est ERROR) 

<routeResultV4>
   <message>Origin, destination and waypoints should be represented by a couple of coordinates</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV4>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 146.691012, 47.384813, 0.000000 }
failed to connect waypoint { 146.691012, 47.384813, 0.000000 }</message>
   <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

V3

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie.

oui

standard

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName

Nom du graphe à utiliser

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

oui

profileId

Identifiant du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

profileName

Profil du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère , ou ; (Exemple : Toll, Tunnel, Bridge)

oui

timeLine

Liste de durées intermédiaires pour calculer des positions le long du trajet. Exprimées en secondes, séparés par le caractère ;

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

oui

standard

En sortie

Itinéraire (routeResultV3)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

wktGeometry

string

0/1

Géométrie de l’itinéraire au format WKT.

wktSimplified

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRouteV3 (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItemV3 (ou array en JSON / JSON-P)

0/illimité

Liste des positions calculées.

srs

string

0/1

projection passée en entrée (code EPSG comme epsg:4326 ou wgs84)

Portion d’itinéraire (subRouteV3)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segmentV3 (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segmentV3)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

double

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

double

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

Position d’itinéraire (timeLineItemV3)

paramètre type min/max description

durationSeconds

double

0/1

Durée de l’itinéraire en secondes jusquà cette position.

message

string

0/1

Message d’erreur pour cette position.

status

string

0/1

Status de cette position.

distanceMeters

double

0/1

Distance de l’itinéraire en mètres jusquà cette position.

location

string

0/1

Coordonnées de la position.

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:routeV3>
         <!--Optional:-->
         <request>
            <origin>
               <x>-1.351448</x>
               <y>47.446923</y>
            </origin>
            <destination>
               <x>-1.34529</x>
               <y>47.4479931</y>
            </destination>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                  <x>-1.34981</x>
                  <y>47.44837</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <format>STANDARD</format>
            <!--Optional:-->
            <tolerance>0.</tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime>2015-07-29T09:00:00.000+01:00</startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <timeLine>
               <!--Zero or more repetitions:-->
               <timeLineItem>5</timeLineItem>
               <timeLineItem>15</timeLineItem>
            </timeLine>
            <!--Optional:-->
            <snapMethod></snapMethod>
         </request>
      </sch:routeV3>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeV3Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>640 m</distance>
            <duration>0:02:06</duration>
            <distanceMeters>639.95</distanceMeters>
            <durationSeconds>126.88</durationSeconds>
            <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
            <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] )</wktGeometry>
            <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922,  [...] )</wktSimplifiedGeometry>
            <leg>
               <distance>233 m</distance>
               <duration>0:00:46</duration>
               <distanceMeters>233.09</distanceMeters>
               <durationSeconds>46.28</durationSeconds>
               <step>
                  <distance>139 m</distance>
                  <duration>0:00:29</duration>
                  <distanceMeters>138.59</distanceMeters>
                  <durationSeconds>29.28</durationSeconds>
                  <name>RUE LA FONTAINE BRUNEAU</name>
               </step>
               <step>
                  <distance>91 m</distance>
                  <duration>0:00:16</duration>
                  <distanceMeters>91.33</distanceMeters>
                  <durationSeconds>16.43</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DES SAULES</name>
               </step>
               <step>
                  <distance>3 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>3.17</distanceMeters>
                  <durationSeconds>0.57</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name/>
               </step>
            </leg>
            <leg>
               <distance>407 m</distance>
               <duration>0:01:20</duration>
               <distanceMeters>406.86</distanceMeters>
               <durationSeconds>80.6</durationSeconds>
               <step>
                  <distance>18 m</distance>
                  <duration>0:00:03</duration>
                  <distanceMeters>17.63</distanceMeters>
                  <durationSeconds>3.17</durationSeconds>
                  <name/>
               </step>
               <step>
                  <distance>67 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>66.62</distanceMeters>
                  <durationSeconds>15.05</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DES FOURS</name>
               </step>
               <step>
                  <distance>36 m</distance>
                  <duration>0:00:08</duration>
                  <distanceMeters>35.74</distanceMeters>
                  <durationSeconds>8.57</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>PLACE DE L'ÉGLISE</name>
               </step>
               <step>
                  <distance>72 m</distance>
                  <duration>0:00:15</duration>
                  <distanceMeters>72.25</distanceMeters>
                  <durationSeconds>15.24</durationSeconds>
                  <navigationInstruction>F</navigationInstruction>
                  <name>RUE DES PRESSOIRS</name>
               </step>
               <step>
                  <distance>26 m</distance>
                  <duration>0:00:04</duration>
                  <distanceMeters>26.02</distanceMeters>
                  <durationSeconds>4.68</durationSeconds>
                  <navigationInstruction>round_about_entry</navigationInstruction>
                  <name/>
               </step>
               <step>
                  <distance>183 m</distance>
                  <duration>0:00:32</duration>
                  <distanceMeters>182.84</distanceMeters>
                  <durationSeconds>32.91</durationSeconds>
                  <navigationInstruction>round_about_exit</navigationInstruction>
                  <name>RUE DU BOURG DRAPÉ</name>
               </step>
               <step>
                  <distance>6 m</distance>
                  <duration>0:00:00</duration>
                  <distanceMeters>5.76</distanceMeters>
                  <durationSeconds>0.98</durationSeconds>
                  <navigationInstruction>FR</navigationInstruction>
                  <name>RUE DE LA CURE</name>
               </step>
            </leg>
            <startDateTime>2015-07-29T10:00:00.000+02:00</startDateTime>
            <finishDateTime>2015-07-29T10:02:06.880+02:00</finishDateTime>
            <timeLineItem>
               <durationSeconds>5.0</durationSeconds>
               <status>OK</status>
               <distanceMeters>23.66</distanceMeters>
               <location>-1.35137,47.447123</location>
            </timeLineItem>
            <timeLineItem>
               <durationSeconds>15.0</durationSeconds>
               <status>OK</status>
               <distanceMeters>71.0</distanceMeters>
               <location>-1.351204,47.447533</location>
            </timeLineItem>
            <srs>epsg:4326</srs>
         </RouteResult>
      </ns2:routeV3Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route/v3.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route/v3.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route/v3.xml?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
   "message":null,
   "status":"OK",
   "distance":"640 m",
   "duration":"0:01:25",
   "distanceMeters":640.0,
   "durationSeconds":85.64,
   "bounds":"-1.351448,47.446922;-1.345263,47.44848",
   "wktGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
   "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
   "legs":[
      {
         "distance":"233 m",
         "duration":"0:00:36",
         "distanceMeters":233.1,
         "durationSeconds":36.33,
         "steps":[
            {
               "distance":"139 m",
               "duration":"0:00:25",
               "distanceMeters":138.59,
               "durationSeconds":25.0,
               "navigationInstruction":null,
               "name":"RUE LA FONTAINE BRUNEAU",
               "points":[

               ]
            },
            {
                [...]
            }
         ]
      },
      {
         "distance":"407 m",
         "duration":"0:00:49",
         "distanceMeters":406.90000000000003,
         "durationSeconds":49.31,
         "steps":[
            {
               "distance":"18 m",
               "duration":"0:00:02",
               "distanceMeters":17.62,
               "durationSeconds":2.11,
               "navigationInstruction":null,
               "name":"",
               "points":[

               ]
            },
            {
               [...]
            }
         ]
      }
   ],
   "startDateTime":null,
   "finishDateTime":null,
   "srs":"epsg:4326"
}

Format JSON-P 

myCallback(
    {
       "message":null,
       "status":"OK",
       "distance":"640 m",
       "duration":"0:01:25",
       "distanceMeters":640.0,
       "durationSeconds":85.64,
       "bounds":"-1.351448,47.446922;-1.345263,47.44848",
       "wktGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
       "wktSimplifiedGeometry":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
       "legs":[
          {
             "distance":"233 m",
             "duration":"0:00:36",
             "distanceMeters":233.1,
             "durationSeconds":36.33,
             "steps":[
                {
                   "distance":"139 m",
                   "duration":"0:00:25",
                   "distanceMeters":138.59,
                   "durationSeconds":25.0,
                   "navigationInstruction":null,
                   "name":"RUE LA FONTAINE BRUNEAU",
                   "points":[

                   ]
                },
                {
                    [...]
                }
             ]
          },
          {
             "distance":"407 m",
             "duration":"0:00:49",
             "distanceMeters":406.90000000000003,
             "durationSeconds":49.31,
             "steps":[
                {
                   "distance":"18 m",
                   "duration":"0:00:02",
                   "distanceMeters":17.62,
                   "durationSeconds":2.11,
                   "navigationInstruction":null,
                   "name":"",
                   "points":[

                   ]
                },
                {
                   [...]
                }
             ]
          }
       ],
       "startDateTime":null,
       "finishDateTime":null,
       "srs":"epsg:4326"
    }
);

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV3>
   <status>OK</status>
   <distance>640 m</distance>
   <duration>0:01:25</duration>
   <distanceMeters>640.0</distanceMeters>
   <durationSeconds>85.64</durationSeconds>
   <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
   <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
   <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
   <leg>
      <distance>233 m</distance>
      <duration>0:00:36</duration>
      <distanceMeters>233.1</distanceMeters>
      <durationSeconds>36.33</durationSeconds>
      <step>
         <distance>139 m</distance>
         <duration>0:00:25</duration>
         <distanceMeters>138.59</distanceMeters>
         <durationSeconds>25.0</durationSeconds>
         <name>RUE LA FONTAINE BRUNEAU</name>
      </step>
      <step>
            [...]
      </step>
   </leg>
   <leg>
      <distance>407 m</distance>
      <duration>0:00:49</duration>
      <distanceMeters>406.90000000000003</distanceMeters>
      <durationSeconds>49.31</durationSeconds>
      <step>
         <distance>18 m</distance>
         <duration>0:00:02</duration>
         <distanceMeters>17.62</distanceMeters>
         <durationSeconds>2.11</durationSeconds>
         <name />
      </step>
      <step>
            [...]
      </step>
   </leg>
   <srs>epsg:4326</srs>
</routeResultV3>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route/v3.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResultV3/status est OK) 

<?xml version="1.0" encoding="UTF-8"?>
<routeResultV3>
   <status>OK</status>
   <distance>640 m</distance>
   <duration>0:01:25</duration>
   <distanceMeters>640.0</distanceMeters>
   <durationSeconds>85.64</durationSeconds>
   <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
   <wktGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktGeometry>
   <wktSimplifiedGeometry>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</wktSimplifiedGeometry>
   <leg>
      <distance>233 m</distance>
      <duration>0:00:36</duration>
      <distanceMeters>233.1</distanceMeters>
      <durationSeconds>36.33</durationSeconds>
      <step>
         <distance>139 m</distance>
         <duration>0:00:25</duration>
         <distanceMeters>138.59</distanceMeters>
         <durationSeconds>25.0</durationSeconds>
         <name>RUE LA FONTAINE BRUNEAU</name>
      </step>
      <step>
            [...]
      </step>
   </leg>
   <leg>
      <distance>407 m</distance>
      <duration>0:00:49</duration>
      <distanceMeters>406.90000000000003</distanceMeters>
      <durationSeconds>49.31</durationSeconds>
      <step>
         <distance>18 m</distance>
         <duration>0:00:02</duration>
         <distanceMeters>17.62</distanceMeters>
         <durationSeconds>2.11</durationSeconds>
         <name />
      </step>
      <step>
            [...]
      </step>
   </leg>
   <srs>epsg:4326</srs>
</routeResultV3>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResultV3/status est ERROR) 

<routeResultV3>
   <message>Origin and destination must be not null</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV3>

Cas d’un mauvais formatage du point de départ, d’arrivée ou des étapes (routeResultV3/status est ERROR) 

<routeResultV3>
   <message>Origin, destination and waypoints should be represented by a couple of coordinates</message>
   <status>ERROR</status>
   <distanceMeters>0.0</distanceMeters>
   <durationSeconds>0.0</durationSeconds>
</routeResultV3>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 146.691012, 47.384813, 0.000000 }
failed to connect waypoint { 146.691012, 47.384813, 0.000000 }</message>
   <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

V2

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie.

oui

standard

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName

Nom du graphe à utiliser

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

oui

profileId

Identifiant du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

profileName

Profil du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère , ou ; (Exemple : Toll, Tunnel, Bridge)

oui

timeLine

Liste de durées intermédiaires pour calculer des positions le long du trajet. Exprimées en secondes, séparés par le caractère ;

oui

En sortie

Itinéraire (routeResult)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

geometryWkt

string

0/1

Géométrie de l’itinéraire au format WKT.

simplifiedWkt

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRoute (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItem (ou array en JSON / JSON-P)

0/illimité

Liste des positions calculées.

Portion d’itinéraire (subRoute)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segment (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segment)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

Position d’itinéraire (timeLineItem)

paramètre type min/max description

elapsedTimeSeconds

double

0/1

Durée de l’itinéraire en secondes jusquà cette position.

message

string

0/1

Message d’erreur pour cette position.

status

string

0/1

Status de cette position.

distanceMeters

double

0/1

Distance de l’itinéraire en mètres jusquà cette position.

coordinates

string

0/1

Coordonnées de la position.

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:routeV2>
         <!--Optional:-->
         <request>
            <origin>
              <x>-1.351448</x>
              <y>47.446923</y>
            </origin>
            <destination>
               <x>-1.34529</x>
                <y>47.4479931</y>
            </destination>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                <x>-1.34981</x>
                 <y>47.44837</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <format>STANDARD</format>
            <!--Optional:-->
            <tolerance>0.</tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime>2015-07-29T09:00:00.000+01:00</startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Zero or more repetitions:-->
            <rejectFlags></rejectFlags>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <timeLine>
               <!--Zero or more repetitions:-->
               <timeLineItem>5</timeLineItem>
               <timeLineItem>15</timeLineItem>
            </timeLine>
         </request>
      </sch:routeV2>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeV2Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>640 m</distance>
            <duration>0:01:24</duration>
            <distanceMeters>640</distanceMeters>
            <durationSeconds>84.87</durationSeconds>
            <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
            <geometryWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</geometryWkt>
            <simplifiedWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</simplifiedWkt>
            <leg>
               <distance>233 m</distance>
               <duration>0:00:36</duration>
               <distanceMeters>233.1</distanceMeters>
               <durationSeconds>36.16</durationSeconds>
               <step>
                  <distance>139 m</distance>
                  <duration>0:00:24</duration>
                  <distanceMeters>138.59</distanceMeters>
                  <durationSeconds>24.83</durationSeconds>
                  <name>RUE LA FONTAINE BRUNEAU</name>
               </step>
               <step>
                    [...]
               </step>
            </leg>
            <leg>
               <distance>407 m</distance>
               <duration>0:00:48</duration>
               <distanceMeters>406.9</distanceMeters>
               <durationSeconds>48.71</durationSeconds>
               <step>
                  <distance>18 m</distance>
                  <duration>0:00:02</duration>
                  <distanceMeters>17.62</distanceMeters>
                  <durationSeconds>2.11</durationSeconds>
                  <name/>
               </step>
               <step>
                    [...]
               </step>
            </leg>
            <startDateTime>2015-07-29T13:30:00.000+05:30</startDateTime>
            <finishDateTime>2015-07-29T13:31:24.870+05:30</finishDateTime>
            <timeLineItem>
               <elapsedTimeSeconds>5.0</elapsedTimeSeconds>
               <status>OK</status>
               <distanceMeters>27.90894700354487</distanceMeters>
               <coordinates>-1.351356,47.447160</coordinates>
            </timeLineItem>
            <timeLineItem>
               <elapsedTimeSeconds>15.0</elapsedTimeSeconds>
               <status>OK</status>
               <distanceMeters>83.72684101063462</distanceMeters>
               <coordinates>-1.351156,47.447643</coordinates>
            </timeLineItem>
         </RouteResult>
      </ns2:routeV2Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route/v2.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route/v2.json?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route/v2.xml?origin=-1.351448,47.446923&destination=-1.34529,47.4479931&waypoints=-1.34981,47.44837

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
   "message":null,
   "status":"OK",
   "distance":"640 m",
   "duration":"0:02:06",
   "distanceMeters":"639.97",
   "durationSeconds":"126.55",
   "bounds":"-1.351448,47.446922;-1.345263,47.44848",
   "geometryWkt":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
   "simplifiedWkt":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
   "legs":[
      {
         "distance":"233 m",
         "duration":"0:00:46",
         "distanceMeters":"233.09",
         "durationSeconds":"46.21",
         "steps":[
            {
               "distance":"139 m",
               "duration":"0:00:29",
               "distanceMeters":"138.59",
               "durationSeconds":"29.21",
               "navInstruction":null,
               "name":"RUE LA FONTAINE BRUNEAU",
               "points":[

               ]
            },
            {
                [...]
            }
         ]
      },
      {
         "distance":"407 m",
         "duration":"0:01:20",
         "distanceMeters":"406.88",
         "durationSeconds":"80.34",
         "steps":[
            {
               "distance":"18 m",
               "duration":"0:00:03",
               "distanceMeters":"17.63",
               "durationSeconds":"3.17",
               "navInstruction":null,
               "name":"",
               "points":[

               ]
            },
            {
                [...]
            }
         ]
      }
   ],
   "startDateTime":null,
   "finishDateTime":null
}

Format JSON-P 

myCallback(
    {
       "message":null,
       "status":"OK",
       "distance":"640 m",
       "duration":"0:02:06",
       "distanceMeters":"639.97",
       "durationSeconds":"126.55",
       "bounds":"-1.351448,47.446922;-1.345263,47.44848",
       "geometryWkt":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
       "simplifiedWkt":"LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])",
       "legs":[
          {
             "distance":"233 m",
             "duration":"0:00:46",
             "distanceMeters":"233.09",
             "durationSeconds":"46.21",
             "steps":[
                {
                   "distance":"139 m",
                   "duration":"0:00:29",
                   "distanceMeters":"138.59",
                   "durationSeconds":"29.21",
                   "navInstruction":null,
                   "name":"RUE LA FONTAINE BRUNEAU",
                   "points":[

                   ]
                },
                {
                    [...]
                }
             ]
          },
          {
             "distance":"407 m",
             "duration":"0:01:20",
             "distanceMeters":"406.88",
             "durationSeconds":"80.34",
             "steps":[
                {
                   "distance":"18 m",
                   "duration":"0:00:03",
                   "distanceMeters":"17.63",
                   "durationSeconds":"3.17",
                   "navInstruction":null,
                   "name":"",
                   "points":[

                   ]
                },
                {
                    [...]
                }
             ]
          }
       ],
       "startDateTime":null,
       "finishDateTime":null
    }
);

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<routeResult>
   <status>OK</status>
   <distance>640 m</distance>
   <duration>0:02:06</duration>
   <distanceMeters>639.97</distanceMeters>
   <durationSeconds>126.55</durationSeconds>
   <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
   <geometryWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</geometryWkt>
   <simplifiedWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</simplifiedWkt>
   <leg>
      <distance>233 m</distance>
      <duration>0:00:46</duration>
      <distanceMeters>233.09</distanceMeters>
      <durationSeconds>46.21</durationSeconds>
      <step>
         <distance>139 m</distance>
         <duration>0:00:29</duration>
         <distanceMeters>138.59</distanceMeters>
         <durationSeconds>29.21</durationSeconds>
         <name>RUE LA FONTAINE BRUNEAU</name>
      </step>
      <step>
         [...]
      </step>
   </leg>
   <leg>
      <distance>407 m</distance>
      <duration>0:01:20</duration>
      <distanceMeters>406.88</distanceMeters>
      <durationSeconds>80.34</durationSeconds>
      <step>
         <distance>18 m</distance>
         <duration>0:00:03</duration>
         <distanceMeters>17.63</distanceMeters>
         <durationSeconds>3.17</durationSeconds>
         <name />
      </step>
      <step>
         [...]
      </step>
   </leg>
</routeResult>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route/v2.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResult/status est OK) 

<?xml version="1.0" encoding="UTF-8"?>
<routeResult>
   <status>OK</status>
   <distance>640 m</distance>
   <duration>0:02:06</duration>
   <distanceMeters>639.97</distanceMeters>
   <durationSeconds>126.55</durationSeconds>
   <bounds>-1.351448,47.446922;-1.345263,47.44848</bounds>
   <geometryWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</geometryWkt>
   <simplifiedWkt>LINESTRING (-1.351448 47.446923, -1.351439 47.446922, -1.35142 47.44699, [...])</simplifiedWkt>
   <leg>
      <distance>233 m</distance>
      <duration>0:00:46</duration>
      <distanceMeters>233.09</distanceMeters>
      <durationSeconds>46.21</durationSeconds>
      <step>
         <distance>139 m</distance>
         <duration>0:00:29</duration>
         <distanceMeters>138.59</distanceMeters>
         <durationSeconds>29.21</durationSeconds>
         <name>RUE LA FONTAINE BRUNEAU</name>
      </step>
      <step>
         [...]
      </step>
   </leg>
   <leg>
      <distance>407 m</distance>
      <duration>0:01:20</duration>
      <distanceMeters>406.88</distanceMeters>
      <durationSeconds>80.34</durationSeconds>
      <step>
         <distance>18 m</distance>
         <duration>0:00:03</duration>
         <distanceMeters>17.63</distanceMeters>
         <durationSeconds>3.17</durationSeconds>
         <name />
      </step>
      <step>
         [...]
      </step>
   </leg>
</routeResult>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResult/status est ERROR) 

<routeResult>
   <message>Origin and destination must be not null</message>
   <status>ERROR</status>
</routeResult>

Cas d’un mauvais formatage du point de départ, d’arrivée ou des étapes (routeResult/status est ERROR) 

<routeResult>
   <message>Origin, destination and waypoints should be represented by a couple of coordinates</message>
   <status>ERROR</status>
</routeResult>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 146.691012, 47.384813, 0.000000 }
failed to connect waypoint { 146.691012, 47.384813, 0.000000 }</message>
   <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

V1

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

origin

Coordonnées du point de départ.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

destination

Coordonnées du point d’arrivée.
Les coordonnées longitude et latitude sont séparées par la caractère ,

non

waypoints

Coordonnées des étapes.
Chaque couple de coordonnées d’une étape est encadré par la balise <waypoint> Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

method

itinéraire le plus court (distance) ou le plus rapide (time)

oui

time

format

- standard : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt / liste des segments concaténés (sans géométries)
- extended : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt / liste des segments non-concaténés (avec géométries)
- summary : résultat = résumé de l’itinéraire
- geometry : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt
- simplifiedgeometry : résultat = résumé de l’itinéraire / bornes / géométrie simplifiée au format wkt
- geometries : résultat = résumé de l’itinéraire / bornes / géométrie au format wkt / géométrie simplifiée au format wkt
- brief : résultat = résumé de l’itinéraire / Liste des segments avec durée et distance
- standardext : résultat = résumé de l’itinéraire / bornes / liste des segments concaténés avec durée et distance et géométrie.

oui

standard

projection

Déprécié, remplacé par srs

oui

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

tolerance

Distance de tolérance (en mètre) de simplification de la géométrie.

oui

graphName

Nom du graphe à utiliser

oui

map

Déprécié : Nom de la carte à utiliser

oui

applyMapPrecisionOut

Déprécié : Précision de la carte

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

oui

profileId

Identifiant du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

profileName

Profil du véhicule (enregistré dans les profils de véhicule) à utiliser

oui

rejectFlags

Déprécié, remplacé par exclusions

oui

exclusions

Liste des règles de restrictions à utiliser, séparés par le caractère , ou ; (Exemple : Toll, Tunnel, Bridge)

oui

En sortie

Itinéraire (routeResult)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance totale de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée totale de l’itinéraire en secondes.

bounds

string

0/1

Bornes (BoundingBox) de la géométrie de l’itinéraire.

geometryWkt

string

0/1

Géométrie de l’itinéraire au format WKT.

simplifiedWkt

string

0/1

Géométrie simplifiée de l’itinéraire au format WKT.

leg (ou legs en JSON / JSON-P)

subRoute (ou array en JSON / JSON-P)

0/illimité

Liste des portions d’itinéraires.

startDateTime

string

0/1

Date et heure de départ (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour un départ le 21 janvier 2014, à 9h à Paris

finishDateTime

string

0/1

Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale)
Exemple : 2014-01-21T09:00:00.000+01:00 pour une arrivée le 21 janvier 2014, à 9h à Paris

timeLineItem

timeLineItem (ou array en JSON / JSON-P)

0/illimité

Non implémenté dans cette version.

Portion d’itinéraire (subRoute)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance de la portion de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée de la portion de l’itinéraire en secondes.

step ou (ou steps en JSON / JSON-P)

segment (ou array en JSON / JSON-P)

0/illimité

Liste des segments composants la portion d’itinéraire.

Segment d’itinéraire (segment)

paramètre type min/max description

distance

string

0/1

Distance totale de l’itinéraire, formaté :
- xx.xx Km
- xx m (si distance inférieure à 1 km)

duration

string

0/1

Durée totale de l’itinéraire, formaté :
- HH:mm:ss (HH=heures, mm=minutes, ss=secondes)

distanceMeters

string

0/1

Distance du segment de l’itinéraire en mètres.

durationSeconds

string

0/1

Durée du segment de l’itinéraire en secondes.

navigationInstruction

string

0/1

Code d’instruction de navigation :
- F : Tout droit
- FR: Tourner légèrement à droite
- FL: Tourner légèrement à gauche
- R: Tourner à droite
- L: Tourner à gauche
- BR: Tourner fortement à droite
- BL: Tourner fortement à gauche
- B: Demi-tour
- round_about_entry: S’engager sur le rond-point
- round_about_exit: Sortir du rond-point

name

string

0/1

Nom de rue du segment.

point

string

0/illimité

Liste de coordonnées séparées par la caractère ,

SOAP

WSDL

http://<server>/<webapp>/api/ws/routeService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:route>
         <!--Optional:-->
         <request>
            <origin>
               <x>0.691012</x>
               <y>47.384813</y>
            </origin>
            <destination>
               <x>0.693012</x>
               <y>47.385813</y>
            </destination>
            <!--Optional:-->
            <waypoints>
               <!--Zero or more repetitions:-->
               <waypoint>
                  <x>0.692012</x>
                  <y>47.384813</y>
               </waypoint>
            </waypoints>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <method></method>
            <!--Optional:-->
            <format></format>
            <!--Optional:-->
            <tolerance></tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Zero or more repetitions:-->
            <rejectFlags></rejectFlags>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
         </request>
      </sch:route>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:routeResponse xmlns:ns2="http://geoconcept.com/gc/schemas">
         <RouteResult>
            <status>OK</status>
            <distance>577 m</distance>
            <duration>0:02:49</duration>
            <bounds>0.69089,47.38404;0.693012,47.386078</bounds>
            <geometryWkt>LINESTRING (0.6910119767724592 47.38481290982329, 0.6910138207911578 47.384806371938815, ...)</geometryWkt>
            <simplifiedWkt>LINESTRING (0.6910119767724592 47.38481290982329, 0.6910138207911578 47.384806371938815, ...)</simplifiedWkt>
            <leg>
               <distance>266 m</distance>
               <duration>0:01:08</duration>
               <step>
                  <distance>10</distance>
                  <duration>2</duration>
                  <name>RUE EUPATORIA</name>
               </step>
               <step>
                  <distance>86</distance>
                  <duration>18</duration>
                  <navInstruction>L</navInstruction>
                  <name>AVENUE DE GRAMMONT</name>
               </step>
               <step>
                  <distance>13</distance>
                  <duration>2</duration>
                  <navInstruction>L</navInstruction>
                  <name>PLACE VAILLANT</name>
               </step>
               <step>
                  <distance>66</distance>
                  <duration>12</duration>
                  <navInstruction>L</navInstruction>
                  <name>AVENUE DE GRAMMONT</name>
               </step>
               <step>
                  <distance>89</distance>
                  <duration>32</duration>
                  <navInstruction>R</navInstruction>
                  <name>RUE PARMENTIER</name>
               </step>
            </leg>
            <leg>
               <distance>311 m</distance>
               <duration>0:01:40</duration>
               <step>
                  <distance>90</distance>
                  <duration>33</duration>
                  <name>RUE PARMENTIER</name>
               </step>
               <step>
                  <distance>153</distance>
                  <duration>32</duration>
                  <navInstruction>L</navInstruction>
                  <name>RUE MICHELET</name>
               </step>
               <step>
                  <distance>66</distance>
                  <duration>35</duration>
                  <navInstruction>R</navInstruction>
                  <name>RUE DUPORTAL</name>
               </step>
            </leg>
         </RouteResult>
      </ns2:routeResponse>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/route.json?origin=0.691012,47.384813&destination=0.693012,47.385813&waypoints=0.692012,47.384813

Requête JSON-P 

http://<server>/<webapp>/api/lbs/route.json?origin=0.691012,47.384813&destination=0.693012,47.385813&waypoints=0.692012,47.384813&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/route.xml?origin=0.691012,47.384813&destination=0.693012,47.385813&waypoints=0.692012,47.384813

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
        "message":null,"status":"OK",
        "distance":"577 m","duration":"0:02:49","bounds":"475757.89,2266229.66;475920.47,2266453.7",
        "geometryWkt":"LINESTRING (475767.17 2266316.12, 475767.3 2266315.39, ...)",
        "legs":
                [
                        {"distance":"266 m","duration":"0:01:08",
                                "steps":
                                        [
                                                {"distance":"10","duration":"2","navInstruction":null,"name":"RUE EUPATORIA","points":[]},
                                                {"distance":"86","duration":"18","navInstruction":"L","name":"AVENUE DE GRAMMONT","points":[]},
                                                {"distance":"13","duration":"2","navInstruction":"L","name":"PLACE VAILLANT","points":[]},
                                                {"distance":"66","duration":"12","navInstruction":"L","name":"AVENUE DE GRAMMONT","points":[]},
                                                {"distance":"89","duration":"32","navInstruction":"R","name":"RUE PARMENTIER","points":[]}
                                        ]
                        },
                        {"distance":"311 m","duration":"0:01:40",
                                "steps":
                                        [
                                                {"distance":"90","duration":"33","navInstruction":null,"name":"RUE PARMENTIER","points":[]},
                                                {"distance":"153","duration":"32","navInstruction":"L","name":"RUE MICHELET","points":[]},
                                                {"distance":"66","duration":"35","navInstruction":"R","name":"RUE DUPORTAL","points":[]}
                                        ]
                                }
                ],
        "startDateTime":null,"finishDateTime":null
}

Format JSON-P 

myCallback(
        {
                "message":null,"status":"OK",
                "distance":"577 m","duration":"0:02:49","bounds":"475757.89,2266229.66;475920.47,2266453.7",
                "geometryWkt":"LINESTRING (475767.17 2266316.12, 475767.3 2266315.39, ...)",
                "legs":
                        [
                                {"distance":"266 m","duration":"0:01:08",
                                "steps":
                                        [
                                                {"distance":"10","duration":"2","navInstruction":null,"name":"RUE EUPATORIA","points":[]},
                                                {"distance":"86","duration":"18","navInstruction":"L","name":"AVENUE DE GRAMMONT","points":[]},
                                                {"distance":"13","duration":"2","navInstruction":"L","name":"PLACE VAILLANT","points":[]},
                                                {"distance":"66","duration":"12","navInstruction":"L","name":"AVENUE DE GRAMMONT","points":[]},
                                                {"distance":"89","duration":"32","navInstruction":"R","name":"RUE PARMENTIER","points":[]}
                                        ]
                                },
                                {"distance":"311 m","duration":"0:01:40",
                                "steps":
                                        [
                                                {"distance":"90","duration":"33","navInstruction":null,"name":"RUE PARMENTIER","points":[]},
                                                {"distance":"153","duration":"32","navInstruction":"L","name":"RUE MICHELET","points":[]},
                                                {"distance":"66","duration":"35","navInstruction":"R","name":"RUE DUPORTAL","points":[]}
                                        ]
                                }
                        ],
                "startDateTime":null,"finishDateTime":null
        }
);

Format XML 

<routeResult>
        <status>OK</status>
        <distance>577 m</distance>
        <duration>0:02:49</duration>
        <bounds>475757.89,2266229.66;475920.47,2266453.7</bounds>
        <geometryWkt>LINESTRING (475767.17 2266316.12, 475767.3 2266315.39, ...)</geometryWkt>
        <simplifiedWkt>LINESTRING (475767.17 2266316.12, 475767.3 2266315.39, ...)</simplifiedWkt>
        <leg>
                <distance>266 m</distance>
                <duration>0:01:08</duration>
                <step>
                        <distance>10</distance>
                        <duration>2</duration>
                        <name>RUE EUPATORIA</name>
                </step>
                <step>
                        <distance>86</distance>
                        <duration>18</duration>
                        <navInstruction>L</navInstruction>
                        <name>AVENUE DE GRAMMONT</name>
                </step>
                <step>
                        <distance>13</distance>
                        <duration>2</duration>
                        <navInstruction>L</navInstruction>
                        <name>PLACE VAILLANT</name>
                </step>
                <step>
                        <distance>66</distance>
                        <duration>12</duration>
                        <navInstruction>L</navInstruction>
                        <name>AVENUE DE GRAMMONT</name>
                </step>
                <step>
                        <distance>89</distance>
                        <duration>32</duration>
                        <navInstruction>R</navInstruction>
                        <name>RUE PARMENTIER</name>
                </step>
        </leg>
        <leg>
                <distance>311 m</distance>
                <duration>0:01:40</duration>
                <step>
                        <distance>90</distance>
                        <duration>33</duration>
                        <name>RUE PARMENTIER</name>
                </step>
                <step>
                        <distance>153</distance>
                        <duration>32</duration>
                        <navInstruction>L</navInstruction>
                        <name>RUE MICHELET</name>
                </step>
                <step>
                        <distance>66</distance>
                        <duration>35</duration>
                        <navInstruction>R</navInstruction>
                        <name>RUE DUPORTAL</name>
                </step>
        </leg>
</routeResult>

API JavaScript

Inclure la librairie JavaScript.

var routeCtrl = new GCUI.Control.Route();
routeCtrl.route({
    url:'http://<server>/<webapp>/api/lbs/route.json',
    tolerance : 100,
    origin : new OpenLayers.LonLat(0.691012, 47.384813),
    destination : new OpenLayers.LonLat(0.691012, 47.384813),
    waypoints : [ new OpenLayers.LonLat(2.344408, 49.898798) ],
    callback : function(result, options) {
        console.log(result);
    }
});

La variable result est au format JSON décrit ci-dessus. La fonction callback passée en paramètre est appelée à la fin du calcul d’itinéraire.

Retours possibles

Cas d’un itinéraire trouvé (routeResult/status est OK) 

<routeResult>
    <status>OK</status>
    <distance>1.66 Km</distance>
    <duration>0:04:53</duration>
    <bounds>2.423385,48.84452;2.43999,48.84741</bounds>
    <geometryWkt>LINESTRING (2.4233899276812516 48.84461991900793, 2.4233847309012826 48.84462042192212, ...)</geometryWkt>
    <simplifiedWkt>LINESTRING (2.4233899276812516 48.84461991900793, 2.4233847309012826 48.84462042192212, ...)</simplifiedWkt>
    <leg>
        <distance>1.66 Km</distance>
        <duration>0:04:53</duration>
        <step>
            <distance>147</distance>
            <duration>31</duration>
            <name>AVENUE PASTEUR</name>
        </step>
        <step>
            <distance>1108</distance>
            <duration>159</duration>
            <navInstruction>R</navInstruction>
            <name>AVENUE DE PARIS</name>
        </step>
                ...
        </step>
    </leg>
</routeResult>

Cas d’un oubli de spécification du point de départ ou d’arrivée (routeResult/status est ERROR) 

<routeResult>
    <message>Origin and destination must be not null</message>
    <status>ERROR</status>
</routeResult>

Cas d’un mauvais typage (serviceResult/status est ERROR) 

<serviceResult>
        <message>NumberFormatException: For input string: "AAA"</message>
        <status>ERROR</status>
</serviceResult>

Cas d’une erreur d’accrochage au graphe (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
Failed to execute calculateRoute
com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect waypoint { 243966.000000, 48.847410, 0.000000 }
failed to connect waypoint { 243966.000000, 48.847410, 0.000000 }</message>
    <status>ERROR</status>
</serviceResult>

Cas d’un problème avec le graphe : fichier absent, mauvais chemin, etc… (serviceResult/status est ERROR) 

<serviceResult>
    <message>ServiceException: Error in route computation
Error in smartrouting
datasource is null</message>
    <status>ERROR</status>
</serviceResult>

FAQ

1. Est-il possible de prioriser le temps de parcours ou la distance ?
2. Peut-on utiliser des alias à défaut des noms de fichiers .siti pour appeler une datasource ?
3. Comment utiliser les statistiques routières ?
4. L’ordre des points a-t-il une importance ?
5. Comment faire un calcul d’itinéraire sans péage?
6. Qu’est-ce que les Speed Patterns ? Comment les utiliser ?
7. Comment utiliser les attributs poids lourds ?
8. Comment calculer l’empreinte carbone d’un trajet ?

1.

Est-il possible de prioriser le temps de parcours ou la distance ?

Oui, en changeant la méthode method distance ou time.

2.

Peut-on utiliser des alias à défaut des noms de fichiers .siti pour appeler une datasource ?

Oui, cf. détails dans la FAQ du Web Service du géocodage inverse.

3.

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.

4.

L’ordre des points a-t-il une importance ?

Les points, qu’ils soient de départ, d’arrivée ou de passage sont lus et utilisés dans l’ordre. Le premier point déclaré est considéré comme point de départ, le second comme point d’arrivée et les autres comme points de passage. L’ordre des points est donc très important.

5.

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 :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:route>
         <!--Optional:-->
         <request>
            <origin>
               <x>0.691012</x>
               <y>47.384813</y>
            </origin>
            <destination>
               <x>0.693012</x>
               <y>47.385813</y>
            </destination>
            <!--Zero or more repetitions:-->
            <waypoints>
                                <waypoint>
                                        <x>0.692012</x>
                                        <y>47.384813</y>
                                </waypoint>
            </waypoints>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <method></method>
            <!--Optional:-->
            <format></format>
            <tolerance></tolerance>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <startDateTime></startDateTime>
                        <!--Optional:-->
            <profileId></profileId>
                        <!--Optional:-->
                        <profileName></profileName>
            <!--Zero or more repetitions:-->
            <exclusions>Toll</exclusions>
         </request>
      </sch:route>
   </soapenv:Body>
</soapenv:Envelope>

6.

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 :

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-1.519363,47.215945&destination=-1.559309,47.213465&computeOptions=speedPattern:fast-speed&profileId=1

+ Retourne un trajet de 707 secondes contre 817 secondes pour un speedPattern slow-speed.

7.

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 :

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-1.543363,47.215945&destination=-1.550309,47.213465&computeOptions=height:450

Retourne un trajet de 1529 mètres contre 624 mètres sans restriction de hauteur.

8.

Comment calculer l’empreinte carbone d’un trajet ?

Le calcul de l’empreinte carbone tient compte à la fois du type du véhicule, de son carburant et de sa vitesse tronçon de voie par tronçon de voie : 10 km en ville n’a pas la même empreinte carbone que 10 km en campagne. Il est affiché dans la réponse lorsque le format est égal à standard (par defaut) ou extended.
L’empreinte carbone de l’itinéraire est automatiquement calculée soit 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 en surchargant les valeurs lors de l’appel au web service avec l’utilisation de computeOptions avec les options fuelType, averageConsumption et/ou customAverageCO2UnitEmission.
Les valeurs disponibles sont fuelType avec comme valeurs possibles :

  • NoFuel
  • Diesel
  • UnleadedFuel
  • LGP
  • CustomFuelType (permet de personnaliser une valeur en kg de CO2 par litre à préciser dans customAverageCO2UnitEmission)

averageConsumption permet d’indiquer la consommation moyenne du véhicule pour 100 kilomètres
Exemple, pour la configuration suivante :

+

                <vehicle id="10" name="Car">
                        <speedProfile>Cars</speedProfile>
                        <speedProfileId>3</speedProfileId>
                        <rejectFlag>Automobiles</rejectFlag>
                        <snapSpeed>4</snapSpeed>
                        <fuelType>UndefinedFuelType</fuelType>
                </vehicle>
                <vehicle id="11" name="Car UnleadedFuel">
                        <speedProfile>Cars</speedProfile>
                        <speedProfileId>3</speedProfileId>
                        <rejectFlag>Automobiles</rejectFlag>
                        <speedPatternsProfile>Cars SpeedPatterns</speedPatternsProfile>
                        <snapSpeed>4</snapSpeed>
                        <fuelType>UnleadedFuel</fuelType>
                        <averageConsumption>7.27</averageConsumption>
                </vehicle>
                <vehicle id="12" name="Car Diesel">
                        <speedProfile>Cars</speedProfile>
                        <speedProfileId>3</speedProfileId>
                        <rejectFlag>Automobiles</rejectFlag>
                        <speedPatternsProfile>Cars SpeedPatterns</speedPatternsProfile>
                        <snapSpeed>4</snapSpeed>
                        <fuelType>Diesel</fuelType>
                        <averageConsumption>6.06</averageConsumption>
                </vehicle>
                <vehicle id="30" name="Truck CustomFuelType">
                        <speedProfile>Trucks</speedProfile>
                        <speedProfileId>5</speedProfileId>
                        <rejectFlag>Trucks</rejectFlag>
                        <snapSpeed>4</snapSpeed>
                        <fuelType>CustomFuelType</fuelType>
                        <customAverageCO2UnitEmission>5</customAverageCO2UnitEmission>
                </vehicle>
        <vehicle id="32" name="Truck Diesel">
                        <speedProfile>Trucks</speedProfile>
                        <speedProfileId>5</speedProfileId>
                        <rejectFlag>Trucks</rejectFlag>
                        <speedPatternsProfile>Trucks SpeedPatterns</speedPatternsProfile>
                        <snapSpeed>4</snapSpeed>
                        <fuelType>Diesel</fuelType>
                        <averageConsumption>34</averageConsumption>
                </vehicle>

+ il est obtenu :

+ Car

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-0.978536,47.443316&destination=-2.511388,47.303726&profileId=10

+ retourne en kg équivalent CO2 :

+

<carbonFootprint>0.0</carbonFootprint>

+ Car UnleadedFuel

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-0.978536,47.443316&destination=-2.511388,47.303726&profileId=11

+ retourne en kg équivalent CO2 :

+

<carbonFootprint>31.151</carbonFootprint>

+ Car Diesel

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-0.978536,47.443316&destination=-2.511388,47.303726&profileId=12

+ retourne en kg équivalent CO2 :

+

<carbonFootprint>26.117</carbonFootprint>

+ Truck CustomFuelType

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-0.978536,47.443316&destination=-2.511388,47.303726&profileId=30

+ retourne en kg équivalent CO2 :

+

<carbonFootprint>43.914</carbonFootprint>

+ Truck Diesel

+

http://<server>/<webapp>/api/lbs/route/v5.xml?origin=-0.978536,47.443316&destination=-2.511388,47.303726&profileId=32

+ retourne en kg équivalent CO2 :

+

<carbonFootprint>153.081</carbonFootprint>