Calcul de matrice

Cette page n’est plus maintenue depuis la version 2022 de Geoconcept Web. Pour accéder à la documentation à jour de ce web service, veuillez suivre ce lien.

Principe

Ce web service calcule une matrice d’itinéraires pour un ensemble de points et retourne un distancier. Il s’appuie sur le graphe paramétré dont le nom a été spécifié dans l’interface d’administration de Geoconcept Web. Voir aussi le web service de calcul de matrice compacte.

Disponibilité

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

Changement de version

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

Changements avec la V4

  • Ajout des paramètres "timeOut" et "computeOptions".
  • Ajout dans la snapMethod "nodes" de l’accrochage aux noeuds les plus proches.

Changements avec la V3

  • 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 : "originNodes", "destinationNodes" et de "nodes" dans les snapMethod.
  • Ajout du paramètre "maxCost".

Changements avec la V2

  • Ajout du paramètre "snapMethod"
  • Ajout du paramètre "startDateTime"
  • Suppression du paramètre "RejectFlags", remplacé par "exclusions"
  • Les paramètres "distance" et "duration" sont renommés respectivement "distanceMeters" et "durationSeconds"

V4

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

origins

Liste des coordonnées des points d’origines. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui *

originNodes

Liste des noeuds ids d’origines. Les Noeuds ids sont séparées par la caractère ,. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

destinations

Liste des coordonnées des points de destinations. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui *

destinationNodes

Liste des noeuds ids de destinations. Les Noeuds ids sont séparées par la caractère ,. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

graphName (déprécié)

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

oui

method

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

oui

time

profileId (déprécié)

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

oui

profileName (déprécié)

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

oui

exclusions

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

oui

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

snapMethod

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

oui

standard

avoidArea

Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée
Exemple en wgs84 : POLYGON ((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)) - MULTIPOLYGON (((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)), ((-1.558639 47.218144, -1.558639 47.218193, [...] -1.558639 47.218144)))
Attention les géométries WKT doivent être fermées.

oui

configName

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

oui

computeOptions

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

oui

maxCost

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

oui

timeOut

Time out pour le calcul (en millisecondes)

oui

(*) Au moins l’un des deux couples de paramètres origins/destinations ou originNodes/destinationsNodes doit être renseigné.

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

En sortie

Matrice (matrixResultV3)

paramètre type min/max description

origins/origin (ou origins en JSON / JSON-P)

string (ou array of origins/origin en JSON / JSON-P)

0/illimité

positions d’origine.

destinations/destination (ou destinations en JSON / JSON-P)

string (ou array of destinations/destination en JSON / JSON-P)

0/illimité

positions de destination.

rows/row (ou rows en JSON / JSON-P)

matrixRowV3 (ou array of rows/row (matrixRow) en JSON / JSON-P)

0/illimité

Ligne de matrice

Ligne de matrice (matrixRowV3)

paramètre type min/max description

cells/cell (ou cells en JSON / JSON-P)

matrixCellV3 (ou array of cells/cell (matrixCellV3) en JSON / JSON-P)

0/illimité

Cellule de matrice

Cellule de matrice (matrixCellV3)

paramètre type min/max description

distanceMeters

double

1/1

Distance de cellule de matrice (en mètres)

durationSeconds

double

1/1

Durée de cellule de matrice (en secondes)

status

string

0/1

Status cellule de matrice :
- OK : l’itinéraire a bien été trouvé pour cette cellule
- KO : pas d’itinéraire trouvé pour cette cellule

SOAP

WSDL

