Calcul d’isochrone/isodistance

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

Principe

Ce web service calcule un isochrone/isodistance depuis un point et retourne la géométrie de la zone calculée. Il s’appuie sur le graphe paramétré dont le nom a été spécifié dans l’interface d’administration de Geoconcept Web.

Disponibilité

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

Changement de version

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

Changements avec la V4

  • Ajout des paramètres "timeOut" et "computeOptions".

Changements avec la V3

  • Ajout des paramètres "avoidArea" et "configName".

Changements avec la V2

  • Ajout des paramètres "startDateTime" et "snapMethod"

V4

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

id

Identifiant de l’isochrone

oui

location

Départ (ou arrivée si le reverse est à true). Les coordonnées sont séparées par la caractère ,

non

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

epsg:4326

graphName (déprécié)

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

oui

profileId (déprécié)

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

oui

profileName (déprécié)

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

oui

exclusions

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

oui

method

"time" pour isochrone ou "distance" for isodistance

non

time

time

Temps maximum d’accès, en secondes

oui

distance

Distance maximum d’accès, en mètres

oui

reverse

si true, le location est considéré comme arrivée

oui

false

smoothing

Lissage

oui

false

holes

Afficher les trous dans la zone résultante (la géométrie retournée est plus volumineuse lorsque ce paramètre est à true )

oui

false

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

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

timeOut

Time out pour le calcul (en millisecondes)

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

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

En sortie

Itinéraire (isochroneResult)

paramètre type min/max description

id

string

0/1

Identifiant de l’isochrone

location

string

0/1

Départ (ou arrivée si le reverse est à true).

srs

string

0/1

projection

time

string

0/1

Temps maximum d’accès, en secondes

distance

string

0/1

Distance maximum d’accès, en mètres

wktGeometry

string

0/1

Géometrie de l’isochrone, au format wkt

SOAP

WSDL

http://<server>/<webapp>/api/ws/isochroneService?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:isochroneV4>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <id>1</id>
            <location>
               <x>-1.557189</x>
               <y>47.217122</y>
            </location>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <method>distance</method>
            <!--Optional:-->
            <time></time>
            <!--Optional:-->
            <distance>5000</distance>
            <!--Optional:-->
            <reverse></reverse>
            <!--Optional:-->
            <smoothing></smoothing>
            <!--Optional:-->
            <holes></holes>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <configName></configName>
            <!--Optional:-->
            <computeOptions></computeOptions>
            <!--Optional:-->
            <timeOut></timeOut>
            </request>
      </sch:isochroneV4>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:isochroneV4Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <IsochroneResult>
            <status>OK</status>
            <id>1</id>
            <location>-1.557189,47.217122</location>
            <srs />
            <distance>5000</distance>
            <wktGeometry>POLYGON ((-1.544603 47.179044, -1.545261 47.179044, [...], -1.544603 47.179044))</wktGeometry>
         </IsochroneResult>
      </ns2:isochroneV4Response>
   </soap:Body>
</soap:Envelope>
REST (POST)

Requête

Requête 

http://<server>/<webapp>/api/lbs/isochrone/v4.xml

Data (XML) 

<?xml version="1.0" encoding="UTF-8"?>
<isochroneRequestV4>
  <id></id>
  <location>
    <x>-1.557189</x>
    <y>47.217122</y>
  </location>
  <srs></srs>
  <graphName></graphName>
  <profileId></profileId>
  <profileName></profileName>
  <exclusions>
    <exclusion></exclusion>
    <exclusion></exclusion>
    <!--...more "exclusion" elements...-->
  </exclusions>
  <method></method>
  <time>50</time>
  <distance></distance>
  <reverse></reverse>
  <smoothing></smoothing>
  <holes></holes>
  <startDateTime></startDateTime>
  <snapMethod></snapMethod>
  <avoidArea></avoidArea>
  <configName></configName>
</isochroneRequestV4>

Réponse

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

Format XML 

<isochroneResultV4>
   <status>OK</status>
   <id>1</id>
   <location>-1.557189,47.217122</location>
   <srs/>
   <time>50</time>
   <wktGeometry>POLYGON ((-1.556864 47.216487, -1.556864 47.216948, [...]))</wktGeometry>
