1. Premiers pas
- Ouvrir un fichier
.gpx existant : bouton Ouvrir, ou glisse-dépose le fichier sur la page.
- Créer un fichier vide : bouton Nouveau (efface tout ce qui est chargé après confirmation).
- Créer une trace de zéro : bouton + Trace (crée un fichier vide si besoin, puis active le mode tracé — voir §6).
2. Fond de carte
Sélecteur en haut à droite de la toolbar. 5 fonds gratuits :
| Fond | Usage idéal |
| OSM standard | Général, lisible partout |
| OpenTopoMap (défaut) | Rando — courbes de niveau visibles |
| OSM France | Style français, sentiers GR mieux mis en avant |
| CyclOSM | Vélo — pistes cyclables, dénivelés |
| Esri satellite | Photos aériennes pour suivre un chemin visible |
3. Mode édition
Bouton Mode édition : OFF / ON (raccourci E). Tant qu'il est OFF, la trace est en lecture seule (utile pour juste consulter).
En mode ON :
- Tous les trackpoints apparaissent comme petits cercles sur la trace.
- Les waypoints deviennent déplaçables (drag).
- Les actions clic-droit (waypoint) et clic-ligne (insertion) sont activées.
4. Modifier un point existant
- Clic sur un trackpoint → l'éditeur s'ouvre dans la sidebar (lat, lon, altitude, heure).
- Glisser le point → déplace le trackpoint, la ligne suit en direct.
- Modifier un champ de l'éditeur → la position se met à jour sur la carte.
- Supprimer : bouton Supprimer dans l'éditeur, ou touche Suppr / Backspace.
5. Ajouter / étendre des points
- Au milieu de la trace : clic sur la ligne à l'endroit voulu. L'altitude est interpolée entre les deux points voisins.
- Avant le départ : sélectionne le 1er point → bouton ← Insérer avant → clic sur la carte. Tu peux chaîner (cliquer à nouveau « Insérer avant » sur le nouveau point) pour étendre encore plus en amont.
- Après l'arrivée : pareil mais avec le dernier point et Insérer après →.
- Esc annule le mode placement.
6. Tracer une trace de zéro
- Clique + Trace → mode tracé activé (curseur en croix, message jaune en haut).
- Chaque clic sur la carte ajoute un point.
- Clic droit ou Z : retire le dernier point posé.
- Esc : termine le tracé. Si tu n'as posé aucun point, la trace vide est supprimée automatiquement.
- Une fois terminée : la trace n'a pas d'altitude → utilise Alt. SRTM (§10) pour récupérer le dénivelé.
7. Découper / inverser / fusionner
- Couper en deux : sélectionne un point au milieu d'un segment → bouton Couper ici. Crée deux segments distincts dans la même trace.
- Inverser le sens : bouton Inverser le sens dans la toolbar. Inverse l'ordre des points de toutes les traces.
- Fusionner deux fichiers : ouvre le 1er, puis bouton Fusionner pour le 2e — ses traces et waypoints sont ajoutés au fichier courant.
8. Waypoints
Ce sont les points d'intérêt (parking, source, sommet…). Distincts des trackpoints qui forment la ligne de trace.
- Ajouter : clic droit sur la carte (mode édition ON, hors mode tracé). Un prompt demande le nom.
- Renommer / éditer : clic sur le waypoint dans la sidebar ou sur la carte → l'éditeur s'ouvre avec un champ Nom.
- Déplacer : drag en mode édition.
- Supprimer : Suppr ou bouton × dans la liste de la sidebar.
9. Dénivelé positif / négatif (D+/D-)
Calculé avec un lissage par hystérésis de 3 m : on n'ajoute une montée/descente que si l'écart depuis le dernier point d'ancrage dépasse 3 m. C'est l'algo utilisé par Strava et les compteurs vélo, il évite que le bruit GPS gonfle les chiffres.
Conséquence : ton D+/D- affiché sera inférieur à ce que donnerait une simple somme des écarts. C'est volontaire et plus réaliste.
Si la sidebar affiche "Aucune altitude — clique « Alt. SRTM »", c'est qu'aucun point n'a d'altitude — voir §10.
10. Récupérer l'altitude (Alt. SRTM)
Bouton Alt. SRTM dans la toolbar. Récupère l'altitude depuis l'API publique OpenTopoData (dataset SRTM 30 m, gratuit, sans clé).
- Couvre la planète entière, précision verticale ~5 m.
- Écrase les altitudes existantes par les données SRTM.
- Limite publique : 1000 requêtes/jour, 1 req/sec, 100 points par requête → 4000 points ≈ 45 s.
- Le compteur d'avancement s'affiche sur le bouton (
12/40) et dans le hint en haut.
Si le quota est atteint ou l'API tombe, une alerte s'affiche. Réessaie plus tard, ou on peut switcher vers l'IGN Géoportail (plus précis pour la France).
11. Profil altimétrique
Bandeau en bas de la page. Une courbe par trace (couleur identique à la carte).
- Survol de la courbe → un marqueur jaune apparaît sur la carte à la position correspondante.
- Tooltip indique distance (km) + altitude (m).
- Bouton ▼ en haut du panneau : replie / déplie.
12. Enregistrer le résultat
Bouton vert Enregistrer (.gpx) → télécharge un fichier au format GPX 1.1 (schéma topografix). Le nom du fichier reprend le nom des métadonnées.
Le fichier produit est importable par : Garmin Connect, Coros, Suunto, Strava, Komoot, OsmAnd, Locus Map, etc.
13. Statistiques de la sidebar
- Distance : total cumulé via formule de Haversine (3D non pris en compte — plat).
- D+ / D- : lissés à 3 m (voir §9).
- Altitude : min – max sur l'ensemble des points.
- Trackpoints : nombre total de points sur toutes les traces.
14. Raccourcis clavier
| Touche | Action |
| E | Basculer mode édition |
| Suppr / Backspace | Supprimer le point sélectionné |
| Z | Annuler dernier point (mode tracé) |
| Esc | Quitter mode placement / tracé / désélectionner |
| Clic droit | Ajouter waypoint (ou annuler dernier point en mode tracé) |
15. Lancer l'application
Double-clic sur start.bat dans le dossier E:\GPX\ :
- Lance un serveur HTTP local Python sur
http://localhost:8765.
- Ouvre le navigateur automatiquement.
- Fermer la fenêtre noire arrête le serveur.
Ne pas ouvrir directement index.html (protocole file://) — les navigateurs bloquent les requêtes tuiles à cause de CORS.
16. Comptes utilisateurs
L'application est protégée par un login simple. Tu te connectes via /login.html avec identifiant + mot de passe. Un JWT est stocké dans le localStorage du navigateur pour la session (7 jours).
- Rôle « user » : accès complet à l'app GPX (lire, éditer, créer, enregistrer).
- Rôle « admin » : accès complet + section Administration — comptes dans la sidebar pour créer / supprimer des comptes.
- Déconnexion : bouton en haut à droite (vide le token et redirige vers la page de login).
- Token expiré : redirection automatique vers le login lors de la prochaine action.
Les mots de passe sont hashés en PBKDF2-SHA256 (100 000 itérations) côté serveur (Cloudflare Pages Functions). Stockage des comptes dans Cloudflare KV.
17. Bibliothèques utilisées
- Leaflet 1.9.4 — moteur cartographique (BSD-2)
- Chart.js 4.4.1 — profil altimétrique (MIT)
- OpenStreetMap + OpenTopoMap + CyclOSM + Esri — fonds de carte
- OpenTopoData (SRTM 30 m) — données d'altitude
- Aucune dépendance backend, tout côté navigateur