** VERSIONE AGGIORNATA 1.2 **
Non c’è più bisogno di specificare i Km da aggiungere, per tale motivo accetta solo due parametri come ingresso: i due .gpx file da unire
Era da un bel po’ che non pubblicavo qualcosa sul blog, oggi con la scusa di dover unire due mappe/percorsi fatti con il software Sport-Tracker mi sono cimentato nella realizzazione di un piccolo programmino in Python che non fa altro che unire due percorsi in uno solo.
Partiamo subito con due esempi:
Supponiamo di essere partiti da un Punto A ed aver azionato il nostro Workout ( il percorso tracciato con il GPS tramite il software Sport-Tracker ) e di esserci fermati in attimo in un Punto B e di aver premuto erroneamente il tasto “Stop” al posto di “Pause” ( succede molto spesso a me 😛 ). In questo modo abbiamo chiuso il primo Workout senza avere la possibilita’ di poterlo di nuovo riazione e continuare con il conteggio dei Km e/o minuti.
Con questo piccolo programmino possiamo unire due Workout a nostro piacimento in un’unico Workout, in modo da conservare il corretto valore dei Km percorsi, del tempo e di tutte le relative informazioni.
Passiamo all’esempio, supponiamo di avere il primo Workout esportato nel formato .gpx: first.gpx ed un secondo Workout second.gpx e volessimo unirli per avere un unico Workout
Tramite il programma in Python sport_tracker_union.py ora e’ possibile unirli (Scaricate il file dal link appena postato, dato che ci sono problemi con la formattazione e l’indentata del codice Python qui di seguito).
[sourcecode language=”python”]
import sys
import math
def usage():
print " Syntax: "
print "$ python sport-tracker-union.py file_one.gpx file_two.gpx "
if len(sys.argv)<3:
usage()
exit()
find_word = False
in_file = open(sys.argv[1],"r")
print "Leggo file: " + str(in_file)
exp = in_file.read()
in_file.close()
in_file1 = open(sys.argv[2],"r")
print "Leggo file: " + str(in_file1)
exp1 = in_file1.read()
in_file1.close()
a= exp.split("\n")
b= exp1.split("\n")
km_to_add = 0
out_file = open("route.gpx","w")
for out in a:
if (int(out.find("</trkseg>"))!= -1):
#print "entro break"
break
else:
find_km = out.split(" ")
for i in range (len(find_km)):
if (find_km[i].find("Distance") != -1):
km_to_add = float(find_km[i+1])
out_file.write(out+"\n")
for string in b :
if (string.find("trkpt") != -1) or find_word:
find_word = True
find_km = string.split()
for i in range (len(find_km)):
if (find_km[i].find("Distance") != -1):
distance=float( find_km[i+1])
new_distance = distance + km_to_add
stringa_new= string[0:string.find("Distance ")-1] + " Distance " + str(new_distance) + " km</desc>"+"\n"
out_file.write(stringa_new)
else:
out_file.write(string+"\n")
out_file.close()
[/sourcecode]
La sintassi per usare il programma e’ molto semplice, basta specificare nell’ordine il primo file .gpx di partenza ed il secondo file .gpx da unire.
[sourcecode language=”bash”]
$ python sport_tracker_union.py first.gpx second.gpx
[/sourcecode]
in questo modo in output si crea un file di nome route.gpx che potra’ essere importato direttamente dal sito di Sport-Tracker :D, tale file non sar’ altro che la copia (quasi) speculare di first.gpx e la copia modificata di second.gpx con l’aggiunta dei Km che in automatico calcolerà dal primo file .gpx
Immagino questo programmino serva solo a me… almeno ho sconfitto la pigrizia che mi impediva di scrivere qualcosa sul blog 😀
Ecco il mio ultimo Workout caricato utilizzando il mio programma, non vi resta altro che seguirmi 😀
P.s. dato l’enorme successo 😛 presto sarà on-line anche una versione con l’interfaccia grafica…
GitHub
https://github.com/flaviopace/SportTracker_Union_Workout