IGN

Géoservices IGN

Service de calcul d'itinéraires

Dernière mise à jour : 12 Juin 2017

Table des matières

Généralités

Le service de calcul d’itinéraires de la plateforme Géoportail permet d’obtenir un itinéraire entre deux points selon un profil de parcours particulier.

Le calcul peut être paramétré selon le besoin selon plusieurs options détaillées plus loin dont par exemple :

Les données de référence utilisées au sein du service de calcul d’itinéraires du Géoportail proviennent de la base de données IGN BD TOPO®.

Connexion au service de calcul d’itinéraire du Géoportail

Le service de calcul d’itinéraires du Géoportail est accessible selon deux protocoles : une API REST ou le standard OGC OpenLS “Route Service”.

Selon le protocole utilisé, le service est acessible aux adresses suivantes :

Protocole URL d’accès
API REST http(s)://wxs.ign.fr/CLEF/itineraire/rest/route.{format}
OpenLS http(s)://wxs.ign.fr/CLEF/itineraire/ols

Pour l’API REST, les valeurs possibles pour le paramètre {format} sont xml et json et déterminent le format utilisé pour la réponse.

Le paramètre CLEF doit être remplacé par votre clef d’accès à la plateforme Géoportail

Chaque type de véhicule est associé à une ressource à laquelle la clef d’accès doit être liée. La liste des ressources est disponible ici.

Le service REST de calcul d’itinéraires

Construire une requête

Paramètres

Les paramètres disponibles pour le calcul d’itinéraires sont les suivants:

Paramètre Valeurs Optionel Valeur par défaut
origin Longitude, latitude du point de départ (ou X,Y si le SRS est spécifié) non  
destination Longitude, latitude du point d’arrivée (ou X, Y si le SRS est spécifié) non  
waypoints Etapes intermédiaires au format longitude1, latitude1 ; longitude2, latitude2 ; … ; longitudeN, latitudeN oui  
method Chemin le plus court (distance) ou le plus rapide (time) oui time
srs Projection des coordonnées en entrée (code EPSG). Les coordonnées en sortie sont toujours exprimées en EPSG:4326 (longitude,latitude) oui EPSG:4326
exclusions Liste des règles de restrictions à utiliser, séparés pas le caractère “,”” ou “;”” (les exclusions possibles sont : Toll, Tunnel) oui aucune exclusion
graphName Nom du graphe à utiliser (“Pieton” ou “Voiture”) oui Voiture

Exemples

itinéraire piéton de A à B :
http://wxs.ign.fr/CLEF/itineraire/rest/route.json?origin=1.4296871423721542,48.9491452350537&destination=1.8691402673721758,48.80463579895799&&method=DISTANCE&graphName=Pieton
itinéraire voiture avec étapes et exclusion des ponts, tunnels et routes à péage :
http://wxs.ign.fr/CLEF/itineraire/rest/route.json?origin=-0.6756162643432286,45.8786949940647&destination=-0.34465312957759703,46.015243021856286&waypoints=-0.7531642913817732,46.10463169689116;-0.5072164535521702,46.07145125630617&method=DISTANCE&graphName=Voiture&exclusions=Toll;Tunnel

Réponse du service

Le retour comporte les éléments suivants :

Itinéraire (routeResult)

Paramètre Type Nombre de valeurs Description
distance string 0/1 Distance totale de l’itinéraire, formatée : - xx.xx Km - xx m (si distance inférieure à 1 km)
duration string 0/1 Durée totale de l’itinéraire, formatée : - HH:mm:ss (HH=heures, mm=minutes, ss=secondes)
bounds string 0/1 Emprise (BoundingBox) de la géométrie de l’itinéraire.
geometryWkt string 0/1 Géométrie de l’itinéraire au format WKT.
simplifiedWkt string 0/1 Géométrie simplifiée de l’itinéraire au format WKT.
leg (ou legs en JSON) subRoute (ou array en JSON) 0/illimité Liste des portions d’itinéraires.

Portion d’itinéraire (subRoute)

Paramètre Type Nombre de valeurs Description
distance string 0/1 Distance totale de l’itinéraire, formatée : - xx.xx Km - xx m (si distance inférieure à 1 km)
duration string 0/1 Durée totale de l’itinéraire, formatée : - HH:mm:ss (HH=heures, mm=minutes, ss=secondes)
step (ou steps en JSON) string (ou array en JSON) 0/illimité Liste des segments composants la portion d’itinéraire.

Les messages d’erreur

Les messages d’erreur sont les suivants :

Paramètre Valeur Explication
Routeresult/status OK Le calcul d’itinéraires s’est bien effectué
  ERROR / Origin and destination must be not null Oubli de spécification du point de départ ou d’arrivée
  ERROR / NumberFormatException: For input string: “AAA” Mauvais typage
  ERROR / ServiceException: Error in route computation.
