Vitesses par route

🧭 Fonctionnalité de navigation. ZMap rattache chaque point de votre itinéraire à sa route réelle et lit sa limite de vitesse dans une base de données locale de toute l'Europe — puis la garde en cache sur votre téléphone pour la conduite hors-ligne.

Le principe

La plupart des applications de navigation ont besoin d'une connexion pour connaître la vitesse autorisée. ZMap fait différemment : une base de données des limites de vitesse est construite par route à partir des données OpenStreetMap, puis embarquée côté serveur. Quand un itinéraire est calculé, chaque point du trajet est rattaché à la route la plus proche et reçoit sa vitesse. L'itinéraire complet — y compris ses vitesses — est ensuite mis en cache sur le téléphone : pendant la conduite, plus aucune requête réseau n'est nécessaire.

90,5 Mpoints échantillonnés
3,6 M kmde routes avec vitesse connue
5 104cellules de 0,5° × 0,5°
370 Mogrille compressée (gzip)
40 méchantillonnage le long des routes
5 opar point (lon, lat, vitesse)

Comment c'est construit

  1. Source : l'extrait Europe d'OpenStreetMap (Geofabrik, 34,8 Go) contient 98,2 millions de routes (highway).
  2. Filtrage : osmium tags-filter ne garde que les routes (8,5 Go), puis seules celles portant une vitesse (maxspeed) sont conservées — environ 13 millions.
  3. Échantillonnage : un point est posé tous les 40 mètres le long de chaque route, avec sa vitesse en km/h.
  4. Indexation : l'Europe est découpée en cellules de 0,5° de côté (≈ 55 km), elles-mêmes subdivisées en 32 × 32. Chaque point est quantifié sur ~0,76 m et stocké sur 5 octets, puis la cellule est compressée en gzip : 90,5 millions de points en 370 Mo au total.

Le tout est reproductible : le script de construction (build_maxspeed.py) tourne de bout en bout sur un petit serveur.

Ce qu'il y a dedans

Répartition des points par limite de vitesse (extrait des valeurs les plus courantes) :

LimitePart des points
50 km/h26,2 %
30 km/h (zones 30)18,5 %
90 km/h9,5 %
80 km/h9,2 %
70 km/h6,0 %
60 km/h5,7 %
100 km/h4,6 %
40 km/h3,3 %
48 km/h (30 mph, RU)2,8 %
97 km/h (60 mph, RU)2,4 %
32 km/h (20 mph, RU)2,1 %
20 km/h (zones piétonnes)2,1 %
120 km/h1,8 %
130 km/h (autoroutes)1,7 %
110 km/h1,4 %

Côté application

Le serveur renvoie, avec chaque itinéraire, un tableau de vitesses aligné sur les points du tracé (une valeur par point). Le téléphone enregistre tout dans son cache local : pendant la conduite, la limite du tronçon courant est lue sans réseau, et le mode hors-ligne garde tout le trajet. Le rattachement d'un trajet de 4 500 points prend environ 170 ms sur le serveur.

Précision et couverture

  • Couverture : Europe entière, longitude −12° à 46°, latitude 27° à 72°.
  • Rattachement : la route la plus proche à moins de 40 m du point.
  • Localisation d'un point : précision ≈ 0,76 m.
  • Données : OpenStreetMap, libre de droits (licence ODbL).