http://<server>/<webapp>/api/ws/matrixService?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:matrixV4>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs>epsg:27572</srs>
            <!--Optional:-->
            <origins>
               <!--1 or more repetitions:-->
               <origin>
                  <x>315846.96</x>
                  <y>2254268.35</y>
               </origin>
                <origin>
                              <x>313584.77</x>
                  <y>2251648.97</y>
               </origin>
            </origins>
            <!--Optional:-->
            <originNodes>
               <!--1 or more repetitions:-->
               <originNode></originNode>
            </originNodes>
            <!--Optional:-->
            <destinations>
               <!--1 or more repetitions:-->
               <destination>
                  <x>321442.89</x>
                  <y>2251013.98</y>
               </destination>
                <destination>
                  <x>318982.27</x>
                  <y>2248315.22</y>
               </destination>
            </destinations>
            <!--Optional:-->
            <destinationNodes>
               <!--1 or more repetitions:-->
               <destinationNode></destinationNode>
            </destinationNodes>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <configName></configName>
            <!--Optional:-->
            <computeOptions></computeOptions>
            <!--Optional:-->
            <timeOut></timeOut>
                        <!--Optional:-->
                        <maxCost>0</maxCost>
         </request>
      </sch:matrixV4>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:matrixV4Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <MatrixResult>
            <status>OK</status>
            <origins>
               <origin>315846.96,2254268.35</origin>
               <origin>313584.77,2251648.97</origin>
            </origins>
            <destinations>
               <destination>321442.89,2251013.98</destination>
               <destination>318982.27,2248315.22</destination>
            </destinations>
            <srs>epsg:27572</srs>
            <rows>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>8109.0</distanceMeters>
                        <durationSeconds>564.66</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>11249.39</distanceMeters>
                        <durationSeconds>816.38</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>11736.89</distanceMeters>
                        <durationSeconds>856.77</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>7636.69</distanceMeters>
                        <durationSeconds>526.1</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
            </rows>
         </MatrixResult>
      </ns2:matrixV4Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/matrix/v4.json?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time

Requête JSON-P 

http://<server>/<webapp>/api/lbs/matrix/v4.json?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/matrix/v4.xml?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time

Réponse

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

Format JSON 

{
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.0,
               "durationSeconds":656.74,
               "status":"OK"
            },
            {
               "distanceMeters":11249.37,
               "durationSeconds":888.57,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.89,
               "durationSeconds":959.9,
               "status":"OK"
            },
            {
               "distanceMeters":7636.67,
               "durationSeconds":609.35,
               "status":"OK"
            }
         ]
      }
   ]
}

Format JSON-P 

MyCallBack({
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.0,
               "durationSeconds":656.74,
               "status":"OK"
            },
            {
               "distanceMeters":11249.37,
               "durationSeconds":888.57,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.89,
               "durationSeconds":959.9,
               "status":"OK"
            },
            {
               "distanceMeters":7636.67,
               "durationSeconds":609.35,
               "status":"OK"
            }
         ]
      }
   ]
});

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<matrixResultV4>
   <status>OK</status>
   <origins>
      <origin>315846.96,2254268.35</origin>
      <origin>313584.77,2251648.97</origin>
   </origins>
   <destinations>
      <destination>321442.89,2251013.98</destination>
      <destination>318982.27,2248315.22</destination>
   </destinations>
   <srs>epsg:27572</srs>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>8109.0</distanceMeters>
               <durationSeconds>656.74</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>11249.37</distanceMeters>
               <durationSeconds>888.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>11736.89</distanceMeters>
               <durationSeconds>959.9</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>7636.67</distanceMeters>
               <durationSeconds>609.35</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV4>

Retours possibles

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

<?xml version="1.0" encoding="UTF-8"?>
<matrixResultV4>
   <status>OK</status>
   <origins>
      <origin>315846.96,2254268.35</origin>
      <origin>313584.77,2251648.97</origin>
   </origins>
   <destinations>
      <destination>321442.89,2251013.98</destination>
      <destination>318982.27,2248315.22</destination>
   </destinations>
   <srs>epsg:27572</srs>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>8109.0</distanceMeters>
               <durationSeconds>656.74</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>11249.37</distanceMeters>
               <durationSeconds>888.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>11736.89</distanceMeters>
               <durationSeconds>959.9</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>7636.67</distanceMeters>
               <durationSeconds>609.35</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV4>

Cas d’un oubli de spécification d’origine ou de destination (matrixResultV3/status est ERROR) 

<matrixResultV4>
   <message>Origins and destinations must be not null</message>
   <status>ERROR</status>
</matrixResultV4>

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 (matrixResultV3/status est OK) / (cell/status est KO) 

<matrixResultV4>
   <status>OK</status>
   <origins>
      <origin>-0.36147,49.18392</origin>
      <origin>7.26132,43.70629</origin>
   </origins>
   <destinations>
      <destination>146.08821,48.43253</destination>
      <destination>2.34878,48.86473</destination>
   </destinations>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>234196.77000000002</distanceMeters>
               <durationSeconds>9451.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>930934.64</distanceMeters>
               <durationSeconds>31773.440000000002</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV4>

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

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

V3

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

origins

Liste des coordonnées des points d’origines. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui *

originNodes

Liste des noeuds ids d’origines. Les Noeuds ids sont séparées par la caractère ,. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

destinations

