#1 Le 29/09/2023, à 19:09
- Compte supprimé
[Résolu] Modifier l'altitude dans un fichier de trace GPS.
Bonsoir,
Sur un fichier .gpx qui contient la trace d'un parcours VTT, je voudrais modifier les altitudes selon une règle simple : altitude nouvelle = l'ancienne + un nombre fixe.
J'imagine qu'après avoir ouvert le fichier, il faut rechercher chaque ligne qui contient l'altitude et faire le calcul pour mettre la nouvelle valeur. Facile à faire avec un tableur. Seulement le fichier .gpx produit par le GPS est un xml organisé ainsi :
D'abord des données relatives à toute la trace et des statistiques, puis toujours la même séquence pour chaque point enregistré :
<trkpt lon="1." lat="2.">
<ele>652</ele>
<time>2023-01-01T08:30:41.000Z</time>
<extensions>
<ql:flags>0</ql:flags>
<ql:activity>0</ql:activity>
</extensions>
</trkpt>
<trkpt lon="3" lat="4">
<ele>651</ele>
<time>2023-01-01T08:30:44.000Z</time>
<extensions>
<ql:flags>0</ql:flags>
<ql:activity>0</ql:activity>
</extensions>
</trkpt>
L'altitude est dans les lignes <ele>valeur_altitude</ele> Pouvez-vous me donner une piste pour lire ce fichier et y chercher les altitudes ? Quelle commande utiliser ?
Dernière modification par Compte supprimé (Le 30/09/2023, à 06:26)
#2 Le 29/09/2023, à 20:26
- pingouinux
Re : [Résolu] Modifier l'altitude dans un fichier de trace GPS.
Bonjour,
Tu peux essayer ce script en python.
$ cat script.py
#!/usr/bin/env python3
import sys, re
delta=int(sys.argv[1])
rec=re.compile('(<ele>)(\d+)(</ele>)')
def repl(k): return k.group(1) + str(int(k.group(2))+delta) + k.group(3)
with open(sys.argv[2]) as f: s=f.read()
t=rec.sub(repl,s)
with open(sys.argv[3],'w') as g: g.write(t)
À utiliser ainsi (les arguments sont : delta_altitude fichier_d_entree fichier_de_sortie) :
./script.py 10 i.gpx o.gpx
Hors ligne
#3 Le 30/09/2023, à 06:25
- Compte supprimé
Re : [Résolu] Modifier l'altitude dans un fichier de trace GPS.
Merci beaucoup pingouinux,
Cela fonctionne très bien, maintenant je saurai comment corriger une trace quand l'altimètre est mal calé au départ. Si je veux fignoler, il me reste juste à changer l'altitude max et mini dans les statistiques.