Programma Unire Workout Sport-Tracker

Overview Applicazione Sport-Tracker

** 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