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 §8).
- Reprendre une trace enregistrée : panneau Ma bibliothèque dans la sidebar (voir §18).
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. Relief 3D
Le clic droit maintenu incline la vue à tout moment, relief allumé ou non. Le bouton Relief 3D : OFF / ON en haut à droite ajoute le volume du terrain : on lit alors d'un coup d'œil si un sentier suit une crête, longe une falaise ou remonte un talweg — ce qu'une carte à plat ne montre pas.
| Geste | Effet |
| Clic droit maintenu + glisser | Change l'angle de vue et l'orientation, à tout moment |
| Ctrl + glisser | Identique, si tu préfères le clic gauche |
| Boussole (sous les boutons de zoom) | Revient au nord et à plat |
- Les données d'altitude viennent du jeu Terrain Tiles (AWS Open Data) : gratuit, sans clé, couverture mondiale. Rien à configurer.
- Le relief est exagéré 1,4 fois. À l'échelle réelle, un dénivelé de rando reste presque invisible vu de loin ; 1,4 creuse les vallées sans caricaturer.
- Les tuiles d'altitude ne sont téléchargées que quand le relief est allumé.
- L'édition reste possible en vue inclinée : sélection, glisser de point et pose de waypoint fonctionnent normalement.
Le clic droit sert à deux choses quand le relief est actif : maintenu et glissé il fait pivoter la caméra, cliqué sec il pose un waypoint. C'est le mouvement qui les départage.
Le relief demande WebGL et une carte graphique. Sur une machine ancienne ou un téléphone d'entrée de gamme, l'affichage peut ramer : repasse en OFF, la carte à plat reste légère.
4. 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.
5. Annuler / rétablir
Boutons ↶ et ↷ dans la toolbar, ou Ctrl+Z / Ctrl+Y. Les 40 dernières actions sont mémorisées : déplacement, insertion, suppression, découpe, inversion, simplification, récupération d'altitude, fusion, masquage, réordonnancement…
- Le bouton indique en infobulle l'action qui sera annulée (« Annuler : déplacement d'un point »).
- Après une annulation, la sélection courante est relâchée (les positions ont pu bouger).
- En mode tracé, Ctrl+Z se comporte comme Z : il retire le dernier point posé.
- Ouvrir un fichier ou en créer un vide remet l'historique à zéro — on ne peut pas « annuler » un chargement.
L'indicateur ● modifié apparaît dans la toolbar dès qu'il y a des changements non enregistrés. Le navigateur demande confirmation si tu fermes l'onglet dans cet état.
6. 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.
7. 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.
8. 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 (§15) pour récupérer le dénivelé.
9. 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.
10. Générer le retour (aller-retour)
Bouton Générer le retour dans la toolbar. Pour une trace qui va de A à B sans revenir, ajoute le trajet retour en repassant par les mêmes points en sens inverse : la trace devient une boucle A → B → A d'un seul tenant.
- Le point de demi-tour n'est pas dupliqué — sinon la trace contiendrait deux points identiques consécutifs.
- Le retour est ajouté dans le même segment, pour rester un parcours unique à suivre au GPS plutôt que deux traces superposées.
- Les altitudes sont reprises à l'identique : le D+ et le D− s'échangent et s'additionnent (une trace à 1600 m de D+ et 0 de D− devient 1600 / 1600).
- La distance double exactement.
- Annulable par Ctrl+Z.
La fenêtre annonce d'abord si la trace boucle déjà, en comparant l'écart départ-arrivée à la longueur totale — 500 m d'écart, c'est une boucle sur une rando de 28 km mais un vrai aller simple sur une balade de 2 km. Si c'est le cas, un avertissement s'affiche : générer le retour ferait parcourir le circuit deux fois.
Deux traitements possibles pour les horaires des points du retour :
| Choix | Effet |
| Les effacer (défaut) | Le retour est un trajet planifié, pas enregistré. Aucune heure n'est inventée. |
| Les prolonger en miroir | Même durée au retour qu'à l'aller, à rebours. Les horaires restent strictement croissants — utile si un outil refuse un GPX à horaires manquants ou incohérents. |
Recopier les horaires tels quels ferait reculer le temps au retour, ce qu'aucun outil n'accepte : c'est pour ça que le choix est posé plutôt que subi.
11. Gérer les traces : masquer, réordonner
Chaque ligne de la liste Traces dispose de quatre boutons :
| Bouton | Action |
| 👁 / 🚫 | Affiche ou masque la trace sur la carte |
| ▲ ▼ | Remonte / descend la trace dans la liste |
| ✎ | Renomme la trace |
| × | Supprime la trace |
- Une trace masquée disparaît de la carte, du profil altimétrique et des statistiques — pratique pour comparer deux variantes d'un même itinéraire.
- Elle reste dans le fichier : l'enregistrement écrit toujours toutes les traces, visibles ou non. Un rappel s'affiche sous les statistiques quand une trace est masquée.
- L'ordre détermine la couleur (rouge, bleu, vert, orange…) et l'ordre d'écriture dans le fichier .gpx.
12. Simplifier une trace
Bouton Simplifier dans la toolbar. Applique l'algorithme Douglas-Peucker : il retire les points qui n'apportent rien à la forme du tracé.
- La tolérance (1 à 50 m) est l'écart maximal accepté entre l'ancienne et la nouvelle ligne. 5 m est un bon compromis rando.
- L'aperçu affiche en direct le nombre de points avant / après et le gain en %.
- Le premier et le dernier point de chaque segment, ainsi que les points nommés, sont toujours conservés.
- Annulable par Ctrl+Z.
Utile pour faire passer une trace enregistrée à 1 Hz (des milliers de points) dans une montre GPS, ou pour rester sous la limite de 2 Mo de la bibliothèque cloud.
13. 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.
14. 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 §15.
15. 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é), via un proxy côté serveur (OpenTopoData n'envoie pas d'en-têtes CORS).
Une fenêtre propose deux modes :
| Mode | Effet |
| Seulement les points sans altitude (défaut) | Complète les trous, préserve les altitudes existantes. Beaucoup moins de requêtes. |
| Tous les points | Écrase tout par les données SRTM. À utiliser quand les altitudes d'origine sont fausses. |
- Couvre la planète entière, précision verticale ~5 m.
- 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.
- Annulable par Ctrl+Z une fois terminé.
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).
16. Profil altimétrique
Bandeau en bas de la page. Une courbe par trace visible (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.
17. Enregistrer en fichier .gpx
Bouton vert Enregistrer (.gpx) (ou Ctrl+S) → 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.
18. Ma bibliothèque (cloud)
Panneau Ma bibliothèque dans la sidebar : tes traces enregistrées côté serveur (Cloudflare KV), rattachées à ton compte. Personne d'autre n'y a accès, admin compris.
- ☁ Enregistrer (Ctrl+Maj+S) : met à jour la trace liée, ou en crée une si le document n'est encore rattaché à rien.
- Enregistrer sous… : crée toujours une nouvelle entrée (utile pour versionner une variante).
- Clic sur une entrée : la charge (demande confirmation si le travail en cours n'est pas enregistré).
- ✎ renomme, × supprime définitivement.
- La ligne du haut rappelle à quelle entrée le document courant est lié.
| Limite | Valeur |
| Taille d'une trace | 2 Mo (~20 000 points) |
| Nombre de traces | 200 par compte |
| Enregistrements par jour | 1000 (quota KV gratuit, tous comptes confondus) |
Le panneau n'apparaît pas en mode statique local (start.bat) : il n'y a pas de backend. Utilise dev.bat pour le tester en local.
19. Partager une trace
Dans Ma bibliothèque, le bouton 🔗 d'une entrée ouvre la fenêtre de partage. Deux mécanismes indépendants, qui ne se remplacent pas :
| Mécanisme | Destinataire | Ce qu'il reçoit |
| Lien public | N'importe qui, sans compte | Une page en lecture seule : carte, profil, statistiques, téléchargement du .gpx |
| Envoi à un utilisateur | Un compte du site | Une copie indépendante déposée dans sa bibliothèque |
Le lien public contient un jeton aléatoire de 128 bits : il est indevinable, mais quiconque le reçoit peut le transmettre. Points à connaître :
- Il pointe vers ta trace, ce n'est pas une copie figée : si tu corriges le tracé ou le renommes, le lien reflète la nouvelle version immédiatement.
- Une trace = un lien. Recliquer sur « Créer le lien » renvoie le lien existant plutôt que d'en empiler un second.
- Révocable à tout moment : l'accès est coupé dans la seconde, pour tout le monde. La trace, elle, n'est pas touchée.
- Supprimer la trace de ta bibliothèque coupe aussi l'accès : le lien affiche alors un message explicite.
- Le visiteur ne peut rien modifier : ni éditer, ni déposer un fichier, ni utiliser les raccourcis. Il peut seulement consulter, masquer une trace, et télécharger.
Envoyer par mail ouvre ton logiciel de messagerie habituel avec l'objet et le lien déjà remplis. Le site n'envoie pas d'email lui-même : rien à configurer, et le message part de ta propre adresse.
L'envoi à un utilisateur dépose une copie chez lui, suffixée de ton identifiant (« Ma rando (de fabrice) »).
La copie est indépendante : le destinataire peut la modifier ou la supprimer sans aucun effet sur la tienne, et réciproquement. Il n'y a pas de notification — préviens-le, la trace apparaît simplement dans sa bibliothèque.
Le lien public est le seul endroit de l'application accessible sans mot de passe. Ne le diffuse que si le contenu de la trace peut être vu par n'importe qui — un domicile de départ de rando, par exemple, se déduit d'un GPX.
20. Statistiques de la sidebar
- Distance : total cumulé via formule de Haversine (3D non pris en compte — plat).
- D+ / D- : lissés à 3 m (voir §14).
- Altitude : min – max sur l'ensemble des points.
- Trackpoints : nombre total de points sur toutes les traces.
- Ces chiffres ne portent que sur les traces visibles (voir §11).
21. Raccourcis clavier
| Touche | Action |
| Ctrl+Z | Annuler (ou retirer le dernier point en mode tracé) |
| Ctrl+Y / Ctrl+Maj+Z | Rétablir |
| Ctrl+S | Enregistrer le fichier .gpx |
| Ctrl+Maj+S | Enregistrer dans la bibliothèque |
| 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 |
| ? / F1 | Ouvrir cette aide |
| Clic droit | Ajouter waypoint (ou annuler dernier point en mode tracé) |
22. Lancer l'application
En ligne : https://gpx.camalet.net.
En local, depuis le dossier du projet :
start.bat — serveur Python sur http://localhost:8765, UI seule, sans login, bibliothèque ni altitude SRTM (pas de backend).
dev.bat — wrangler pages dev, application complète avec login, bibliothèque et proxy d'altitude.
Ne pas ouvrir directement index.html (protocole file://) — les navigateurs bloquent les requêtes tuiles à cause de CORS.
23. Comptes utilisateurs
L'application est protégée par un login simple. Tu te connectes via /login 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) et à sa propre bibliothèque.
- Rôle « admin » : idem + 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 et des traces dans Cloudflare KV.
24. Bibliothèques utilisées
- MapLibre GL JS 5.24.0 — moteur cartographique WebGL (BSD-3)
- Chart.js 4.4.1 — profil altimétrique (MIT)
- OpenStreetMap + OpenTopoMap + CyclOSM + Esri — fonds de carte
- OpenTopoData (SRTM 30 m) — données d'altitude
- Backend : Cloudflare Pages Functions + KV, sans dépendance externe