Liste des coordonnées des points de destinations. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui *

destinationNodes

Liste des noeuds ids de destinations. Les Noeuds ids sont séparées par la caractère ,. Attention : un noeud physique n’a pas le même ID dans un autre graphe.

oui *

graphName

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

oui

method

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

oui

time

profileId

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

oui

profileName

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

oui

exclusions

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

oui

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

snapMethod

Méthode d’accrochage au graphe
- standard : au tronçon connectable le plus proche
- extended : via les tronçons restreints (piétons…)
- nearest : uniquement au tronçon le plus proche
- unrestricted : sans règles de restriction
- nodes : accrochage direct aux noeuds indiqués par locationNode et les paramètres node des ressources

oui

standard

avoidArea

Zone de transit interdit au format WKT (POLYGON ou MULTIPOLYGON) dans la projection (paramètre srs) demandée
Exemple en wgs84 : POLYGON ((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)) - MULTIPOLYGON (((-1.556892 47.21689, -1.556892 47.216904, [...] -1.556892 47.21689)), ((-1.558639 47.218144, -1.558639 47.218193, [...] -1.558639 47.218144)))
Attention les géométries WKT doivent être fermées.

oui

configName

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

oui

maxCost

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

oui

(*) Au moins l’un des deux couples de paramètres origins/destinations ou originNodes/destinationsNodes doit être renseigné.

En sortie

Matrice (matrixResultV3)

paramètre type min/max description

origins/origin (ou origins en JSON / JSON-P)

string (ou array of origins/origin en JSON / JSON-P)

0/illimité

positions d’origine.

destinations/destination (ou destinations en JSON / JSON-P)

string (ou array of destinations/destination en JSON / JSON-P)

0/illimité

positions de destination.

rows/row (ou rows en JSON / JSON-P)

matrixRowV3 (ou array of rows/row (matrixRow) en JSON / JSON-P)

0/illimité

Ligne de matrice

Ligne de matrice (matrixRowV3)

paramètre type min/max description

cells/cell (ou cells en JSON / JSON-P)

matrixCellV3 (ou array of cells/cell (matrixCellV3) en JSON / JSON-P)

0/illimité

Cellule de matrice

Cellule de matrice (matrixCellV3)

paramètre type min/max description

distanceMeters

double

1/1

Distance de cellule de matrice (en mètres)

durationSeconds

double

1/1

Durée de cellule de matrice (en secondes)

status

string

0/1

Status cellule de matrice :
- OK : l’itinéraire a bien été trouvé pour cette cellule
- KO : pas d’itinéraire trouvé pour cette cellule

SOAP

WSDL

http://<server>/<webapp>/api/ws/matrixService?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:matrixV3>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs>epsg:27572</srs>
            <!--Optional:-->
            <origins>
               <!--1 or more repetitions:-->
               <origin>
                  <x>315846.96</x>
                  <y>2254268.35</y>
               </origin>
                <origin>
                              <x>313584.77</x>
                  <y>2251648.97</y>
               </origin>
            </origins>
            <!--Optional:-->
            <originNodes>
               <!--1 or more repetitions:-->
               <originNode></originNode>
            </originNodes>
            <!--Optional:-->
            <destinations>
               <!--1 or more repetitions:-->
               <destination>
                  <x>321442.89</x>
                  <y>2251013.98</y>
               </destination>
                <destination>
                  <x>318982.27</x>
                  <y>2248315.22</y>
               </destination>
            </destinations>
            <!--Optional:-->
            <destinationNodes>
               <!--1 or more repetitions:-->
               <destinationNode></destinationNode>
            </destinationNodes>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <configName></configName>
            <!--Optional:-->
            <maxCost>0</maxCost>
         </request>
      </sch:matrixV3>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:matrixV3Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <MatrixResult>
            <status>OK</status>
            <origins>
               <origin>315846.96,2254268.35</origin>
               <origin>313584.77,2251648.97</origin>
            </origins>
            <destinations>
               <destination>321442.89,2251013.98</destination>
               <destination>318982.27,2248315.22</destination>
            </destinations>
            <srs>epsg:27572</srs>
            <rows>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>8109.0</distanceMeters>
                        <durationSeconds>564.66</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>11249.37</distanceMeters>
                        <durationSeconds>816.38</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>11736.89</distanceMeters>
                        <durationSeconds>856.77</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>7636.67</distanceMeters>
                        <durationSeconds>526.1</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
            </rows>
         </MatrixResult>
      </ns2:matrixV3Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/matrix/v3.json?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time

