Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir GPX en CSV gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
GPX en CSV
Un fichier GPX est du XML imbriqué. Un élément `<trk>` contient un ou plusieurs éléments `<trkseg>`, chacun tenant une longue liste d’éléments `<trkpt>` qui portent la latitude et la longitude comme attributs et l’altitude et l’heure comme enfants. Un tableur n’a aucun moyen d’exprimer cette imbrication, donc la conversion l’aplatit : chaque point de trace devient une ligne, dans l’ordre où l’enregistreur l’a écrit, et la structure au-dessus du point ne survit que par deux colonnes disant de quel genre de chose la ligne vient et comment elle s’appelait.
Cet aplatissement est tout l’échange. Vous gagnez un tableau que vous pouvez trier, filtrer, tracer et donner à pandas ; vous perdez la capacité de réassembler le GPX d’origine avec son groupement intact. Gardez le GPX si l’aller-retour compte. Si l’analyse compte, le tableau est le meilleur objet — une sortie de deux heures enregistrée à une seconde par seconde fait 7 200 lignes, ce que n’importe quel tableur ouvre sans se plaindre et que n’importe quel dataframe lit en quelques millisecondes.
La ligne d’en-tête est `type,name,latitude,longitude,elevation,time` et il n’y a pas de septième colonne. `type` est soit `track` soit `waypoint`. `name` est le nom de la trace ou du waypoint auquel la ligne appartient, répété sur chaque ligne pour qu’un filtre sur une seule trace fonctionne sans table de correspondance. `latitude` et `longitude` sont en degrés décimaux, l’altitude en mètres au-dessus du niveau de la mer comme le GPX l’a indiqué, et `time` est l’horodatage exactement comme enregistré.
La vitesse, la distance, la pente et l’allure sont délibérément absentes, même si un convertisseur pourrait toutes les calculer. Chacune demande une décision de lissage — sur combien d’échantillons, en jetant quels outliers — et une valeur inventée par cette décision ressemble dans un tableur à une valeur qui a été mesurée. La distance entre lignes consécutives est une ligne d’arithmétique une fois le tableau devant vous, et le choix est alors le vôtre et visible.
Le GPX découpe une trace en segments là où l’enregistreur a perdu le signal, et ces frontières `<trkseg>` sont supprimées : les points sortent comme une suite continue de lignes, donc une sortie à travers un long tunnel n’est pas silencieusement coupée en deux jeux de données. Si vous avez besoin de retrouver ces coupures, elles sont visibles dans la colonne `time` comme un saut entre lignes consécutives.
Les itinéraires sont traités de la même façon. Un élément `<rte>` est une ligne planifiée plutôt qu’une enregistrée, et ses points apparaissent typés comme `track`, parce que dans un tableau il n’y a rien d’autre qu’ils puissent honnêtement être. Les waypoints sont différents et sortent en premier, typés `waypoint`, chacun gardant le nom qu’il avait. Un GPX tenant une trace et douze points sauvegardés vous donne douze lignes de waypoint suivies des points de trace, séparables par un filtre sur la première colonne.
La plupart des montres enregistrent plus que la position. La fréquence cardiaque, la cadence, la température et la puissance vont dans un bloc `<extensions>` à l’intérieur de chaque `<trkpt>`, en général sous le namespace TrackPointExtension de Garmin. Le lecteur ici prend la latitude, la longitude, `<ele>` et `<time>` et s’arrête, donc aucune de ces valeurs n’apparaît dans le CSV et aucune colonne n’est créée pour elles.
Cela vaut la peine d’être su avant de planifier une analyse autour d’elles, parce que la sortie a l’air complète. Si des flux de capteurs sont ce que vous voulez réellement, aucune conversion sur ce site ne vous les donnera dans un tableau — la route TCX a la même limitation pour la même raison. Le conseil honnête est de parser vous-même le bloc extensions, ou d’exporter la séance depuis la plate-forme qui l’a enregistrée, qui offre en général déjà un CSV avec ces colonnes.
La latitude et la longitude sont écrites avec exactement six chiffres après le point, ce qui fait environ 11 centimètres à l’équateur. Ce n’est pas un nombre rond choisi pour la propreté. Un récepteur GPS grand public a une erreur de position de plusieurs mètres en plein air et bien pire sous les arbres ou entre les bâtiments, donc une septième et une huitième décimale décrivent le récepteur plutôt que le sol.
La conséquence est qu’un GPX dont les points étaient stockés à la précision complète qu’un double peut contenir revient arrondi, et une comparaison avec la source montrera des différences à la huitième décimale. Pour une trace grand public enregistrée, c’est un arrondi du bruit. Pour des données de levé, ce serait une perte, et les données de levé ne sont pas à quoi cette conversion sert — un export de station totale appartient à un outil SIG qui garde son propre modèle de précision.
L’altitude est copiée exactement comme le GPX l’a écrite, sans arrondi et sans conversion d’unité : la spécification dit mètres au-dessus de l’ellipsoïde WGS 84, donc `512.4` dans le fichier est `512.4` dans la cellule. Les horodatages sont aussi copiés mot pour mot. ISO 8601 est déjà un standard et le reformater n’introduirait qu’une opinion, donc `2026-05-12T07:03:11Z` reste exactement cela, et un appareil qui écrit des millisecondes les garde.
Un effet de bord utile : ISO 8601 se trie correctement en tant que texte brut, donc ordonner le tableau par la colonne `time` marche même dans un outil qui ne l’a pas reconnu comme une date. Le piège correspondant est qu’un point sans horodatage laisse la cellule vide plutôt que de la remplir avec un zéro ou une époque, et des exports mixtes existent — une trace loguée avec le temps à côté de waypoints marqués à la main, qui n’en portent pas.
Deux choses se passent mal quand un tableau de coordonnées est ouvert en double-cliquant. Dans une locale configurée pour la virgule décimale, `48.137154` est lu comme du texte plutôt que comme un nombre, et toute la colonne latitude arrive alignée à gauche et inutile pour faire un graphique. Et la colonne `time` est souvent réinterprétée comme date-heure dans la zone locale, ce qui décale silencieusement une trace UTC d’une heure ou plus.
Les deux sont évités en important plutôt qu’en ouvrant : la boîte de dialogue d’importation de texte d’Excel vous laisse régler l’origine du fichier et marquer des colonnes individuelles, et les deux colonnes de coordonnées veulent le format de nombre anglais tandis que la colonne time est plus sûre laissée en texte. Dans pandas, rien de tout cela ne se pose — `read_csv` gère le fichier directement, et `parse_dates=["time"]` produit des horodatages conscientes du fuseau parce que le décalage est déjà dans la chaîne.
Le XML paie sa structure en octets. Sur une trace synthétique de 7 200 points avec altitude et horodatage sur chaque point — deux heures à un échantillon par seconde — le GPX fait environ 950 Ko, à peu près 132 octets par point, dont l’essentiel sont les balises `<trkpt>`, `<ele>` et `<time>` répétées. Les mêmes points en CSV font environ 500 Ko, près de 70 octets par point, et cela sans rien avoir omis.
Aucun des deux nombres n’est assez grand pour compter en soi, et c’est le point qui mérite d’être fait : il n’y a pas de raison de taille pour convertir. Le plafond gratuit ici est 100 Mo, et à 132 octets par point un GPX de 100 Mo tient quelque chose comme trois quarts de million de points de trace, ou neuf jours d’enregistrement continu à une seconde. Les fichiers dans cette gamme existent — une saison d’activités fusionnée en un — et ils se convertissent, bien que l’onglet du navigateur réclamera la mémoire.
Chaque fichier converti ici a les mêmes six colonnes dans le même ordre, donc combiner un dossier est une question de laisser tomber les lignes d’en-tête répétées — un `pd.concat` sur un glob, ou un collage dans un tableur. Ce que le tableau combiné n’a pas, c’est quoi que ce soit qui enregistre de quel fichier vient une ligne, parce que la colonne `name` porte le nom de la trace et beaucoup d’exports laissent cela comme valeur par défaut d’appareil ou l’omettent entièrement.
Ajoutez le nom de fichier comme colonne supplémentaire pendant que vous lisez chaque fichier, ce qui en pandas est une ligne à l’intérieur de la boucle. Cela vaut la peine d’être fait avant la fusion plutôt qu’après : une fois que cinquante mille lignes sont dans une seule frame, la seule chose qui distingue quatorze sorties est l’horodatage, et deux séances enregistrées le même matin vont s’entrelacer au moment où le tableau est trié par heure.
Le parsing et l’écriture tournent tous deux dans cet onglet. Aucune requête ne porte le GPX ailleurs, ce qui est vérifiable dans le panneau réseau pendant qu’une conversion tourne, et la conversion marche avec la connexion coupée une fois la page chargée. Cette affirmation vaut davantage ici que sur la plupart des paires.
Un GPX n’est pas un document sur un sujet ; c’est la liste des lieux exacts où vous étiez et des minutes exactes où vous y étiez. Le premier et le dernier point d’une sortie sont très souvent une adresse personnelle, et une fréquence cardiaque au repos à 06h40 dit quand la maison était vide. Le CSV est, si possible, plus exposé que la source, parce qu’il est lisible par quiconque peut ouvrir un tableur. Stockez-le où vous stockez le GPX.
| GPX | CSV | |
|---|---|---|
| Nom complet | GPS Exchange Format | Comma-Separated Values |
| Extension de fichier | .gpx | .csv |
| Type de média | application/gpx+xml | text/csv |
| Première publication | 2002 | 1972 |
| Publié par | Topografix | — |
| Spécification | GPX 1.1 | RFC 4180 |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Aucun navigateur | Aucun navigateur |
| Envisagé à la place | KML, TCX | XLSX, JSON, Parquet |
Les logiciels habituels ne se recoupent pas : GPX s’ouvre dans Garmin BaseCamp, Strava et QGIS, CSV dans Microsoft Excel, LibreOffice Calc et pandas — celui qui reçoit le résultat a donc besoin d’un logiciel de la seconde liste.
Les deux visent des usages différents : GPX la cartographie et le suivi sportif, CSV l’échange entre programmes. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
GPX est le format de Topografix, publié en 2002. La spécification est GPX 1.1, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.
CSV date de 1972, décrit par RFC 4180. Microsoft Excel, LibreOffice Calc et pandas le lisent.
CSV a été publié en 1972 et GPX en 2002. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.
Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.
Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.
GPX et CSV décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. Une ligne par point enregistré. Tout ce que le fichier contenait au-delà de la position, de l’altitude et de l’heure n’entre pas dans un tableau.
Pas pour la conversion : elle se fait dans le navigateur que vous avez déjà ouvert. Pour ouvrir le résultat, il vous faut ensuite le logiciel avec lequel votre appareil affiche habituellement Comma-Separated Values.