Cette page n’est plus maintenue depuis la version 2022 de Geoconcept Web. Pour accéder à la documentation à jour de ce web service, veuillez suivre ce lien.
Le web service de Search Along permet d’identifier les meilleurs candidats pour ajouter une étape à proximité d’un trajet pré-existant.
L’algorithme explore les solutions pour retourner parmi les candidats celui qui à le meilleur score en fonction des critères demandées
En entrée
paramètre | description | optionnel | défaut |
---|---|---|---|
routes array of routes/route (inputRoute) |
Tableau des trajets en entrée. Trajets pré-existant dans lesquels les candidats doivent être insérés. |
oui * |
|
routeNodes array of routeNodes/routeNode (inputRouteNode) |
Tableau des trajets en entrée basés sur les noeuds du graphe (calcul plus rapide). Attention : un noeud physique n’a pas le même ID dans un autre graphe. |
oui * |
|
resources |
Tableau des candidats |
oui |
|
method |
Itinéraire le plus court (distance) ou le plus rapide (time) |
oui |
time |
exclusions |
Liste des règles de restrictions à utiliser, séparés par le caractère ; (Exemple : Toll, Tunnel, Bridge) |
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 |
|
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 |
|
graphName (déprécié) |
Nom du graphe à utiliser |
oui |
|
srs |
projection (code EPSG comme epsg:4326 ou wgs84) |
oui |
|
profileId (déprécié) |
Identifiant du véhicule (enregistré dans les profils de véhicule) |
oui |
|
profileName (déprécié) |
Profil du véhicule (enregistré dans les profils de véhicule) |
oui |
|
configName |
Nom de la configuration à utiliser (défini dans Geoconcept Web - Administration / Outils / Définitions des graphes) |
oui |
|
computeOptions |
Liste des options pour le calcul, séparées par le caractère ; |
oui |
|
maxDetourDurationSeconds |
Filtre : détour maximum autorisé (en secondes) |
oui |
|
maxDetourDistanceMeters |
Filtre : détour maximum autorisé (en mètres) |
oui |
|
maxDetourOriginDurationSeconds |
Filtre : durée maximale autorisée entre le point de départ du trajet et le candidat (en secondes) |
oui |
|
maxDetourOriginDistanceMeters |
Filtre : détour maximum autorisé entre le candidat et le point d’arrivée du trajet (en mètres) |
oui |
|
maxDetourDestinationDurationSeconds |
Filtre : durée maximale autorisée entre le candidat et le point de d’arrivée du trajet (en secondes) |
oui |
|
maxDetourDestinationDistanceMeters |
Filtre : détour maximum autorisé depuis le point d’arrivée (en mètres) |
oui |
|
timeOut |
Time out pour le calcul (en millisecondes) |
oui |
(*) Au moins l’un des deux paramètres routes, et routeNodes doit être renseigné.
(M18) Disponible à partir de la version M18 des graphes fournis par GEOCONCEPT SAS.
Trajets en entrée (inputRoute)
paramètre | description | optionnel | défaut |
---|---|---|---|
id |
Identifiant du trajet |
Non |
|
departurePoint (geographicPoint) |
Coordonnées du point de départ du trajet |
Non |
|
arrivalPoint (geographicPoint) |
Coordonnées du point d’arrivée du trajet |
Non |
Coordonnées (geographicPoint)
paramètre | description | optionnel | défaut |
---|---|---|---|
x |
Première coordonnée ou longitude |
Non |
|
y |
Deuxième coordonnée ou latitude |
Non |
Trajets en entrée basé sur les noeuds du graphe (inputRouteNode)
paramètre | description | optionnel | défaut |
---|---|---|---|
id |
Identifiant du trajet |
Non |
|
departureNode (geographicPoint) |
Noeud de départ du trajet |
Non |
|
arrivalNode (geographicPoint) |
Noeud d’arrivée du trajet |
Non |
Candidats (searchAlongResource)
paramètre | description | optionnel | défaut |
---|---|---|---|
id |
Identifiant du candidat |
Non |
|
x |
Première coordonnée ou longitude |
Non |
|
y |
Deuxième coordonnée ou latitude |
Non |
|
node |
Noeud du candidat |
Oui |
|
priority1 |
Priorité 1 |
Oui |
0 |
priority2 |
Priorité 2 |
Oui |
0 |
En sortie
paramètre | type | min/max | description |
---|---|---|---|
routes |
array of routes/route (searchAlongRouteResult) |
0/illimité |
Liste des trajets calculés. |
Liste des trajets calculés (searchAlongRouteResult)
paramètre | type | min/max | description |
---|---|---|---|
id |
string |
0/1 |
Identifiant du trajet |
directDistanceMeters |
double |
1/1 |
Distance totale sans détour (en mètres) |
directDurationSeconds |
double |
1/1 |
Durée totale sans détour (en secondes) |
resources |
(searchAlongResourceResult) |
0/illimité |
Liste de candidats |
Candidats (searchAlongResourceResult)
paramètre | type | min/max | description |
---|---|---|---|
id |
string |
0/1 |
Identifiant du candidat |
totalDistanceMeters |
double |
1/1 |
Distance totale avec détour (en mètres) |
totalDurationSeconds |
double |
1/1 |
Durée totale avec détour (en secondes) |
detourDistanceMeters |
double |
1/1 |
Distance du détour (en mètres) |
detourDurationSeconds |
double |
1/1 |
Durée du détour (en secondes) |
detourOriginDistanceMeters |
double |
1/1 |
Distance du détour depuis le point de départ du trajet jusqu’au candidat (en mètres) |
detourOriginDurationSeconds |
double |
1/1 |
Durée du détour depuis le point de départ du trajet jusqu’au candidat (en secondes) |
detourDestinationDistanceMeters |
double |
1/1 |
Distance du détour depuis le candidat jusqu’au point d’arrivée (en mètres) |
detourDestinationDurationSeconds |
double |
1/1 |
Durée du détour depuis le candidat jusqu’au point d’arrivée (en secondes) |
WSDL
http://<server>
/<webapp>
/api/ws/searchAlongService?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:searchAlongV1> <!--Optional:--> <request> <routes> <route> <id>dep</id> <departurePoint> <x>-1.553927</x> <y>47.21858</y> </departurePoint> <arrivalPoint> <x>-1.593927</x> <y>47.18858</y> </arrivalPoint> </route> </routes> <resources> <resource> <id>res1</id> <node /> <priority1>1</priority1> <priority2>2</priority2> <x>-1.511092</x> <y>47.208355</y> </resource> <resource> <id>res2</id> <node /> <priority1>1</priority1> <priority2>1</priority2> <x>-1.549524</x> <y>47.195484</y> </resource> </resources> <srs>epsg:4326</srs> <maxDetourDestinationDistanceMeters>-1</maxDetourDestinationDistanceMeters> <maxDetourDestinationDurationSeconds>-1</maxDetourDestinationDurationSeconds> <maxDetourDistanceMeters>-1</maxDetourDistanceMeters> <maxDetourDurationSeconds>-1</maxDetourDurationSeconds> <maxDetourOriginDistanceMeters>-1</maxDetourOriginDistanceMeters> <maxDetourOriginDurationSeconds>-1</maxDetourOriginDurationSeconds> <method>time</method> <timeOut></timeOut> </request> </sch:searchAlongV1> </soapenv:Body> </soapenv:Envelope>
Réponse
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:searchAlongV1Response xmlns:ns2="http://geoconcept.com/gc/schemas"> <SearchAlongResult> <status>OK</status> <routes> <route> <id>dep</id> <directDistanceMeters>6850.71</directDistanceMeters> <directDurationSeconds>973.14</directDurationSeconds> <resources> <id>res2</id> <totalDistanceMeters>7808.36</totalDistanceMeters> <totalDurationSeconds>1197.28</totalDurationSeconds> <detourDistanceMeters>957.65</detourDistanceMeters> <detourDurationSeconds>224.14</detourDurationSeconds> <detourOriginDistanceMeters>3684.98</detourOriginDistanceMeters> <detourOriginDurationSeconds>752.34</detourOriginDurationSeconds> <detourDestinationDistanceMeters>4123.38</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>444.94</detourDestinationDurationSeconds> </resources> <resources> <id>res1</id> <totalDistanceMeters>13714.6</totalDistanceMeters> <totalDurationSeconds>2261.52</totalDurationSeconds> <detourDistanceMeters>6863.89</detourDistanceMeters> <detourDurationSeconds>1288.38</detourDurationSeconds> <detourOriginDistanceMeters>5731.27</detourOriginDistanceMeters> <detourOriginDurationSeconds>1156.94</detourOriginDurationSeconds> <detourDestinationDistanceMeters>7983.33</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>1104.58</detourDestinationDurationSeconds> </resources> </route> </routes> <computationTime>118.72</computationTime> </SearchAlongResult> </ns2:searchAlongV1Response> </soap:Body> </soap:Envelope>
Requête
Requête
http://<server>/<webapp>/api/lbs/searchAlong.json
Data (JSON)
{ "routes":[ { "id":"dep", "departurePoint":{ "x":-1.553927, "y":47.218580 }, "arrivalPoint":{ "x":-1.593927, "y":47.188580 } } ], "resources":[ { "id":"res1", "node":"", "priority1":1, "priority2":2, "x":-1.511092, "y":47.208354 } ], "resources":[ { "id":"res2", "node":"", "priority1":1, "priority2":1, "x":-1.549524, "y":47.195483 } ], "method":"time", "srs":"epsg:4326", "maxDetourDurationSeconds":-1, "maxDetourDistanceMeters":-1, "maxDetourOriginDurationSeconds":-1, "maxDetourOriginDistanceMeters":-1, "maxDetourDestinationDurationSeconds":-1, "maxDetourDestinationDistanceMeters":-1 }
Réponse
La réponse est toujours encodée en UTF-8.
Format JSON
{ "message": null, "status": "OK", "routes": [ { "id": "dep", "directDistanceMeters": 6850.71, "directDurationSeconds": 973.14, "resources": [ { "id": "res2", "totalDistanceMeters": 7808.36, "totalDurationSeconds": 1197.28, "detourDistanceMeters": 957.65, "detourDurationSeconds": 224.14, "detourOriginDistanceMeters": 3684.98, "detourOriginDurationSeconds": 752.34, "detourDestinationDistanceMeters": 4123.38, "detourDestinationDurationSeconds": 444.94 } ] } ] }
Requête
Requête
http://<server>/<webapp>/api/lbs/searchAlong.xml
Data (XML)
<?xml version="1.0" encoding="UTF-8"?> <searchAlongRequest> <routes> <route> <id>dep</id> <departurePoint> <x>-1.553927</x> <y>47.21858</y> </departurePoint> <arrivalPoint> <x>-1.593927</x> <y>47.18858</y> </arrivalPoint> </route> </routes> <resources> <resource> <id>res1</id> <node /> <priority1>1</priority1> <priority2>2</priority2> <x>-1.511092</x> <y>47.208355</y> </resource> <resource> <id>res2</id> <node /> <priority1>1</priority1> <priority2>1</priority2> <x>-1.549524</x> <y>47.195484</y> </resource> </resources> <srs>epsg:4326</srs> <maxDetourDestinationDistanceMeters>-1</maxDetourDestinationDistanceMeters> <maxDetourDestinationDurationSeconds>-1</maxDetourDestinationDurationSeconds> <maxDetourDistanceMeters>-1</maxDetourDistanceMeters> <maxDetourDurationSeconds>-1</maxDetourDurationSeconds> <maxDetourOriginDistanceMeters>-1</maxDetourOriginDistanceMeters> <maxDetourOriginDurationSeconds>-1</maxDetourOriginDurationSeconds> <method>time</method> </searchAlongRequest>
Réponse
La réponse est toujours encodée en UTF-8.
Format XML
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <searchAlongResult> <status>OK</status> <routes> <route> <id>dep</id> <directDistanceMeters>6850.71</directDistanceMeters> <directDurationSeconds>973.14</directDurationSeconds> <resources> <id>res2</id> <totalDistanceMeters>7808.36</totalDistanceMeters> <totalDurationSeconds>1197.28</totalDurationSeconds> <detourDistanceMeters>957.65</detourDistanceMeters> <detourDurationSeconds>224.14</detourDurationSeconds> <detourOriginDistanceMeters>3684.98</detourOriginDistanceMeters> <detourOriginDurationSeconds>752.34</detourOriginDurationSeconds> <detourDestinationDistanceMeters>4123.38</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>444.94</detourDestinationDurationSeconds> </resources> <resources> <id>res1</id> <totalDistanceMeters>13714.6</totalDistanceMeters> <totalDurationSeconds>2261.52</totalDurationSeconds> <detourDistanceMeters>6863.89</detourDistanceMeters> <detourDurationSeconds>1288.38</detourDurationSeconds> <detourOriginDistanceMeters>5731.27</detourOriginDistanceMeters> <detourOriginDurationSeconds>1156.94</detourOriginDurationSeconds> <detourDestinationDistanceMeters>7983.33</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>1104.58</detourDestinationDurationSeconds> </resources> </route> </routes> </searchAlongResult>
Cas d’une recherche de proximité trouvée (searchAlongResult/status est OK)
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <searchAlongResult> <status>OK</status> <routes> <route> <id>dep</id> <directDistanceMeters>6850.71</directDistanceMeters> <directDurationSeconds>973.14</directDurationSeconds> <resources> <id>res2</id> <totalDistanceMeters>7808.36</totalDistanceMeters> <totalDurationSeconds>1197.28</totalDurationSeconds> <detourDistanceMeters>957.65</detourDistanceMeters> <detourDurationSeconds>224.14</detourDurationSeconds> <detourOriginDistanceMeters>3684.98</detourOriginDistanceMeters> <detourOriginDurationSeconds>752.34</detourOriginDurationSeconds> <detourDestinationDistanceMeters>4123.38</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>444.94</detourDestinationDurationSeconds> </resources> <resources> <id>res1</id> <totalDistanceMeters>13714.6</totalDistanceMeters> <totalDurationSeconds>2261.52</totalDurationSeconds> <detourDistanceMeters>6863.89</detourDistanceMeters> <detourDurationSeconds>1288.38</detourDurationSeconds> <detourOriginDistanceMeters>5731.27</detourOriginDistanceMeters> <detourOriginDurationSeconds>1156.94</detourOriginDurationSeconds> <detourDestinationDistanceMeters>7983.33</detourDestinationDistanceMeters> <detourDestinationDurationSeconds>1104.58</detourDestinationDurationSeconds> </resources> </route> </routes> </searchAlongResult>
Cas d’un SRS incorrect
{"message":"NullPointerException: null","status":"ERROR"}
Cas d’une absence de ressource (searchAroundResponse/status est OK)
{"message":"Input resources list must not be null and empty!","status":"ERROR","routes":[]}
- 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. Comment s’organise le classement des adresses retournées, par rapport à la distance, au temps, aux priorités ?
- 5. Quel format doit avoir la priorité et est-il possible de définir un ordre de classement ? (croissant/décroissant)
- 6. Si une seule adresse de la liste a une priorité à 0, la priorité est elle prise en compte pour une des adresses de la liste ?
- 7. Comment faire un calcul d’itinéraire sans péage?
- 8. Qu’est-ce que les Speed Patterns ? Comment les utiliser ?
Pour les utiliser il faut passer, lors de l’appel au web service, le paramètre computeOptions
avec l’option speedPattern et préciser la valeur de la Speed Pattern demandée sans omettre un profil de véhicule
Exemple :
+
&computeOptions=speedPattern:fast-speed&profileId=1
- Comment utiliser les attributs poids lourds ?
-
Il faut que le graphe intègre les attributs de poids lourds (en standard dans les graphes fournis par GEOCONCEPT SAS à partir de la version M18) et soit calculer un itinéraire en utilisant un profil de véhicule utilisant les restrictions (cf. le catalogue de véhicules, éditable, définit dans le fichier SmartRoutingVehicles.xml, dans le dossier `‘<GEOCONCEPT_WEB_HOME>’'\smartrouting\jee\smartrouting\conf\ ), soit surcharger l’appel au web service en utilisant le paramètre
computeOptions
avec les options length, width, height, weight, axles et/ou weightPerAxle.
Exemple pour un trajet avec un véhicule de 4,5 mètres de hauteur :&computeOptions=height:450