Requête JSON-P 

http://<server>/<webapp>/api/lbs/matrix/v3.json?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/matrix/v3.xml?origins=315846.96,2254268.35;313584.77,2251648.97&destinations=321442.89,2251013.98;318982.27,2248315.22&srs=epsg:27572&method=time

Réponse

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

Format JSON 

{
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.0,
               "durationSeconds":656.74,
               "status":"OK"
            },
            {
               "distanceMeters":11249.37,
               "durationSeconds":888.57,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.89,
               "durationSeconds":959.9,
               "status":"OK"
            },
            {
               "distanceMeters":7636.67,
               "durationSeconds":609.35,
               "status":"OK"
            }
         ]
      }
   ]
}

Format JSON-P 

MyCallBack({
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.0,
               "durationSeconds":656.74,
               "status":"OK"
            },
            {
               "distanceMeters":11249.37,
               "durationSeconds":888.57,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.89,
               "durationSeconds":959.9,
               "status":"OK"
            },
            {
               "distanceMeters":7636.67,
               "durationSeconds":609.35,
               "status":"OK"
            }
         ]
      }
   ]
});

Format XML 

<?xml version="1.0" encoding="UTF-8"?>
<matrixResultV3>
   <status>OK</status>
   <origins>
      <origin>315846.96,2254268.35</origin>
      <origin>313584.77,2251648.97</origin>
   </origins>
   <destinations>
      <destination>321442.89,2251013.98</destination>
      <destination>318982.27,2248315.22</destination>
   </destinations>
   <srs>epsg:27572</srs>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>8109.0</distanceMeters>
               <durationSeconds>656.74</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>11249.37</distanceMeters>
               <durationSeconds>888.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>11736.89</distanceMeters>
               <durationSeconds>959.9</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>7636.67</distanceMeters>
               <durationSeconds>609.35</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV3>

Retours possibles

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

<?xml version="1.0" encoding="UTF-8"?>
<matrixResultV3>
   <status>OK</status>
   <origins>
      <origin>315846.96,2254268.35</origin>
      <origin>313584.77,2251648.97</origin>
   </origins>
   <destinations>
      <destination>321442.89,2251013.98</destination>
      <destination>318982.27,2248315.22</destination>
   </destinations>
   <srs>epsg:27572</srs>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>8109.0</distanceMeters>
               <durationSeconds>656.74</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>11249.37</distanceMeters>
               <durationSeconds>888.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>11736.89</distanceMeters>
               <durationSeconds>959.9</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>7636.67</distanceMeters>
               <durationSeconds>609.35</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV3>

Cas d’un oubli de spécification d’origine ou de destination (matrixResultV3/status est ERROR) 

<matrixResultV3>
   <message>Origins and destinations must be not null</message>
   <status>ERROR</status>
</matrixResultV3>

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 (matrixResultV3/status est OK) / (cell/status est KO) 

<matrixResultV3>
   <status>OK</status>
   <origins>
      <origin>-0.36147,49.18392</origin>
      <origin>7.26132,43.70629</origin>
   </origins>
   <destinations>
      <destination>146.08821,48.43253</destination>
      <destination>2.34878,48.86473</destination>
   </destinations>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>234196.77000000002</distanceMeters>
               <durationSeconds>9451.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>930934.64</distanceMeters>
               <durationSeconds>31773.440000000002</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV3>

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

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

V2

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

origins

Liste des coordonnées des points d’origines. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

destinations

Liste des coordonnées des points de destinations. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

graphName

Nom du graphe à utiliser

oui

method

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

oui

time

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

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

snapMethod

Méthode d’accrochage au graphe
- standard : au tronçon connectable le plus proche
- extended : via les tronçons restreints (piétons…)
- nearest : uniquement au tronçon le plus proche
- unrestricted : sans règles de restriction

oui

standard

En sortie

Matrice (matrixResultV2)

paramètre type min/max description

origins/origin (ou origins en JSON / JSON-P)

string (ou array of origins/origin en JSON / JSON-P)

0/illimité

positions d’origine.

destinations/destination (ou destinations en JSON / JSON-P)

string (ou array of destinations/destination en JSON / JSON-P)

0/illimité

positions de destination.

rows/row (ou rows en JSON / JSON-P)

matrixRowV2 (ou array of rows/row (matrixRow) en JSON / JSON-P)

0/illimité

Ligne de matrice