</isochroneResultV4>

REST (GET)

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/isochrone/v4.json?location=-1.557189,47.217122&method=distance&distance=5000

Requête JSON-P 

http://<server>/<webapp>/api/lbs/isochrone/v4.json?location=-1.557189,47.217122&method=distance&distance=5000&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/isochrone/v4.xml?location=-1.557189,47.217122&method=distance&distance=2000&holes=true

Réponse

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

Format JSON 

{
   "message": null,
   "status": "OK",
   "id": null,
   "location": "-1.557189,47.217122",
   "srs": "epsg:4326",
   "time": null,
   "distance": "5000",
   "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
}

Format JSON-P 

myCallback(
    {
       "message": null,
       "status": "OK",
       "id": null,
       "location": "-1.557189,47.217122",
       "srs": "EPSG:4326",
       "time": null,
       "distance": "5000",
       "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
    }
);

Format XML 

<isochroneResultV4>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV4>

Retours possibles

Cas d’un isochrone/isodistance trouvé (isochroneResultV2/status est OK) 

<isochroneResultV4>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV4>

Cas de method method = distance et distance non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV4>
    <message>distance parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV4>

Cas de method + time non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV4>
    <message>time parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV4>

Cas ou la balise location est manquante (isochroneResult/status est ERROR) 

<isochroneResultV4>
    <message>Location must be not null</message>
    <status>ERROR</status>
</isochroneResultV4>

Cas ou le point de départ est mal renseigné (isochroneResult/status est ERROR) 

<isochroneResultV4>
   <message>Location point must have 2 components separated with a ,</message>
   <status>ERROR</status>
</isochroneResultV4>

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

