Un itinéraire légal dans un pays peut être illégal de l'autre côté de la frontière à la même heure. C'est le piège discret du transport longue distance européen : la conduite est continue, mais le règlement change à chaque fois que le camion franchit une ligne. Interdictions de circuler le week-end et la nuit, interdictions sectorielles sur les corridors de transit alpins, zones à faibles émissions au cœur des villes, limites de poids et de gabarit pays par pays, restrictions saisonnières — aucune n'apparaît sur une appli de navigation grand public, et chacune porte une sanction bien réelle quand on l'apprend à la dure : une amende, une attente forcée sur le bas-côté, ou un chargement refoulé à la frontière.
Nous en avons parlé comme l'un des cinq problèmes de données routières que rencontre toute flotte transfrontalière européenne. Cet article en est la version détaillée : à quoi ressemblent réellement les données quand vous cessez de maintenir vingt-sept scrapers de règles nationaux pour interroger un seul schéma normalisé — et comment les restrictions d'un corridor reviennent attachées à l'itinéraire, et non comme un devoir à part.
Le besoin n'est pas « chaque règle d'Europe »
Il est plus étroit et plus utile que cela. Un répartiteur ne veut pas une encyclopédie interrogeable de chaque réglementation nationale ; il veut connaître les restrictions et les panneaux sur ce corridor, pour ce camion, avant que le conducteur n'y arrive. C'est une question spatiale, et c'est la forme à laquelle NAPSPAN répond.
Deux types de features normalisés la portent, tous deux interrogés depuis le même endpoint /features que parle le reste de l'API :
truck_restrictions— les limites et interdictions de poids, hauteur, largeur, longueur et d'accès qui s'appliquent aux poids lourds, agrégées depuis les flux nationaux et, dans les pays sans flux de restrictions lisible par machine, depuis les tags de restrictions poids lourds de la communauté OpenStreetMap.signs— la signalisation routière, panneaux à message variable (VMS/DMS) compris : le texte en direct qu'affiche un portique, normalisé pour qu'un panneau allemand et un panneau autrichien se lisent de la même façon dans votre code.
Les deux sont filtrables par jurisdiction et par cadre géographique, et les deux relèvent des groupes de features trucking et infrastructure, que vous pouvez parcourir avec GET /features/groups. Un seul schéma pour une interdiction de nuit allemande et une interdiction sectorielle autrichienne, c'est vérifier un seul endroit au lieu de vingt-sept.
Les restrictions d'un corridor, par cadre géographique
Demandez les restrictions poids lourds dans un cadre géographique, pour un pays. Voici un tronçon en Autriche centrale :
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features?type=truck_restrictions&jurisdiction=AUT&bbox=13.0,47.0,16.5,48.5"
Chaque ligne est un feature dans la même enveloppe : coordonnées, la route sur laquelle il se trouve, et un objet properties. Les clés de limite précises dépendent de la source plutôt que d'un schéma fixe — une restriction issue d'OpenStreetMap porte les tags bruts maxweight / maxheight (plus un maxweight_lbs / maxheight_ft dérivé), tandis qu'un flux national porte ce que cette autorité publie. Pour le routage, ce sont les clés numériques qui comptent — celles contre lesquelles le profil du camion est réellement vérifié :
{
"data": [
{
"id": "OSM-EU-osm-2971775",
"source": "OSM-EU",
"jurisdiction": "AUT",
"feature_type": "truck_restrictions",
"name": "B320",
"latitude": 47.5584364,
"longitude": 14.1699315,
"road_name": "B320",
"is_active": true,
"properties": {
"maxweight": "3.5",
"maxweight_lbs": 7716,
"highway": "primary",
"source_type": "osm",
"osm_type": "way",
"osm_id": 2971775
},
"last_updated": "2026-07-06T21:10:00Z",
"has_details": false
}
],
"total": 17332, "limit": 100, "offset": 0, "has_more": true
}
Les restrictions issues d'OpenStreetMap portent © OpenStreetMap contributors (ODbL) ; là où une autorité nationale publie son propre flux de restrictions, cette source et sa licence sont estampillées à la place.
Lisez les clés qui existent, pas celles qui sonnent canoniques
C'est le détail qui coûte un après-midi, alors le voici mesuré plutôt que décrit. Un nom bien schématique — max_weight_t, max_height_m, max_width_m — se lit exactement comme le champ que vous voulez, et correspond à zéro ligne. Sur les 194 980 truck_restrictions actives du jeu de données européen au 14 août 2026, voici les clés qui portent réellement une limite affichée :
| Dimension | Clés porteuses d'une valeur | Lignes actives |
|---|---|---|
| Poids | maxweight / maxweight_lbs | 73 014 / 72 831 |
| Hauteur | maxheight / maxheight_ft | 68 067 / 40 359 |
| Largeur | maxwidth | 5 188 |
| Longueur | maxlength | 4 847 |
| Charge à l'essieu | maxaxleload | 968 |
Notez les types dans l'exemple ci-dessus : le tag brut est une chaîne dans la forme exacte où la source l'a publié ("3.5", ailleurs "4.2 m"), tandis que le jumeau dérivé _lbs / _ft est un nombre. Analysez, ne castez pas.
Et prévoyez les lignes sans aucun nombre. 144 742 des 194 980 restrictions actives portent une dimension lisible ; le quart restant n'en porte pas. Ce sont des interdictions d'accès, et ce n'est pas une lacune de données — c'est la catégorie dans laquelle tombent une grande part des règles transfrontalières. La couche nationale française est entièrement de ce type : les 3 320 lignes sont des arrêtés portant access_restriction_type: "noEntry", une autorité émettrice et une fenêtre de validité, et pas une seule ne porte un poids ou une hauteur. Une intégration qui ne s'appuie que sur les dimensions laisse tomber la France en totalité.
Remplacez type=truck_restrictions par group=trucking et le même appel se déploie sur treize couches poids lourds à la fois — restrictions et limites de poids, gabarits de ponts, stationnement et aires de repos, stations de pesage et de contrôle, ponts-bascules certifiés, corridors de fret, itinéraires poids lourds, et points de réparation, de lavage et de service —, si bien qu'une seule requête peint tout le tableau poids lourds pour un cadre géographique.
Les panneaux à message variable
Le type signs porte la signalisation routière, et pour les portiques VMS/DMS cela inclut le message actuellement affiché. Interrogez-le de la même façon — par pays, par cadre géographique :
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features?type=signs&jurisdiction=AUT&bbox=9.5,46.4,17.2,49.0"
{
"data": [
{
"id": "AUT-vms-AQ_A09_2_188,127_Q",
"source": "AUT",
"jurisdiction": "AUT",
"feature_type": "signs",
"name": "VMS A9 (AQ_A09_2_188,127_Q)",
"latitude": 47.00692,
"longitude": 15.40754,
"is_active": true,
"properties": {
"road": "A9",
"bearing": 359,
"pictograms": ["8", "24", "24", "111"],
"pictogram_descriptions": ["other", "blankVoid", "other", "other", "other"],
"image_url": "https://maps.asfinag.at/cache/wvz?image=AQ_A09_2_814_F3_F2.B_8"
},
"last_updated": "2026-08-14T11:51:37Z",
"has_details": false
}
],
"total": 17, "limit": 100, "offset": 0, "has_more": false
}
Cette charge utile est choisie à dessein, car elle montre le champ qu'il ne faut pas présumer. message est facultatif, et sur certains flux nationaux il n'est jamais présent. Là où un portique publie des mots, message porte le texte affiché par le panneau, ses lignes jointes par des retours à la ligne, pour que vous n'ayez pas à analyser une charge utile différente par pays — un panneau espagnol arrive sous la forme "MANTENGA\nDISTANCIA DE\nSEGURIDAD". Là où il publie des symboles, comme le fait aujourd'hui la publication VMS DATEX II de l'ASFINAG pour ses dix-sept portiques autrichiens actifs, il n'y a aucune clé message et le contenu se trouve dans pictograms / pictogram_descriptions, image_url pointant vers le panneau rendu. Absent signifie ce portique ne publie pas de texte — pas ce portique est vide.
Mesuré au 14 août 2026 : parmi les lignes signs actives, l'Espagne porte un texte de message sur 1 535 des 2 516, l'Angleterre sur 505 des 1 519, la Finlande sur 445 des 542. L'Autriche, la Lettonie, Berlin et la Pologne n'en portent aucun. La Slovénie est encore le troisième état — elle publie la clé message sur ses 239 panneaux et chaque valeur est une chaîne vide : testez donc la valeur, pas la clé. C'est la même forme signs unique dans les deux cas ; les points d'accès nationaux diffèrent seulement par ce qu'ils y mettent.
L'essentiel : les restrictions suivent l'itinéraire
Interroger un cadre géographique, c'est la voie manuelle. Celle qui change la journée d'un répartiteur, c'est que les restrictions poids lourds reviennent attachées à l'itinéraire lui-même. Envoyez une requête de routage normale à POST /api/v1/routing/route avec le profil du camion, et les restrictions du corridor arrivent dans le canal warnings[] — pas de second appel, pas de jointure spatiale distincte de votre côté.
Et ce n'est pas un déversement de données. Le moteur compare chaque restriction au camion que vous avez réellement envoyé et n'avertit que lorsque votre véhicule dépasse la limite, un avertissement par dimension, pour que le répartiteur voie exactement quelle mesure pose problème :
{
"warnings": [
{
"type": "truck_restriction",
"severity": "critical",
"title": "Truck weight restriction",
"description": "weight limit 3.50t; your truck is 40.00t.",
"distance_along_route_m": 184300,
"projected_arrival_time": "2026-07-08T18:40:00Z",
"source": "OSM-EU",
"source_id": "2971775",
"geometry": { "type": "Point", "coordinates": [14.1699315, 47.5584364] }
}
]
}
Tout ce dont un répartiteur a besoin pour agir tient dans cet objet : ce qu'est la restriction, où sur l'itinéraire elle tombe (distance_along_route_m) et quand le camion devrait l'atteindre (projected_arrival_time).
Soyez précis sur la quatrième question — l'interdiction est-elle seulement en vigueur à cette heure ? — car la réponse n'est pas là où l'on regarde d'abord. Un avertissement porte des champs valid_from / valid_to de premier niveau, alimentés par les heures de début et de fin du feature lui-même. Aucun flux européen de restrictions poids lourds que nous portons ne les renseigne aujourd'hui : au 14 août 2026, zéro des 194 980 restrictions actives avait une heure de début ou de fin, si bien qu'un avertissement de restriction arrive avec les deux champs absents. Là où un flux national publie bel et bien une fenêtre, elle arrive à l'intérieur de properties sous les noms de la source — les arrêtés français portent valid_from sur leurs 3 320 lignes et valid_until (et non valid_to) sur 420 d'entre elles —, et l'avertissement transmet properties tel quel : c'est donc là qu'il faut lire. Tout ce qui n'a aucune fenêtre, ce qui inclut chaque ligne OpenStreetMap ci-dessus, est un inventaire permanent : à traiter comme toujours applicable.
Une vérification de plus circule sur la même requête, et elle se déclenche sur ce que vous transportez plutôt que sur votre gabarit. 7 102 restrictions actives portent un tag d'accès hazmat d'OpenStreetMap ; envoyez un chargement avec le tableau hazardous du profil camion renseigné, et un tronçon marqué hazmat: "no" revient comme son propre avertissement critique hazmat_restriction, distinct des contrôles de dimensions — le moteur de routage est en outre invité à éviter ces tronçons via hazardous / tunnel_category. Sur le transit alpin c'est fréquemment la contrainte déterminante, et aucun contrôle de dimension ne l'aurait jamais fait apparaître.
Cela circule sur la même requête que les coûts de péage du corridor et la planification des pauses au titre du 561/2006. Une requête transfrontalière — disons LV → PL → DE — renvoie un itinéraire poids lourds praticable, les restrictions qui l'arrêteraient, où le conducteur doit légalement faire sa pause, et ce que la tournée coûte en péages : le tableau opérationnel avant que le camion ne roule, pas après l'amende.
Ce qu'il faut attendre des données
Quelques notes honnêtes pour que la couverture se comporte comme vous l'attendez :
- La couverture est par source et croît. Au 14 août 2026, la couche
truck_restrictionscouvre quinze territoires : la France (3 320), la Lettonie (233) et l'Écosse (4) depuis des flux nationaux, et l'Autriche, la Belgique, la Suisse, la Finlande, le Danemark, la Croatie, la Lituanie, l'Estonie, la Moldavie, le Luxembourg, Chypre et l'Islande depuis les tags de la communauté OpenStreetMap — l'Autriche à elle seule pesant 69 064 lignes. La couchesigns/VMS en couvre huit : Espagne, Angleterre, Finlande, Slovénie, Lettonie, Berlin, Pologne et Autriche. D'autres points d'accès nationaux s'intègrent aux deux mêmes types de features à mesure que nous les câblons ; interrogezGET /api/v1/features/typespour les décomptes en direct par type avant de développer pour un pays. - Les codes de territoire sont en ISO 3166-1 alpha-3.
?jurisdiction=LVA, jamaisLV— la forme à deux lettres n'est pas un alias et ne correspond à rien du tout ; elle échoue donc en résultat vide plutôt qu'en erreur. Les subdivisions l'étendent par un trait d'union (GBR-SCT,DEU-BE), et un code de subdivision ne remonte pas depuis son code pays. - Les fenêtres de validité viennent de la source, à l'intérieur de
properties. Les interdictions saisonnières, de week-end et de nuit apparaissent là où le flux amont les horodate : aujourd'hui, cela signifieproperties.valid_from/properties.valid_untildes arrêtés français, et non les champsvalid_from/valid_tode premier niveau de l'avertissement, qu'aucun flux européen de restrictions ne renseigne encore. Là où une source publie une restriction comme un inventaire permanent sans horaires, traitez-la comme toujours applicable plutôt que de supposer une fenêtre. - Les restrictions routent ; les panneaux s'interrogent. Les restrictions poids lourds suivent l'itinéraire dans
warnings[]automatiquement. Les VMS/panneaux ne font pas partie de l'enrichissement de routage — récupérez-les pour un corridor avec une requêtebboxsurtype=signs, calée sur le cadre géographique de l'itinéraire. - C'est une donnée d'entrée de planification. Les données sont conçues pour la répartition et la planification avant départ. Elles affinent le plan ; elles ne remplacent pas l'obligation du conducteur de respecter le panneau devant lui.
Le fil conducteur
Chaque autorité nationale publie ses restrictions et ses panneaux à sa façon, selon son calendrier, sous sa propre licence. Relier tout cela à un itinéraire et le tenir à jour est soluble en interne — et, résolu en interne, cela devient un engagement de maintenance permanent qui concurrence le produit que vous vendez réellement. NAPSPAN fait cette agrégation une fois et vous remet un schéma normalisé : interrogez un cadre géographique, ou envoyez un itinéraire et récupérez les restrictions dessus, filtrables par pays, servies depuis l'Europe, chaque source classée par licence avant sa mise en service.
Essayer
- Documentation API —
/featuresavectype,group,jurisdictionetbbox, ainsi quePOST /routing/route - Carte en direct — voir les restrictions et les panneaux normalisés sur les NAP européens
- Clé API gratuite — sans carte, essai de 14 jours
Connaissez l'interdiction avant la frontière, pas à la frontière
Les restrictions poids lourds nationales et les panneaux à message variable, normalisés dans un seul schéma — interrogeables par pays et par cadre géographique, et remontés automatiquement sur votre itinéraire. Essai gratuit de 14 jours. Sans carte.
Obtenir une clé API gratuite Lire la documentation