Ligne de matrice (matrixRowV2)

paramètre type min/max description

cells/cell (ou cells en JSON / JSON-P)

matrixCellV2 (ou array of cells/cell (matrixCellV2) en JSON / JSON-P)

0/illimité

Cellule de matrice

Cellule de matrice (matrixCellV2)

paramètre type min/max description

distanceMeters

double

1/1

Distance de cellule de matrice (en mètres)

durationSeconds

double

1/1

Durée de cellule de matrice (en secondes)

status

string

0/1

Status cellule de matrice :
- OK : l’itinéraire a bien été trouvé pour cette cellule
- KO : pas d’itinéraire trouvé pour cette cellule

SOAP

WSDL

http://<server>/<webapp>/api/ws/matrixService?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:matrixV2>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs>epsg:27572</srs>
            <!--Optional:-->
            <origins>
               <!--1 or more repetitions:-->
               <origin>
                  <x>315846.96</x>
                  <y>2254268.3500000001</y>
               </origin>
                <origin>
                           <x>313584.77</x>
                  <y>2251648.9700000002</y>
               </origin>
            </origins>
            <!--Optional:-->
            <destinations>
               <!--1 or more repetitions:-->
               <destination>
                  <x>321442.89</x>
                  <y>2251013.98</y>
               </destination>
                <destination>
                  <x>318982.27</x>
                  <y>2248315.2200000002</y>
               </destination>
            </destinations>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <method>time</method>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
         </request>
      </sch:matrixV2>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:matrixV2Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <MatrixResult>
            <status>OK</status>
            <origins>
               <origin>315846.96,2254268.35</origin>
               <origin>313584.77,2251648.97</origin>
            </origins>
            <destinations>
               <destination>321442.89,2251013.98</destination>
               <destination>318982.27,2248315.22</destination>
            </destinations>
            <srs>epsg:27572</srs>
            <rows>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>8109.04</distanceMeters>
                        <durationSeconds>894.48</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>11127.53</distanceMeters>
                        <durationSeconds>873.21</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
               <row>
                  <cells>
                     <cell>
                        <distanceMeters>11736.87</distanceMeters>
                        <durationSeconds>1158.04</durationSeconds>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distanceMeters>7514.82</distanceMeters>
                        <durationSeconds>615.79</durationSeconds>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
            </rows>
         </MatrixResult>
      </ns2:matrixV2Response>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/matrix/v2.json?origins=315846.96,2254268.3500000001;313584.77,2251648.9700000002&destinations=321442.89,2251013.98;318982.27,2248315.2200000002&srs=epsg:27572&method=time

Requête JSON-P 

http://<server>/<webapp>/api/lbs/matrix/v2.json?origins=315846.96,2254268.3500000001;313584.77,2251648.9700000002&destinations=321442.89,2251013.98;318982.27,2248315.2200000002&srs=epsg:27572&method=time&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/matrix/v2.xml?origins=315846.96,2254268.3500000001;313584.77,2251648.9700000002&destinations=321442.89,2251013.98;318982.27,2248315.2200000002&srs=epsg:27572&method=time

Réponse

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

Format JSON 

{
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.04,
               "durationSeconds":894.48,
               "status":"OK"
            },
            {
               "distanceMeters":11127.53,
               "durationSeconds":873.21,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.87,
               "durationSeconds":1158.04,
               "status":"OK"
            },
            {
               "distanceMeters":7514.82,
               "durationSeconds":615.79,
               "status":"OK"
            }
         ]
      }
   ]
}

Format JSON-P 

MyCallBack({
   "message":null,
   "status":"OK",
   "origins":[
      "315846.96,2254268.35",
      "313584.77,2251648.97"
   ],
   "destinations":[
      "321442.89,2251013.98",
      "318982.27,2248315.22"
   ],
   "srs":"epsg:27572",
   "rows":[
      {
         "cells":[
            {
               "distanceMeters":8109.04,
               "durationSeconds":894.48,
               "status":"OK"
            },
            {
               "distanceMeters":11127.53,
               "durationSeconds":873.21,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distanceMeters":11736.87,
               "durationSeconds":1158.04,
               "status":"OK"
            },
            {
               "distanceMeters":7514.82,
               "durationSeconds":615.79,
               "status":"OK"
            }
         ]
      }
   ]
});

Format XML 

