IGN

Géoservices IGN

Documentation du service du calcul d'itinéraires

Dernière mise à jour : 3 Février 2020

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 du réseau routier et des tables de non communications de la base de données IGN BD TOPO®.

Deux types de ressources sont proposés pour effectuer le calcul à utiliser au choix selon les besoins :

Voir ci-dessous comment exprimer le choix de de la ressource dans les requêtes.

Interagir avec le service de calcul d’itinéraires

On peut interagir avec la version d’évaluation du service du calcul d’itinéraire via une API REST accessible à l’adresse suivante : https://itineraire.ign.fr/simple/1.0.0/route

NB : il s’agit d’une adresse de test à ne pas utiliser pour des développements en production

La documentation de cette API au format OpenAPI peut être consultée ici

Les capacités du service (ressources disponibles, paramètres et valeurs autorisées) peuvent aussi être consultées en effectuant la requête suivante : https://itineraire.ign.fr/simple/1.0.0/getcapabilities

Construire une requête

Le tableau suivant liste les paramètres disponibles et indique leur utilité pour construire une requête d’itinéraire. Les détails techniques pour leur implémentation sont donnés dans la documentation OpenAPI du service et les capacités du service. Les paramètres dont le nom est indiqué en gras , sont les paramètres obligatoires.

Paramètre

Signification

Valeur par défaut

ressource 

ce paramètre permet de préciser quelle ressource sera utilisée pour le calcul.

Sans objet

start

Permet de préciser les coordonnées du point de départ

Sans objet

end

Permet de préciser les coordonnées du point d’arrivée

Sans objet

intermediates

Permet de préciser le cas échéant les coordonnées de points de passage précisés dans l’ordre de parcours de l’itinéraire

Sans objet

profile

Permet de préciser le type « véhicule » effectuant le parcours. Actuellement : « car » (voiture) ou « pedestrian » (piéton)

« car »

optimization

Permet de préciser le mode de calcul de l’itinéraire : « shortest » (au plus court) ou « fastest » (au plus rapide)

« fastest »

getSteps

Permet de préciser si la réponse du service doit comporter ou non le détail de l’itinéraire tronçon par tronçon. Si ce n’est pas le cas l’itinéraire est retourné avec une géométrie globale simplifiée et ses caractéristiques générales (durée et distance totales)

« true »

waysAttributes

Permet de préciser (lorsque le paramètre « getSteps » vaut « true »), les attributs des tronçons que l’on veut avoir dans la réponse. La liste des attributs disponibles varie selon la ressource choisie. Elle est disponible dans les capacités du service.

Sans objet

geometryFormat

Permet de préciser le format dans lequel la géométrie de l’itinéraire sera retournée : « polyline » (format compressé google) ou « geojson » (format standard)

« geojson »

crs

Permet de préciser le système de coordonnées dans lequel les géométries sont exprimées (dans les requêtes comme les réponses) : « EPSG:4326 » (longitude, latitude) ou « EPSG:2154 » (lambert 93 valable uniquement en France métropolitaine )

« EPSG:4326 »

timeUnit

Permet de préciser l’unité dans laquelle les durées sont exprimées dans la réponse : « hour », « minute » ou « second »

« minute »

distanceUnit

Permet de préciser l’unité dans laquelle les distances sont exprimées dans la réponse : « meter » ou « kilometer »

« meter »

constraints

Permet d’exprimer des contraintes sur les caractéristiques du réseau routier pour le calcul d’itinéraire.

 

Une contrainte s’exprime ainsi :

la caractéristique (« key ») du réseau routier sur laquelle elle s’applique.

son type : actuellement, un seul : « banned » (exclusion)

un opérateur de comparaison

Une valeur permettant d’exprimer la contrainte associée à la caractéristique

 

Exemple : exclure d’emprunter les tronçons de route passant par des tunnels :

« key » = « wayType »

« type » = « banned »

Opérateur de comparaison = « = »

Valeur = « tunnel »

 

L’éventail des contraintes possibles varie selon les ressources. Il est indiqué dans les capacités du service.

Aucune contrainte

Exemple de requête en HTTP GET :

