zektyc/public/zmap/vitesses-par-route/index.html

216 lines
No EOL
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="La base de données des vitesses par route de ZMap : 90,5 millions de points, 3,6 millions de km de routes cartographiées avec leur limite de vitesse (OpenStreetMap), sur toute l'Europe." />
<meta name="robots" content="index, follow" />
<title>Vitesses par route · ZMap · Zektyc</title>
<link rel="canonical" href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" />
<link rel="alternate" hreflang="fr" href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" />
<link rel="alternate" hreflang="en" href="https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds/" />
<link rel="alternate" hreflang="x-default" href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" />
<meta name="theme-color" content="#070a0f" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Zektyc" />
<meta property="og:title" content="Vitesses par route · ZMap" />
<meta property="og:description" content="ZMap connaît la limite de vitesse de chaque route d'Europe : 90,5 millions de points, 3,6 millions de km, à partir des données OpenStreetMap." />
<meta property="og:url" content="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" />
<meta property="og:locale" content="fr_FR" />
<meta property="og:locale:alternate" content="en_US" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="stylesheet" href="/css/style.css?v=8" />
<style>
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 12px;
margin: 24px 0;
}
.stat {
background: rgba(255, 255, 255, 0.04);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 10px;
padding: 16px;
text-align: center;
}
.stat b {
display: block;
font-size: 1.7em;
line-height: 1.2;
color: var(--accent, #4dd6a8);
}
.stat span {
font-size: 0.85em;
opacity: 0.7;
}
table.speeds {
width: 100%;
border-collapse: collapse;
margin: 16px 0;
}
table.speeds th,
table.speeds td {
text-align: right;
padding: 6px 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
table.speeds th:first-child,
table.speeds td:first-child {
text-align: left;
}
.bar {
display: inline-block;
height: 10px;
border-radius: 3px;
background: var(--accent, #4dd6a8);
vertical-align: middle;
}
code {
background: rgba(255, 255, 255, 0.06);
padding: 1px 6px;
border-radius: 4px;
font-size: 0.9em;
}
</style>
</head>
<body>
<header id="h"></header>
<main class="legal" id="main">
<p class="legal-note"><a href="/zmap/">← Retour à ZMap</a></p>
<h1>Vitesses par route</h1>
<p class="legal-meta">
La base de données interne de ZMap · comment elle est construite et
ce qu'elle contient
</p>
<div class="dev-banner">
🧭 <strong>Fonctionnalité de navigation.</strong> 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.
</div>
<section class="projects-page">
<article class="card">
<h3>Le principe</h3>
<p>
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 <em>par route</em> à
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.
</p>
</article>
</section>
<div class="stats-grid">
<div class="stat"><b>90,5 M</b><span>points échantillonnés</span></div>
<div class="stat"><b>3,6 M km</b><span>de routes avec vitesse connue</span></div>
<div class="stat"><b>5 104</b><span>cellules de 0,5° × 0,5°</span></div>
<div class="stat"><b>370 Mo</b><span>grille compressée (gzip)</span></div>
<div class="stat"><b>40 m</b><span>échantillonnage le long des routes</span></div>
<div class="stat"><b>5 o</b><span>par point (lon, lat, vitesse)</span></div>
</div>
<section class="projects-page">
<article class="card">
<h3>Comment c'est construit</h3>
<ol>
<li>
<strong>Source :</strong> l'extrait Europe d'OpenStreetMap
(Geofabrik, 34,8 Go) contient 98,2 millions de routes
(<code>highway</code>).
</li>
<li>
<strong>Filtrage :</strong> <code>osmium tags-filter</code> ne garde
que les routes (8,5 Go), puis seules celles portant une vitesse
(<code>maxspeed</code>) sont conservées — environ 13 millions.
</li>
<li>
<strong>Échantillonnage :</strong> un point est posé tous les
40 mètres le long de chaque route, avec sa vitesse en km/h.
</li>
<li>
<strong>Indexation :</strong> 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.
</li>
</ol>
<p>
Le tout est reproductible : le script de construction
(<code>build_maxspeed.py</code>) tourne de bout en bout sur un petit
serveur.
</p>
</article>
<article class="card">
<h3>Ce qu'il y a dedans</h3>
<p>
Répartition des points par limite de vitesse (extrait des valeurs les
plus courantes) :
</p>
<table class="speeds">
<tr><th>Limite</th><th>Part des points</th><th></th></tr>
<tr><td>50 km/h</td><td>26,2 %</td><td><span class="bar" style="width:100%"></span></td></tr>
<tr><td>30 km/h (zones 30)</td><td>18,5 %</td><td><span class="bar" style="width:71%"></span></td></tr>
<tr><td>90 km/h</td><td>9,5 %</td><td><span class="bar" style="width:36%"></span></td></tr>
<tr><td>80 km/h</td><td>9,2 %</td><td><span class="bar" style="width:35%"></span></td></tr>
<tr><td>70 km/h</td><td>6,0 %</td><td><span class="bar" style="width:23%"></span></td></tr>
<tr><td>60 km/h</td><td>5,7 %</td><td><span class="bar" style="width:22%"></span></td></tr>
<tr><td>100 km/h</td><td>4,6 %</td><td><span class="bar" style="width:18%"></span></td></tr>
<tr><td>40 km/h</td><td>3,3 %</td><td><span class="bar" style="width:13%"></span></td></tr>
<tr><td>48 km/h (30 mph, RU)</td><td>2,8 %</td><td><span class="bar" style="width:11%"></span></td></tr>
<tr><td>97 km/h (60 mph, RU)</td><td>2,4 %</td><td><span class="bar" style="width:9%"></span></td></tr>
<tr><td>32 km/h (20 mph, RU)</td><td>2,1 %</td><td><span class="bar" style="width:8%"></span></td></tr>
<tr><td>20 km/h (zones piétonnes)</td><td>2,1 %</td><td><span class="bar" style="width:8%"></span></td></tr>
<tr><td>120 km/h</td><td>1,8 %</td><td><span class="bar" style="width:7%"></span></td></tr>
<tr><td>130 km/h (autoroutes)</td><td>1,7 %</td><td><span class="bar" style="width:6%"></span></td></tr>
<tr><td>110 km/h</td><td>1,4 %</td><td><span class="bar" style="width:5%"></span></td></tr>
</table>
<p class="legal-note">
Valeurs <em>numériques</em> présentes dans OpenStreetMap. Les vitesses
réelles peuvent différer (travaux, panneaux temporaires, conditions
météo). Les autoroutes sans limite (ex. certaines portions allemandes)
n'ont pas de <code>maxspeed</code> : ZMap n'affiche alors aucune
vitesse.
</p>
</article>
<article class="card">
<h3>Côté application</h3>
<p>
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.
</p>
</article>
<article class="card">
<h3>Précision et couverture</h3>
<ul>
<li>Couverture : Europe entière, longitude −12° à 46°, latitude 27° à 72°.</li>
<li>Rattachement : la route la plus proche à moins de 40 m du point.</li>
<li>Localisation d'un point : précision ≈ 0,76 m.</li>
<li>Données : OpenStreetMap, libre de droits (licence ODbL).</li>
</ul>
</article>
</section>
</main>
<footer id="f"></footer>
<script src="/js/theme.js" defer></script>
<script src="/js/global.js?v=1" defer></script>
<script src="/js/components.js?v=7" defer></script>
</body>
</html>