Error in smartrouting Failed to execute calculateRoute com.geoconcept.smartrouting.SmartRouting NativeException: failed to connect waypoint { 243966.000000, 48.847410, 0.000000 } failed to connect waypoint { 243966.000000, 48.847410, 0.000000 }
Erreur d’accrochage au graphe
  ERROR / ServiceException: Error in route computation.
Error in smartrouting datasource is null
Problème avec le graphe : fichier absent, mauvais chemin, etc…

Le service OpenLS de calcul d’itinéraires

Construire une requête

Le service de calcul d’itinéraires est aussi proposé selon le standard OpenLS.

Exemples

Méthode POST
POST http://wxs.ign.fr/CLEF/itineraire/ols
<?xml version="1.0" encoding="UTF-8"?>
<xls:XLS xmlns:xls="http://www.opengis.net/xls" xmlns:gml="http://www.opengis.net/gml"
xmlns:xlsext="http://www.opengis.net/xlsext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/xls http://wxs.ign.fr/schemas/XLS.xsd
http://www.opengis.net/xlsext http://wxs.ign.fr/schemas/XLSEXT.xsd" version="1.2" xls:lang="fr">
<xls:RequestHeader />
<xls:Request maximumResponses="10" methodName="RouteRequest"
requestID="uid1423131241747_360" version="1.2">
<xls:DetermineRouteRequest distanceUnit="M">
<xls:RoutePlan>
<xlsext:GraphName>Pieton</xlsext:GraphName>
<xls:RoutePreference>Shortest</xls:RoutePreference>
<xls:WayPointList>
<xls:StartPoint>
<xls:Position>
<gml:Point>
<gml:pos>45.11933583664174 5.584879517555277</gml:pos>
</gml:Point>
</xls:Position>
</xls:StartPoint>
<xls:EndPoint>
<xls:Position>
<gml:Point>
<gml:pos>45.12757207149061 5.52187979221347</gml:pos>
</gml:Point>
</xls:Position>
</xls:EndPoint>
</xls:WayPointList>
</xls:RoutePlan>
<xls:RouteInstructionsRequest provideGeometry="true" />
</xls:DetermineRouteRequest>
</xls:Request>
</xls:XLS>
Méthode GET

Le corps de la requête POST peut-être encodé et ajouté à l’URL pour utiliser la méthode GET :

http://wxs.ign.fr/CLEF/itineraire/ols?qxml=%3Cxls%3AXLS%20xmlns%3Axls%3D%22http%3A%2F%2Fwww.opengis.net%2Fxls%22%20xmlns%3Agml%3D%22http%3A%2F%2Fwww.opengis.net%2Fgml%22%20xmlns%3Axlsext%3D%22http%3A%2F%2Fwww.opengis.net%2Fxlsext%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fxls%20http%3A%2F%2Fwxs.ign.fr%2Fschemas%2FXLS.xsd%20http%3A%2F%2Fwww.opengis.net%2Fxlsext%20http%3A%2F%2Fwxs.ign.fr%2Fschemas%2FXLSEXT.xsd%22%20version%3D%221.2%22%20xls%3Alang%3D%22fr%22%3E%3Cxls%3ARequestHeader%20%2F%3E%3Cxls%3ARequest%20maximumResponses%3D%2210%22%20methodName%3D%22RouteRequest%22%20requestID%3D%22uid1423131241747_360%22%20version%3D%221.2%22%3E%3Cxls%3ADetermineRouteRequest%20distanceUnit%3D%22M%22%3E%3Cxls%3ARoutePlan%3E%3Cxlsext%3AGraphName%3EPieton%3C%2Fxlsext%3AGraphName%3E%3Cxls%3ARoutePreference%3EFastest%3C%2Fxls%3ARoutePreference%3E%3Cxls%3AWayPointList%3E%3Cxls%3AStartPoint%3E%3Cxls%3APosition%3E%3Cgml%3APoint%3E%3Cgml%3Apos%3E45.11933583664174%205.584879517555277%3C%2Fgml%3Apos%3E%3C%2Fgml%3APoint%3E%3C%2Fxls%3APosition%3E%3C%2Fxls%3AStartPoint%3E%3Cxls%3AEndPoint%3E%3Cxls%3APosition%3E%3Cgml%3APoint%3E%3Cgml%3Apos%3E45.12757207149061%205.52187979221347%3C%2Fgml%3Apos%3E%3C%2Fgml%3APoint%3E%3C%2Fxls%3APosition%3E%3C%2Fxls%3AEndPoint%3E%3C%2Fxls%3AWayPointList%3E%3C%2Fxls%3ARoutePlan%3E%3Cxls%3ARouteInstructionsRequest%20provideGeometry%3D%22true%22%20%2F%3E%3C%2Fxls%3ADetermineRouteRequest%3E%3C%2Fxls%3ARequest%3E%3C%2Fxls%3AXLS%3E

