5.0 KiB
GPX - Compteur de vitesse
Table des matières
Fonctionnalités
- Lecture GPX 1.0 / 1.1 (points
trkpthorodatés). - Vitesse issue de l'extension
gpxtpx:speed(m/s, ex. GeoRide) si présente, sinon calculée à partir des distances et des temps ; lissage léger. - Vidéo accélérée à durée fixe (60 s par défaut) : le trajet complet est parcouru du début à la fin.
- Compteur analogique 0-200 km/h (paramétrable), aiguille et vitesse numérique, placé automatiquement dans le coin le moins encombré par la trace ; l'aiguille part de 0 et y revient sur la première et la dernière seconde.
- Villes traversées obtenues par géocodage inverse Nominatim (OpenStreetMap), affichées sur la carte dès le début, avec placement des étiquettes qui évite chevauchements et trace.
- Option zoom : à l'arrivée du véhicule dans une ville, son nom s'affiche en grand au centre de l'image (moitié de la largeur), avec fondu d'apparition et de disparition.
- Cache des villes dans
<trace>.villes.json: les exécutions suivantes n'accèdent plus au réseau. - Rendu anticrénelé (suréchantillonnage ×2), encodage H.264
yuv420pvia ffmpeg, sans fichiers intermédiaires.
Installation
Prérequis : Python 3.10+ et ffmpeg accessible dans le PATH.
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Utilisation
python gpx_video.py Trajet_16-09-2026_15h38.gpx
Produit Trajet_16-09-2026_15h38.mp4 à côté du GPX.
| Option | Défaut | Rôle |
|---|---|---|
-o, --sortie |
nom du GPX en .mp4 |
fichier de sortie |
--duree |
60 |
durée de la vidéo (secondes) |
--fps |
30 |
images par seconde |
--vmax |
200 |
graduation max du compteur (km/h) |
--sans-villes |
— | ne pas géocoder ni afficher les villes |
--zoom-villes |
— | nom de la ville en grand quand le véhicule y arrive |
--duree-zoom |
2 |
durée d'affichage du nom zoomé (secondes de vidéo) |
Exemple : python gpx_video.py trace.gpx -o balade.mp4 --duree 90 --fps 25 --zoom-villes
Notes :
- Le premier lancement interroge Nominatim (1 requête/s, un point par km de trajet) : compter environ 1 s par km.
- En cas d'erreurs réseau, la vidéo est générée sans villes et le cache n'est pas écrit. Supprimer
<trace>.villes.jsonpour forcer un nouveau géocodage. - Les itinéraires planifiés (ex. export Liberty Rider en
<rte>) ne contiennent pas d'horodatage et sont refusés : il faut une trace enregistrée.
Traitement par lot (PowerShell)
gpx_video.ps1 génère une vidéo pour chaque fichier *.gpx du répertoire courant, avec le Python du venv .venv placé à côté du script (créé et équipé de requirements.txt automatiquement s'il n'existe pas ; inutile de l'activer).
cd D:\Traces\Septembre
& "H:\...\GPX - Compteur de vitesse\gpx_video.ps1"
& "H:\...\GPX - Compteur de vitesse\gpx_video.ps1" --duree 90 --zoom-villes
Les arguments sont transmis tels quels à gpx_video.py pour chaque trace (sauf -o, qui écraserait la même sortie). Les traces en échec sont listées à la fin et le script retourne le code 1. En cas d'erreur, la fenêtre reste ouverte jusqu'à un appui sur Entrée (utile en double-clic / « Exécuter avec PowerShell ») ; pas de pause avec -NonInteractive.
Si la politique d'exécution bloque le script : powershell -ExecutionPolicy Bypass -File gpx_video.ps1.
Structure du projet
gpx_video.py script principal (lecture GPX, villes, rendu, encodage)
gpx_video.ps1 traitement par lot des GPX du répertoire courant
requirements.txt dépendances Python (numpy, Pillow)
docs/exemple.png image extraite de la vidéo d'exemple (README)
Trajet_16-09-2026_15h38.gpx trace d'exemple (GeoRide)
Trajet_16-09-2026_15h38.villes.json cache des villes de l'exemple
Trajet_16-09-2026_15h38.mp4 vidéo générée pour l'exemple
