Documentation du service du calcul d'itinéraires
- 1. Généralités
- 2. Interagir avec le service de calcul d’itinéraires
- 3. Construire une requête
- 4. Réponse du service
- 5. Caractéristiques des règles de calcul pour les itinéraires
Table des matières
Titre
1. 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 :
- la méthode de calcul : chemin le plus court ou le plus rapide
- le type de véhicule : piéton ou voiture
- l’expression de contraintes d’exclusion à prendre en compte pour le calcul de l’itinéraire
- l’ajout d’étapes intermédiaires.
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® (voir le descriptif de contenu).
Deux types de ressources sont proposés pour effectuer le calcul à utiliser au choix selon les besoins :
- les ressources de type « OSRM » : les calculs sont effectués avec le moteur « OSRM » : il permet des performances de calcul élevées mais présente un choix limité dans le paramétrage des requêtes notamment pour les l’expression des contraintes
- les ressources de type « PGR » : les calculs sont effectués avec le moteur « PG routing » : il permet d’exprimer un large choix de contraintes dans les requêtes mais présente des performances de calcul moyennes
Voir ci-dessous comment exprimer le choix de la ressource dans les requêtes.
Titre
2. Interagir avec le service de calcul d’itinéraires
Les ressources proposées (itinéraires piéton et voiture) sont délivrées par le service accessible sur les URLs (protocoles API REST ) : https://wxs.ign.fr/calcul/geoportail/itineraire/rest/1.0.0/route?
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://wxs.ign.fr/geoportail/itineraire/rest/1.0.0/getCapabilities
Titre
3. 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 |
---|---|---|
resource |
ce paramètre permet de préciser quelle ressource sera utilisée pour le calcul: - la valeur "bdtopo-osrm" déclenchera l'utilisation du moteur "OSRM" (performances élevées et choix limité dans les options possibles de 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 « bdtopo-pgr », 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 :
(Et voici une requête utilisant la ressource « bdtopo-osrm » :
).
Méthode POST
Les requêtes peuvent aussi être implémentées en méthode POST.
Titre
4. 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) :
- La ressource utilisée pour le calcul
- La date à laquelle la ressource utilisée pour le calcul a été générée ("resourceVersion")
- Les points de départ, d’arrivée et intermédiaires demandés
- Le profil de véhicule
- La méthode de calcul
- La géométrie globale simplifiée de l’itinéraire
- Le système de coordonnées utilisé pour la géométrie
- Les unités utilisées pour exprimer la distance et la durée
- La distance totale de l’itinéraire
- La durée totale de l’itinéraire
- L’emprise (« bbox ») géographique de l’itinéraire
- Les contraintes éventuelles
- Les « portions » de l’itinéraire (sous parties de l’itinéraire entre un point de départ ou intermédiaire et un point intermédiaire ou final) comprenant le découpage tronçon par tronçon de ces dernières.
Exemple de réponse
La réponse du service à la requête précédente est la suivante
{
"resource": "bdtopo-pgr",
"resourceVersion":"2020-09-28",
"start": "2.301943,48.818711",
"end": "2.324367,48.82869",
"profile": "car",
"optimization": "fastest",
"geometry": "}{}hHcr`M@?`Bp@aA`C{@|Ba@fAQf@CDEDMB@e@?]Ag@?U?c@?gA@kB@kC?gC?WCwASsEScC[cEc@yEi@qDCSE_@E[?S?SBk@Nu@Fs@B]N_DKcAIMKQ]g@]c@_@k@gBmCCSMQYe@{@qA{@wAW_@g@w@c@w@KCOc@CKc@_AGOCe@GOi@_BSk@_AqCo@mBGOa@oAO[Ia@IWs@oBCK?YBK@O@S?OASAGCUEQKSGKIIGGDYD_@Fa@Fi@T}ARuAt@yF^iCR}AJm@BMNa@Pg@DOR{AL}@NaASEUCMC}B_@_BWs@IUEy@KcBWaBY}A[QCs@QgAUi@Me@OYK@KAKCGEEECEAE?GBCDCDAFAH?H@HBHBFFBD@D?CTGZMd@W`A[jAa@zA]pAQn@",
"crs": "EPSG:4326",
"distanceUnit": "meter",
"timeUnit": "minute",
"bbox": [
2.299774,
48.818208,
2.327021,
48.82869
],
"distance": 3171.5,
"duration": 4.118333333333333
"constraints": [
{
"type": "banned",
"key": "wayType",
"operator": "=",
"value": "tunnel"
}
],
"portions": [
{
"start": "2.301943,48.818711",
"end": "2.324367,48.82869",
"distance": 3171.5,
"duration": 4.118333333333333,
"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": 59,
"duration": 0.11833333333333333,
},
{
"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
"instruction":{}
}
]
}
]
}...
Titre
5. Caractéristiques des règles de calcul pour les itinéraires
Les données de navigation sont issues de la BD TOPO® (réseau routier et table de non communications).
Le graphe est dérivé de la BD TOPO®, 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. Il est régulièrement mis à jour, sa date d’actualité est renseignée par le champ « resourceVersion » dans la réponse du service.
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® apparié sur la BD CARTO® comme suit :
Hors zone urbaine BD CARTO® :
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘1’ –> 125 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘2’ –> 115 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘3’ –> 100 km/h
- NATURE = ‘Bac auto’ & IMPORTANCE = ‘2’ –> 5 km/h
- NATURE = ‘Bac auto’ & IMPORTANCE = ‘3’ –> 5 km/h
- NATURE = ‘Bac auto’ & IMPORTANCE = ‘4’ –> 5 km/h
- NATURE = ‘Bac auto’ & IMPORTANCE = ‘5’ –> 5 km/h
- NATURE = ‘Bac piéton’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘1’ –> 45 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘2’ –> 45 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘3’ –> 45 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘4’ –> 45 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘5’ –> 30 km/h
- NATURE = ‘Bretelle’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Chemin’ & IMPORTANCE = ‘5’ –> 1 km/h
- NATURE = ‘Chemin’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Escalier’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Piste cyclable’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Piste cyclable’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘1’ –> 105 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘2’ –> 100 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘3’ –> 95 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘5’ –> 90 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘1’ –> 67 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘2’ –> 67 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘3’ –> 63 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘4’ –> 58 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘5’ –> 35 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘1’ –> 80 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘2’ –> 75 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘3’ –> 70 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘4’ –> 70 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘5’ –> 65 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Route empierrée’ & IMPORTANCE = ‘2’ –> 10 km/h
- NATURE = ‘Route empierrée’ & IMPORTANCE = ‘3’ –> 10 km/h
- NATURE = ‘Route empierrée’ & IMPORTANCE = ‘4’ –> 10 km/h
- NATURE = ‘Route empierrée’ & IMPORTANCE = ‘5’ –> 10 km/h
- NATURE = ‘Route empierrée’ & IMPORTANCE = ‘NC’ –> 0 km/h
- NATURE = ‘Sentier’ & IMPORTANCE = ‘5’ –> 0 km/h
- NATURE = ‘Sentier’ & IMPORTANCE = ‘NC’ –> 0 km/h
En zone urbaine BD CARTO® :
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘1’ –> 100 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘2’ –> 95 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘3’ –> 90 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘1’ –> 95 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘2’ –> 90 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘3’ –> 85 km/h
- NATURE = ‘Quasi-autoroute’ & IMPORTANCE = ‘5’ –> 70 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘1’ –> 50 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘2’ –> 50 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘3’ –> 45 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘4’ –> 40 km/h
- NATURE = ‘Route à 1 chaussée’ & IMPORTANCE = ‘5’ –> 30 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘1’ –> 50 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘2’ –> 50 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘3’ –> 45 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘4’ –> 40 km/h
- NATURE = ‘Route à 2 chaussées’ & IMPORTANCE = ‘5’ –> 35 km/h
Vitesse piéton
Pour les piétons, les calculs sont basés sur les critères suivants :
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘1’ –> 0 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘2’ –> 0 km/h
- NATURE = ‘Autoroute’ & IMPORTANCE = ‘3’ –> 0 km/h
- Autres axes –> 4 km/h