<serviceResult>
        <message>
                ServiceException: Error in isochrone computation Error in smartrouting Failed to execute calculateConcentricReachableAreas com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect isochrone orign { 52.324230, 48.803256, 0.000000 } failed to connect isochrone orign { 52.324230, 48.803256, 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 isochrone 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

id

Identifiant de l’isochrone

oui

location

Départ (ou arrivée si le reverse est à true). Les coordonnées sont séparées par la caractère ,

non

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

epsg:4326

graphName

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

oui

profileId

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

oui

profileName

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

oui

exclusions

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

oui

method

"time" pour isochrone ou "distance" for isodistance

non

time

time

Temps maximum d’accès, en secondes

oui

distance

Distance maximum d’accès, en mètres

oui

reverse

si true, le location est considéré comme arrivée

oui

false

smoothing

Lissage

oui

false

holes

Afficher les trous dans la zone résultante (la géométrie retournée est plus volumineuse lorsque ce paramètre est à true )

oui

false

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

oui

standard

avoidArea

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

oui

configName

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

oui

En sortie

Itinéraire (isochroneResult)

paramètre type min/max description

id

string

0/1

Identifiant de l’isochrone

location

string

0/1

Départ (ou arrivée si le reverse est à true).

srs

string

0/1

projection

time

string

0/1

Temps maximum d’accès, en secondes

distance

string

0/1

Distance maximum d’accès, en mètres

wktGeometry

string

0/1

Géometrie de l’isochrone, au format wkt

SOAP

WSDL

http://<server>/<webapp>/api/ws/isochroneService?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:isochroneV3>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <id>1</id>
            <location>
               <x>-1.557189</x>
               <y>47.217122</y>
            </location>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <method>distance</method>
            <!--Optional:-->
            <time></time>
            <!--Optional:-->
            <distance>5000</distance>
            <!--Optional:-->
            <reverse></reverse>
            <!--Optional:-->
            <smoothing></smoothing>
            <!--Optional:-->
            <holes></holes>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
            <!--Optional:-->
            <avoidArea></avoidArea>
            <!--Optional:-->
            <configName></configName>
         </request>
      </sch:isochroneV3>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:isochroneV3Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <IsochroneResult>
            <status>OK</status>
            <id>1</id>
            <location>-1.557189,47.217122</location>
            <srs/>
            <distance>5000</distance>
            <wktGeometry>POLYGON ((-1.544603 47.179044, -1.545261 47.179044, [...]))</wktGeometry>
         </IsochroneResult>
      </ns2:isochroneV3Response>
   </soap:Body>
</soap:Envelope>
REST (POST)

Requête

Requête 

http://<server>/<webapp>/api/lbs/isochrone/v3.xml

Data (XML) 

<?xml version="1.0" encoding="UTF-8"?>
<isochroneRequestV3>
  <id></id>
  <location>
    <x>-1.557189</x>
    <y>47.217122</y>
  </location>
  <srs></srs>
  <graphName></graphName>
  <profileId></profileId>
  <profileName></profileName>
  <exclusions>
    <exclusion></exclusion>
    <exclusion></exclusion>
    <!--...more "exclusion" elements...-->
  </exclusions>
  <method></method>
  <time>50</time>
  <distance></distance>
  <reverse></reverse>
  <smoothing></smoothing>
  <holes></holes>
  <startDateTime></startDateTime>
  <snapMethod></snapMethod>
  <avoidArea></avoidArea>
  <configName></configName>
</isochroneRequestV3>

Réponse

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

Format XML 

<isochroneResultV3>
   <status>OK</status>
   <id>1</id>
   <location>-1.557189,47.217122</location>
   <srs/>
   <time>50</time>
   <wktGeometry>POLYGON ((-1.556864 47.216487, -1.556864 47.216948, [...]))</wktGeometry>
</isochroneResultV3>

REST (GET)

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/isochrone/v3.json?location=-1.557189,47.217122&method=distance&distance=5000

Requête JSON-P 

http://<server>/<webapp>/api/lbs/isochrone/v3.json?location=-1.557189,47.217122&method=distance&distance=5000&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/isochrone/v3.xml?location=-1.557189,47.217122&method=distance&distance=2000&holes=true

Réponse

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

Format JSON 

{
   "message": null,
   "status": "OK",
   "id": null,
   "location": "-1.557189,47.217122",
   "srs": "EPSG:4326",
   "time": null,
   "distance": "5000",
   "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
}

Format JSON-P 

myCallback(
    {
       "message": null,
       "status": "OK",
       "id": null,
       "location": "-1.557189,47.217122",
       "srs": "EPSG:4326",
       "time": null,
       "distance": "5000",
       "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
    }
);

Format XML 

<isochroneResultV3>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV3>

Retours possibles

Cas d’un isochrone/isodistance trouvé (isochroneResultV2/status est OK) 

<isochroneResultV3>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV3>

Cas de method method = distance et distance non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV3>
    <message>distance parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV3>

Cas de method + time non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV3>
    <message>time parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV3>

Cas ou la balise location est manquante (isochroneResult/status est ERROR) 

<isochroneResultV3>
    <message>Location must be not null</message>
    <status>ERROR</status>
</isochroneResultV3>

Cas ou le point de départ est mal renseigné (isochroneResult/status est ERROR) 

<isochroneResultV3>
   <message>Location point must have 2 components separated with a ,</message>
   <status>ERROR</status>
</isochroneResultV3>

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

<serviceResult>
        <message>
                ServiceException: Error in isochrone computation Error in smartrouting Failed to execute calculateConcentricReachableAreas com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect isochrone orign { 52.324230, 48.803256, 0.000000 } failed to connect isochrone orign { 52.324230, 48.803256, 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 isochrone 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

id

Identifiant de l’isochrone

oui

location

Départ (ou arrivée si le reverse est à true). Les coordonnées sont séparées par la caractère ,

non

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

epsg:4326

graphName

Nom du graphe à utiliser

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

method

"time" pour isochrone ou "distance" for isodistance

non

time

time

Temps maximum d’accès, en secondes

oui

distance

Distance maximum d’accès, en mètres

oui

reverse

si true, le location est considéré comme arrivée

oui

false

smoothing

Lissage

oui

false

holes

Afficher les trous dans la zone résultante (la géométrie retournée est plus volumineuse lorsque ce paramètre est à true )

oui

false

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

Itinéraire (isochroneResult)

paramètre type min/max description

id

string

0/1

Identifiant de l’isochrone

location

string

0/1

Départ (ou arrivée si le reverse est à true).

srs

string

0/1

projection

time

string

0/1

Temps maximum d’accès, en secondes

distance

string

0/1

Distance maximum d’accès, en mètres

wktGeometry

string

0/1

Géometrie de l’isochrone, au format wkt

SOAP

WSDL

http://<server>/<webapp>/api/ws/isochroneService?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:isochroneV2>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <id>1</id>
            <location>
               <x>-1.557189</x>
               <y>47.217122</y>
            </location>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion></exclusion>
            </exclusions>
            <!--Optional:-->
            <method>distance</method>
            <!--Optional:-->
            <time></time>
            <!--Optional:-->
            <distance>5000</distance>
            <!--Optional:-->
            <reverse></reverse>
            <!--Optional:-->
            <smoothing></smoothing>
            <!--Optional:-->
            <holes></holes>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
         </request>
      </sch:isochroneV2>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:isochroneV2Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <IsochroneResult>
            <status>OK</status>
            <id/>
            <location>-1.557189,47.217122</location>
            <srs/>
            <distance>5000</distance>
            <wktGeometry>POLYGON ((-1.544603 47.179044, -1.545261 47.179044, [...]))</wktGeometry>
         </IsochroneResult>
      </ns2:isochroneV2Response>
   </soap:Body>
</soap:Envelope>
REST (POST)

Requête

Requête 

http://<server>/<webapp>/api/lbs/isochrone/v2.xml

Data (XML) 

<?xml version="1.0" encoding="UTF-8"?>
<isochroneRequestV2>
  <id></id>
  <location>
    <x>-1.557189</x>
    <y>47.217122</y>
  </location>
  <srs></srs>
  <graphName></graphName>
  <profileId></profileId>
  <profileName></profileName>
  <exclusions>
    <exclusion></exclusion>
    <exclusion></exclusion>
    <!--...more "exclusion" elements...-->
  </exclusions>
  <method></method>
  <time>50</time>
  <distance></distance>
  <reverse></reverse>
  <smoothing></smoothing>
  <holes></holes>
  <startDateTime></startDateTime>
  <snapMethod></snapMethod>
</isochroneRequestV2>

Réponse

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

Format XML 

<isochroneResultV2>
   <status>OK</status>
   <id>1</id>
   <location>-1.557189,47.217122</location>
   <srs/>
   <time>50</time>
   <wktGeometry>POLYGON ((-1.556864 47.216487, -1.556864 47.216948, [...]))</wktGeometry>
</isochroneResultV2>

REST (GET)

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/isochrone/v2.json?location=-1.557189,47.217122&method=distance&distance=5000

Requête JSON-P 

http://<server>/<webapp>/api/lbs/isochrone/v2.json?location=-1.557189,47.217122&method=distance&distance=5000&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/isochrone/v2.xml?location=-1.557189,47.217122&method=distance&distance=2000&holes=true

Réponse

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

Format JSON 

{
   "message": null,
   "status": "OK",
   "id": null,
   "location": "-1.557189,47.217122",
   "srs": "EPSG:4326",
   "time": null,
   "distance": "5000",
   "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
}

Format JSON-P 

myCallback(
    {
       "message": null,
       "status": "OK",
       "id": null,
       "location": "-1.557189,47.217122",
       "srs": "EPSG:4326",
       "time": null,
       "distance": "5000",
       "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
    }
);

Format XML 

<isochroneResultV2>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV2>

Retours possibles

Cas d’un isochrone/isodistance trouvé (isochroneResultV2/status est OK) 

<isochroneResultV2>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResultV2>

Cas de method method = distance et distance non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV2>
    <message>distance parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV2>

Cas de method + time non renseigné (isochroneResult/status est ERROR) 

<isochroneResultV2>
    <message>time parameter must not be null or 0 !</message>
    <status>ERROR</status>
</isochroneResultV2>

Cas ou la balise location est manquante (isochroneResult/status est ERROR) 

<isochroneResultV2>
    <message>Location must be not null</message>
    <status>ERROR</status>
</isochroneResultV2>

Cas ou le point de départ est mal renseigné (isochroneResult/status est ERROR) 

<isochroneResultV2>
   <message>Location point must have 2 components separated with a ,</message>
   <status>ERROR</status>
</isochroneResultV2>

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

<serviceResult>
        <message>
                ServiceException: Error in isochrone computation Error in smartrouting Failed to execute calculateConcentricReachableAreas com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect isochrone orign { 52.324230, 48.803256, 0.000000 } failed to connect isochrone orign { 52.324230, 48.803256, 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 isochrone 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

id

Identifiant de l’isochrone

oui

location

Départ (ou arrivée si le reverse est à true). Les coordonnées sont séparées par la caractère ,

non

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

epsg:4326

graphName

Nom du graphe à utiliser

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

method

"time" pour isochrone ou "distance" for isodistance

non

time

time

Temps maximum d’accès, en secondes

oui

distance

Distance maximum d’accès, en mètres

oui

reverse

si true, le location est considéré comme arrivée

oui

false

smoothing

Lissage

oui

false

holes

Afficher les trous dans la zone résultante (la géométrie retournée est plus volumineuse lorsque ce paramètre est à true )

oui

false

En sortie

Itinéraire (isochroneResult)

paramètre type min/max description

id

string

0/1

Identifiant de l’isochrone

location

string

0/1

Départ (ou arrivée si le reverse est à true).

srs

string

0/1

projection

time

string

0/1

Temps maximum d’accès, en secondes

distance

string

0/1

Distance maximum d’accès, en mètres

wktGeometry

string

0/1

Géometrie de l’isochrone, au format wkt

SOAP

WSDL

http://<server>/<webapp>/api/ws/isochroneService?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:isochrone>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <id/>
            <location>
               <x>-1.557189</x>
               <y>47.217122</y>
            </location>
            <!--Optional:-->
            <srs/>
            <!--Optional:-->
            <graphName/>
            <!--Optional:-->
            <profileId/>
            <!--Optional:-->
            <profileName/>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusion/>
            </exclusions>
            <!--Optional:-->
            <method>distance</method>
            <!--Optional:-->
            <distance>5000</distance>
            <!--Optional:-->
            <reverse/>
            <!--Optional:-->
            <smoothing/>
            <!--Optional:-->
            <holes/>
         </request>
      </sch:isochrone>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:isochroneResponse xmlns:ns2="http://geoconcept.com/gc/schemas">
         <IsochroneResult>
            <status>OK</status>
            <id/>
            <location>-1.557189,47.217122</location>
            <srs/>
            <distance>5000</distance>
            <wktGeometry>POLYGON ((-1.544603 47.179044, -1.545261 47.179044, [...]))</wktGeometry>
         </IsochroneResult>
      </ns2:isochroneResponse>
   </soap:Body>
</soap:Envelope>
REST (POST)

Requête

Requête 

http://<server>/<webapp>/api/lbs/isochrone.xml

Data (XML) 

<?xml version="1.0" encoding="UTF-8"?>
<isochroneRequest>
  <id>1</id>
  <location>
    <x>-1.557189</x>
    <y>47.217122</y>
  </location>
  <srs></srs>
  <graphName></graphName>
  <profileId></profileId>
  <profileName></profileName>
  <exclusions>
    <exclusion></exclusion>
    <exclusion></exclusion>
    <!--...more "exclusion" elements...-->
  </exclusions>
  <method></method>
  <time>50</time>
  <distance></distance>
  <reverse></reverse>
  <smoothing></smoothing>
  <holes></holes>
</isochroneRequest>

Réponse

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

Format XML 

<isochroneResult>
   <status>OK</status>
   <id>1</id>
   <location>-1.557189,47.217122</location>
   <srs/>
   <time>50</time>
   <wktGeometry>POLYGON ((-1.556864 47.216487, -1.556864 47.216948, ...))</wktGeometry>
</isochroneResult>

REST (GET)

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/isochrone.json?location=-1.557189,47.217122&method=distance&distance=5000

Requête JSON-P 

http://<server>/<webapp>/api/lbs/isochrone.json?location=-1.557189,47.217122&method=distance&distance=5000&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/isochrone.xml??location=-1.557189,47.217122&method=distance&distance=2000&holes=true

Réponse

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

Format JSON 

{
   "message": null,
   "status": "OK",
   "id": null,
   "location": "-1.557189,47.217122",
   "srs": "EPSG:4326",
   "time": null,
   "distance": "5000",
   "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
}

Format JSON-P 

myCallback(
    {
       "message": null,
       "status": "OK",
       "id": null,
       "location": "-1.557189,47.217122",
       "srs": "EPSG:4326",
       "time": null,
       "distance": "5000",
       "wktGeometry": "POLYGON ((-1.545312 47.178178, -1.545312 47.180418, ...))"
    }
);

Format XML 

<isochroneResult>
   <status>OK</status>
   <location>-1.557189,47.217122</location>
   <srs>EPSG:4326</srs>
   <distance>2000</distance>
   <wktGeometry>POLYGON ((-1.546926 47.202309, -1.546926 47.202752, ...))</wktGeometry>
</isochroneResult>

Retours possibles

Cas d’un isochrone/isodistance trouvé (isochroneResult/status est OK) 

<isochroneResult>
        <status>OK</status>
        <location>2.32423,48.803256</location>
        <srs>epsg:4326</srs>
        <distance>2000,000000</distance>
        <wktGeometry>
                POLYGON ((2.317525987661223 48.786657549807174, 2.317525987661223 48.787103131779986, ...))
        </wktGeometry>
</isochroneResult>

Cas ou le point de départ est vide (isochroneResult/status est ERROR) 

<isochroneResult>
    <message>Location must be not null</message>
    <status>ERROR</status>
</isochroneResult>

Cas ou le point de départ est mal renseigné (isochroneResult/status est ERROR) 

<isochroneResult>
   <message>Location point must have 2 components separated with a ,</message>
   <status>ERROR</status>
</isochroneResult>

Cas d’un mauvais typage 

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

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

<serviceResult>
        <message>
                ServiceException: Error in isochrone computation Error in smartrouting Failed to execute calculateConcentricReachableAreas com.geoconcept.smartrouting.SmartRoutingNativeException: failed to connect isochrone orign { 52.324230, 48.803256, 0.000000 } failed to connect isochrone orign { 52.324230, 48.803256, 0.000000 }
        </message>
        <status>ERROR</status>
</serviceResult>

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

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

FAQ

1. Est-il possible de prioriser le temps de parcours ou la distance ?
2. Peut-on utiliser des alias à défaut des noms de fichiers .siti pour appeler une datasource ?
3. Comment utiliser les statistiques routières ?
4. Comment faire un calcul d’isochrone/isodistance sans péage?
5. Qu’est-ce que les Speed Patterns ? Comment les utiliser ?
6. Comment utiliser les attributs poids lourds ?

1.

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

Oui, en changeant la méthode method "time" pour isochrone ou "distance" for isodistance

2.

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

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

3.

Comment utiliser les statistiques routières ?

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

4.

Comment faire un calcul d’isochrone/isodistance 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:isochroneV2>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <id>1</id>
            <location>
               <x>-1.557189</x>
               <y>47.217122</y>
            </location>
            <!--Optional:-->
            <srs></srs>
            <!--Optional:-->
            <graphName></graphName>
            <!--Optional:-->
            <profileId></profileId>
            <!--Optional:-->
            <profileName></profileName>
            <!--Optional:-->
            <exclusions>
               <!--Zero or more repetitions:-->
               <exclusions>Toll</exclusions>
            </exclusions>
            <!--Optional:-->
            <method>distance</method>
            <!--Optional:-->
            <time></time>
            <!--Optional:-->
            <distance>5000</distance>
            <!--Optional:-->
            <reverse></reverse>
            <!--Optional:-->
            <smoothing></smoothing>
            <!--Optional:-->
            <holes></holes>
            <!--Optional:-->
            <startDateTime></startDateTime>
            <!--Optional:-->
            <snapMethod></snapMethod>
         </request>
      </sch:isochroneV2>
   </soapenv:Body>
</soapenv:Envelope>

5.

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

6.

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