NB : la balise xlsext:GraphName est un ajout à la norme OpenLS et permet de spécifier le véhicule utilisé
(Piéton ou Voiture). Si elle n’est pas précisée, c’est la valeur Voiture qui sera utilisée.

Les données utilisées

Le graphe est dérivé de la BD TOPO de l’IGN, apparié sur la BD CARTO pour certains éléments.
Il est disponible sur la France entière, Départements et Régions d’Outre-Mer inclus.
Au 1er juin 2017, il est basé sur l’édition 17.1 du printemps 2017

Vitesse voiture

Le graphe Voiture est compilé avec les paramètres suivants :
Pour les véhicules automobiles, les calculs sont basés sur les champs NATURE et IMPORTANCE de la BD TOPO® comme suit :

Hors zone urbaine BD CARTO :

En zone urbaine BD CARTO :

Vitesse piéton

Pour les piétons, les calculs sont basés sur les critères suivants :

Erreurs possibles liées aux données

La collecte des sens de circulation ne fait pas partie de consignes de saisie de la BDUni. Historiquement, un grand nombre de sens de circulation sont disponibles puisqu’ils ont été conservés de la BD Géoroute®. Pour leurs propres besoins, les collecteurs ont pris l’habitude d’entretenir ceux existants lors de la cueillette sur le terrain. En outre, certains partenaires intéressés par cette information nous la font remonter dans le cadre d’une convention.
De ce fait, en termes de navigabilité automobile, le service ne remplace pas un système de guidage embarqué avec indication des directions. Globalement le calcul résultant reste acceptable et donne au moins une bonne approximation du trajet final, ou assurer un calcul prévisionnel de trajet en tant qu’aide pour une étude plus approfondie basée sur ce résultat.

Certaines des erreurs sont détaillées ci-après :

Erreur de codage des sens sur les bretelles d’accès

err_bretelles1 err_bretelles2

Mauvais codage des sens sur une bretelle dans la BDUni

Un premier cas provient du mauvais codage d’un sens unique sur une bretelle. Ces cas sont rares mais sont pénalisants, d’autant plus que :

i. localement le résultat fait clairement apparaître l’erreur,
ii. cela peut induire de grosses différences sur le calcul global (raccrochement à la sortie suivante de l’autoroute)

Mauvais codage d’un pont

Normalement, les ponts ne sont pas découpés par les arcs qui passent en dessous. Il n’y a donc pas de connexion. Cependant, il arrive que certains soient découpés. Il y a alors connexion et il est possible de descendre de l’autoroute sur la route du dessous ou faire demi-tour sans passer par une bretelle, du moins au sens de la BD car dans la réalité, c’est plus compliqué.

err_pont1 err_pont2

Un pont mal codé (découpé par la route du dessous) peut induire des connexions avec la route du dessous.

Itinéraire démarrant ou finissant sur un pont, une autoroute ou un tunnel

Il est actuellement impossible de projeter les points sur les ponts, autoroutes ou tunnels, par conséquent aucun itinéraire ne peux commencer ou finir sur ces parties du trajet.

Cas des carrefours en baïonnettes

err_carr1 err_carr2
Franchissement impossible Bon codage et mauvais codage

Lorsque deux rues arrivent presque en face l’une de l’autre la BDUni conserve le décalage (en forme de baïonnette). Or lorsque le décrochement est faible (quelques mètres), il est possible de prendre la rue « en face » et l’automobiliste a l’impression « d’aller tout droit ». Ceci ne porte pas à conséquence sur le calcul sauf lorsque la rue qu’on croise est à sens unique. Dans ce cas, la BDUni reporte le sens unique sur la petite portion du tronçon de la baïonnette, ce qui ne permet plus la communication.

Mauvais codage d’un rond-point

Certains ronds-points de la BDUni tournent dans le mauvais sens.
Si ce type d’erreur n’a que peu d’impact sur le trajet final, il est gênant visuellement.
err_rpt

Rond-point tournant à l’envers dans la BDUni

Cas des demi-tours

La BDuni ne gère pas les demi-tours.
On ne peut donc pas dire sur un carrefour si on a le droit ou non de passer et les sens de circulation n’y peuvent rien.
err_dmt

Peut-on vraiment faire demi-tour sur ce carrefour ?

Accessibilité piéton

L’IGN ne peut pas garantir que l’ensemble des routes empruntées par un calcul d’itinéraire piéton comportent un trottoir et recommande que les développeurs incluent des messages d’avertissement à cet effet. La navigation piéton exclut cependant les voies classées comme autoroutes.

Point sur les vitesses

Les vitesses utilisées sont estimées à partir des différents attributs et le cas échéant en croisant avec les zones urbaines. Même si ce ne sont pas les vitesses terrains, l’approximation reste réaliste ainsi que le chemin renvoyé.
Globalement le calcul résultant reste acceptable et donne au moins une bonne approximation du trajet final.