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.
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.
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"
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
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. |
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. |
oui |
|
waypointNodes |
Noeuds d'étapes. |
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) |
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 |
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) |
oui |
|
profileName (déprécié) |
Profil du véhicule (enregistré dans les profils de véhicule) |
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 |
oui |
standard |
avoidArea |
Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée |
oui |
|
configName |
Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes) |
oui |
|
computeOptions |
Liste des options pour le calcul, séparées par le caractère ; |
oui |
|
maxCost |
Coût maximum à ne pas dépasser dans le calcul |
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 |
oui |
|
fields |
Liste des champs à afficher en resultat de chaque segment (pour les format standard et extended) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
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). |
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>
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.
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>
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
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. |
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. |
oui |
|
waypointNodes |
Noeuds d'étapes. |
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) |
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 |
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) |
oui |
|
profileName (déprécié) |
Profil du véhicule (enregistré dans les profils de véhicule) |
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 |
oui |
standard |
avoidArea |
Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée |
oui |
|
configName |
Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes) |
oui |
|
computeOptions |
Liste des options pour le calcul, séparées par le caractère ; |
oui |
|
maxCost |
Coût maximum à ne pas dépasser dans le calcul |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
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). |
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>
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.
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>
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
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. |
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. |
oui |
|
waypointNodes |
Noeuds d'étapes. |
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) |
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. 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) |
oui |
|
profileName |
Profil du véhicule (enregistré dans les profils de véhicule) |
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 |
oui |
standard |
avoidArea |
Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée |
oui |
|
configName |
Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes) |
oui |
En sortie
Itinéraire (routeResultV4)
paramètre | type | min/max | description |
---|---|---|---|
distance |
string |
0/1 |
Distance totale de l’itinéraire, formaté : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
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. |
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>
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.
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>
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
non |
|
destination |
Coordonnées du point d’arrivée. |
non |
|
waypoints |
Coordonnées des étapes. |
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) |
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 |
oui |
standard |
En sortie
Itinéraire (routeResultV3)
paramètre | type | min/max | description |
---|---|---|---|
distance |
string |
0/1 |
Distance totale de l’itinéraire, formaté : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
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. |
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>
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.
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>
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
non |
|
destination |
Coordonnées du point d’arrivée. |
non |
|
waypoints |
Coordonnées des étapes. |
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) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
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. |
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>
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.
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>
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
origin |
Coordonnées du point de départ. |
non |
|
destination |
Coordonnées du point d’arrivée. |
non |
|
waypoints |
Coordonnées des étapes. |
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) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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) |
finishDateTime |
string |
0/1 |
Date et heure d’arrivée (format : ISO8601 sans code zone : heure locale) |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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é : |
duration |
string |
0/1 |
Durée totale de l’itinéraire, formaté : |
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 : |
name |
string |
0/1 |
Nom de rue du segment. |
point |
string |
0/illimité |
Liste de coordonnées séparées par la caractère , |
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>
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.
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>
- 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 ?