<matrixResultV2>
   <status>OK</status>
   <origins>
      <origin>-0.36147,49.18392</origin>
      <origin>7.26132,43.70629</origin>
   </origins>
   <destinations>
      <destination>0.08821,48.43253</destination>
      <destination>2.34878,48.86473</destination>
   </destinations>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>107526.06</distanceMeters>
               <durationSeconds>4906.25</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>234196.77000000002</distanceMeters>
               <durationSeconds>9451.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>1103695.95</distanceMeters>
               <durationSeconds>37887.43</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>930934.64</distanceMeters>
               <durationSeconds>31773.440000000002</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV2>

Retours possibles

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

<?xml version="1.0" encoding="UTF-8"?>
<matrixResultV2>
   <status>OK</status>
   <origins>
      <origin>315846.96,2254268.35</origin>
      <origin>313584.77,2251648.97</origin>
   </origins>
   <destinations>
      <destination>321442.89,2251013.98</destination>
      <destination>318982.27,2248315.22</destination>
   </destinations>
   <srs>epsg:27572</srs>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>8109.04</distanceMeters>
               <durationSeconds>894.48</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>11127.53</distanceMeters>
               <durationSeconds>873.21</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>11736.87</distanceMeters>
               <durationSeconds>1158.04</durationSeconds>
               <status>OK</status>
            </cell>
            <cell>
               <distanceMeters>7514.82</distanceMeters>
               <durationSeconds>615.79</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV2>

Cas d’un oubli de spécification d’origine ou de destination (matrixResultV2/status est ERROR) 

<matrixResultV2>
   <message>Origins and destinations must be not null</message>
   <status>ERROR</status>
</matrixResultV2>

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 (matrixResultV2/status est OK) / (cell/status est KO) 

<matrixResultV2>
   <status>OK</status>
   <origins>
      <origin>-0.36147,49.18392</origin>
      <origin>7.26132,43.70629</origin>
   </origins>
   <destinations>
      <destination>146.08821,48.43253</destination>
      <destination>2.34878,48.86473</destination>
   </destinations>
   <rows>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>234196.77000000002</distanceMeters>
               <durationSeconds>9451.57</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
      <row>
         <cells>
            <cell>
               <distanceMeters>0.0</distanceMeters>
               <durationSeconds>0.0</durationSeconds>
               <status>KO</status>
            </cell>
            <cell>
               <distanceMeters>930934.64</distanceMeters>
               <durationSeconds>31773.440000000002</durationSeconds>
               <status>OK</status>
            </cell>
         </cells>
      </row>
   </rows>
</matrixResultV2>

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

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

V1

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

origins

Liste des coordonnées des points d’origines. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

destinations

Liste des coordonnées des points de destinations. Les coordonnées longitude et latitude sont séparées par la caractère ,

oui

graphName

Nom du graphe à utiliser

oui

method

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

oui

time

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

exclusions

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

oui

En sortie

Matrice (matrixResult)

paramètre type min/max description

originLocations/originLocation (ou originLocations en JSON / JSON-P)

string (ou array of originLocations/originLocation en JSON / JSON-P)

0/illimité

positions d’origine

destinationLocations/destinationLocation (ou destinationLocations en JSON / JSON-P)

string (ou array of destinationLocations/destinationLocation en JSON / JSON-P)

0/illimité

positions de destination

rows/row (ou rows en JSON / JSON-P)

matrixRow (ou array of rows/row (matrixRow) en JSON / JSON-P)

0/illimité

Ligne de matrice

Ligne de matrice (matrixRow)

paramètre type min/max description

cells/cell (ou cells en JSON / JSON-P)

matrixCell (ou array of cells/cell (matrixCell) en JSON / JSON-P)

0/illimité

Cellule de matrice

Cellule de matrice (matrixCell)

paramètre type min/max description

distance

double

1/1

Distance de cellule de matrice (en mètres)

duration

double

1/1

Durée de cellule de matrice (en secondes)

status

string

0/1

Status cellule de matrice :
- OK : l’itinéraire a bien été trouvé pour cette cellule
- KO : pas d’itinéraire trouvé pour cette cellule

SOAP

WSDL