La requête suivante effectue un calcul d’itinéraire en utilisant la ressource « bduni-idf-pgrouting », pour un profil voiture, selon le critère d’optimisation plus rapide et en appliquant la contrainte d’exclure les tunnels et demande à ce que la géométrie soit retournée au format « polyline » et à ce que l’attribut « cleabs » (identifiant du tronçon routier BDTOPO) soit présent dans la réponse.

https://itineraire.ign.fr/simple/1.0.0/route?resource=bduni-idf-pgr&profile=car&optimization=fastest&start=2.3017215728759766,48.81876120037664&end=2.324380874633789,48.8287067867079&intermediates=&constraints={“constraintType”:”banned”,”key”:”wayType”,”operator”:”=”,”value”:”tunnel”}&geometryFormat=polyline&getSteps=true&getBbox=true&waysAttributes=cleabs

Méthode POST

Les requêtes peuvent aussi être implémentées en méthode POST. Exemple…

Réponse du service

Si les paramètres le permettent, le service retourne un itinéraire au format JSON comprenant les informations suivantes (selon ce qui a été demandé dans la requête) :

Exemple de réponse

La réponse du service à la requête précédente est la suivante

{
  "resource": "bduni-idf-pgr",
  "start": "2.301943,48.818711",
  "end": "2.324367,48.82869",
  "profile": "car",
  "optimization": "fastest",
  "geometry": "}{}hHcr`MbBp@qDnJWN?}UcA{O}A{Mn@{JKcAmNoT_KsZDmBKo@e@q@zDiYj@gBp@{E}ToDwFuAUk@Y`@D\\VLCT{ClL",
  "crs": "EPSG:4326",
  "distanceUnit": "meter",
  "timeUnit": "minute",
  "bbox": [
    2.299774,
    48.818208,
    2.327021,
    48.82869
  ],
  "distance": 3165.2,
  "duration": 4.1066666666666665,
  "constraints": [
    {
      "type": "banned",
      "key": "wayType",
      "operator": "=",
      "value": "tunnel"
    }
  ],
  "portions": [
    {
      "start": "2.301943,48.818711",
      "end": "2.324367,48.82869",
      "distance": 3165.2,
      "duration": 4.1066666666666665,
      "bbox": [
        2.299774,
        48.818208,
        2.327021,
        48.82869
      ],
      "steps": [
        {
          "geometry": "}{}hHcr`M@?`Bp@??",
          "attributes": {
            "nom_1_gauche": "R RENAULT",
            "nom_1_droite": "R RENAULT",
            "cpx_numero": "",
            "cpx_toponyme_route_nommee": "",
            "cleabs": "TRONROUT0000000000535968"
          },
          "distance": 53.2,
          "duration": 0.10666666666666667
        },
[]
        {
          "geometry": "gv_iHomeM@HBHBFFBD@D?",
          "attributes": {
            "nom_1_gauche": "PL VICTOR ET HELENE BASCH",
            "nom_1_droite": "PL VICTOR ET HELENE BASCH",
            "cpx_numero": "",
            "cpx_toponyme_route_nommee": "",
            "cleabs": "TRONROUT0000000000205915"
          },
          "distance": 23.4,
          "duration": 0.056666666666666664
        },
        {
          "geometry": "iu_iHmleMCTGZMd@W`A[jAa@zA]pAQn@",
          "attributes": {
            "nom_1_gauche": "R D'ALESIA",
            "nom_1_droite": "R D'ALESIA",
            "cpx_numero": "",
            "cpx_toponyme_route_nommee": "",
            "cleabs": "TRONROUT0000000000205919"
          },
          "distance": 188.7,
          "duration": 0.2833333333333333
        }
      ]
    }
  ]
}

Caractéristiques des règles de calcul pour les itinéraires.

Les données de navigation sont issues de la BDTOPO (réseau routier et table de non communications). Les vitesses moyennes utilisées pour le calcul sont établies à partir des attributs selon les même règles que pour l’ancien service, définies ici : https://geoservices.ign.fr/documentation/geoservices/itineraires.html#vitesse-voiture