http://<server>/<webapp>/api/ws/matrixService?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:matrix>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <origins>
               <!--1 or more repetitions:-->
               <origin>
                  <x>-0.361470</x>
                  <y>49.183920</y>
               </origin>
               <origin>
                  <x>7.261320</x>
                  <y>43.706290</y>
               </origin>
            </origins>
            <!--Optional:-->
            <destinations>
               <!--1 or more repetitions:-->
               <destination>
                  <x>0.088210</x>
                  <y>48.432530</y>
               </destination>
               <destination>
                  <x>2.348780</x>
                  <y>48.864730</y>
               </destination>
            </destinations>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <method></method>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions></exclusions>
         </request>
      </sch:matrix>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:matrixResponse xmlns:ns2="http://geoconcept.com/gc/schemas">
         <MatrixResult>
            <status>OK</status>
            <originLocations>
                                <originLocation>-0,361470;49,183920</originLocation>
                                <originLocation>7,261320;43,706290</originLocation>
            </originLocations>
            <destinationLocations>
                                <destinationLocation>0,088210;48,432530</destinationLocation>
                                <destinationLocation>2,348780;48,864730</destinationLocation>
            </destinationLocations>
            <rows>
               <row>
                  <cells>
                     <cell>
                        <distance>107898.07</distance>
                        <duration>3592.48</duration>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distance>233393.72</distance>
                        <duration>7063.8</duration>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
               <row>
                  <cells>
                     <cell>
                        <distance>1105102.84</distance>
                        <duration>32465.86</duration>
                        <status>OK</status>
                     </cell>
                     <cell>
                        <distance>931394.85</distance>
                        <duration>27277.25</duration>
                        <status>OK</status>
                     </cell>
                  </cells>
               </row>
            </rows>
         </MatrixResult>
      </ns2:matrixResponse>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/matrix.json?origins=-0.36147,49.18392;7.26132,43.70629&destinations=0.08821,48.43253;2.34878,48.86473

Requête JSON-P 

http://<server>/<webapp>/api/lbs/matrix.json?origins=-0.36147,49.18392;7.26132,43.70629&destinations=0.08821,48.43253;2.34878,48.86473&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/matrix.xml?origins=-0.36147,49.18392;7.26132,43.70629&destinations=0.08821,48.43253;2.34878,48.86473

Réponse

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

Format JSON 

{
   "message":null,
   "status":"OK",
   "originLocations":[
      "-0,361470;49,183920",
      "7,261320;43,706290"
   ],
   "destinationLocations":[
      "0,088210;48,432530",
      "2,348780;48,864730"
   ],
   "rows":[
      {
         "cells":[
            {
               "distance":107528.37,
               "duration":5139.2300000000005,
               "status":"OK"
            },
            {
               "distance":234732.19,
               "duration":9880.54,
               "status":"OK"
            }
         ]
      },
      {
         "cells":[
            {
               "distance":1103920.65,
               "duration":38946.42,
               "status":"OK"
            },
            {
               "distance":930731.03,
               "duration":32689.65,
               "status":"OK"
            }
         ]
      }
   ]
}

Format JSON-P 

myCallback(
        {
           "message":null,
           "status":"OK",
           "originLocations":[
                  "-0,361470;49,183920",
                  "7,261320;43,706290"
           ],
           "destinationLocations":[
                  "0,088210;48,432530",
                  "2,348780;48,864730"
           ],
           "rows":[
                  {
                         "cells":[
                                {
                                   "distance":107528.37,
                                   "duration":5139.2300000000005,
                                   "status":"OK"
                                },
                                {
                                   "distance":234732.19,
                                   "duration":9880.54,
                                   "status":"OK"
                                }
                         ]
                  },
                  {
                         "cells":[
                                {
                                   "distance":1103920.65,
                                   "duration":38946.42,
                                   "status":"OK"
                                },
                                {
                                   "distance":930731.03,
                                   "duration":32689.65,
                                   "status":"OK"
                                }
                         ]
                  }
           ]
        }
);

Format XML 

<matrixResult>
        <status>OK</status>
        <originLocations>
                <originLocation>-0,361470;49,183920</originLocation>
                <originLocation>7,261320;43,706290</originLocation>
        </originLocations>
        <destinationLocations>
                <destinationLocation>0,088210;48,432530</destinationLocation>
                <destinationLocation>2,348780;48,864730</destinationLocation>
        </destinationLocations>
        <rows>
                <row>
                        <cells>
                                <cell>
                                        <distance>107528.37</distance>
                                        <duration>5139.2300000000005</duration>
                                        <status>OK</status>
                                </cell>
                                <cell>
                                        <distance>234732.19</distance>
                                        <duration>9880.54</duration>
                                        <status>OK</status>
                                </cell>
                        </cells>
                </row>
                <row>
                        <cells>
                                <cell>
                                        <distance>1103920.65</distance>
                                        <duration>38946.42</duration>
                                        <status>OK</status>
                                </cell>
                                <cell>
                                        <distance>930731.03</distance>
                                        <duration>32689.65</duration>
                                        <status>OK</status>
                                </cell>
                        </cells>
                </row>
        </rows>
</matrixResult>

Retours possibles

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

<matrixResult>
        <status>OK</status>
        <originLocations>
                <originLocation>-0,361470;49,183920</originLocation>
                <originLocation>7,261320;43,706290</originLocation>
        </originLocations>
        <destinationLocations>
                <destinationLocation>0,088210;48,432530</destinationLocation>
                <destinationLocation>2,348780;48,864730</destinationLocation>
        </destinationLocations>
        <rows>
                <row>
                        <cells>
                                <cell>
                                        <distance>107528.37</distance>
                                        <duration>5139.2300000000005</duration>
                                        <status>OK</status>
                                </cell>
                                <cell>
                                        <distance>234732.19</distance>
                                        <duration>9880.54</duration>
                                        <status>OK</status>
                                </cell>
                        </cells>
                </row>
                <row>
                        <cells>
                                <cell>
                                        <distance>1103920.65</distance>
                                        <duration>38946.42</duration>
                                        <status>OK</status>
                                </cell>
                                <cell>
                                        <distance>930731.03</distance>
                                        <duration>32689.65</duration>
                                        <status>OK</status>
                                </cell>
                        </cells>
                </row>
        </rows>
</matrixResult>

Cas d’un oubli de spécification d’origine et de destination (matrixResult/status est OK) 

<matrixResult>
        <status>OK</status>
        <originLocations/>
        <destinationLocations/>
</matrixResult>

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 (matrixResult/status est OK) / (matrixCell/status est KO) 

<matrixResult>
        <status>OK</status>
        <originLocations>
                <originLocation>-0,361470;49,183920</originLocation>
                <originLocation>57,261320;43,706290</originLocation>
        </originLocations>
        <destinationLocations>
                <destinationLocation>0,088210;48,432530</destinationLocation>
                <destinationLocation>2,348780;48,864730</destinationLocation>
        </destinationLocations>
        <rows>
                <row>
                        <cells>
                                <cell>
                                        <distance>107528.37</distance>
                                        <duration>5139.2300000000005</duration>
                                        <status>OK</status>
                                </cell>
                                <cell>
                                        <distance>234732.19</distance>
                                        <duration>9880.54</duration>
                                        <status>OK</status>
                                </cell>
                        </cells>
                </row>
                <row>
                        <cells>
                                <cell>
                                        <distance>0.0</distance>
                                        <duration>0.0</duration>
                                        <status>KO</status>
                                </cell>
                                <cell>
                                        <distance>0.0</distance>
                                        <duration>0.0</duration>
                                        <status>KO</status>
                                </cell>
                        </cells>
                </row>
        </rows>
</matrixResult>

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

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

FAQ

1. Peut-on utiliser des alias à défaut des noms de fichiers .siti pour appeler une datasource ?
2. Comment utiliser les statistiques routières ?
3. Comment faire un calcul de matrice d’itinéraires sans péage?
4. Qu’est-ce que les Speed Patterns ? Comment les utiliser ?
5. Comment utiliser les attributs poids lourds ?

1.

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

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

2.

Comment utiliser les statistiques routières ?

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

3.

Comment faire un calcul de matrice d’itinéraires sans péage?

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:matrix>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <origins>
               <!--1 or more repetitions:-->
               <origin>
                  <x>-0.361470</x>
                  <y>49.183920</y>
               </origin>
               <origin>
                  <x>7.261320</x>
                  <y>43.706290</y>
               </origin>
            </origins>
            <!--Optional:-->
            <destinations>
               <!--1 or more repetitions:-->
               <destination>
                  <x>0.088210</x>
                  <y>48.432530</y>
               </destination>
               <destination>
                  <x>2.348780</x>
                  <y>48.864730</y>
               </destination>
            </destinations>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <method></method>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>Toll</exclusions>
         </request>
      </sch:matrix>
   </soapenv:Body>
</soapenv:Envelope>

4.

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

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

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

Pour les utiliser il faut passer, lors de l’appel au web service, le paramètre computeOptions avec l’option speedPattern et préciser la valeur de la Speed Pattern demandée sans omettre un profil de véhicule
Exemple :

&computeOptions=speedPattern:fast-speed&profileId=1

5.

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