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

8 risposte a “Programma Unire Workout Sport-Tracker”

    1. Puoi installare python anche su windows ed usare il semplice programmino che trovi nella guida

      http://it.diveintopython.org/installing_python/windows.html

      Questo link ti rimanda alle varie procedure che puoi utilizzare per farlo funzionare anche sotto Windows. Cmq presto faro’ una UI grafica in modo da rendere il tutto ancora piu’ semplice e facilmente eseguibile su tutti i SO 😀

      Flavio

      P.s. credevo di essere l’unico a cui potesse servire questo programma… fortunatamente mi sbagliavo 😀

  1. Ciao!
    No, non serve solo a te il programma… 🙂
    Oggi mi sono fermato mentre correvo in bici e per errore ho premuto interrompi invece di pausa, e subito ho pensato a quello che ho letto in questa tua pagina (trovata qualche giorno fa mentre cercavo info su sport tracker su google) 🙂
    Adesso, quindi, è giunta ora di utilizzare il tuo utile programma…
    Però mi è sorto un dubbio: se i chilometri da aggiungere al secondo percorso non sono un numero intero, come devo scrivere il numero: es. 8.5 o 8,5?
    Ho provato in entrambi i modi, ma (probabilmente perché devo approfondire l’esecuzione di script python su windows) non sono riuscito…
    Mi puoi illuminare? Grazie mille!

    1. Purtroppo ho previsto solo numeri interi come numero da dare, però ottima accezione… dovrò migliorarlo ancora un bel pò visto che non sono l’unico ad usarlo 😀

      Tieniti aggiornato alla prox release 😉

      Flavio

    1. Sistemato… ci voleva ferragosto per ottimizzare il programma 😀 ora non c’è più bisogno di specificare i Km percorsi, fa tutto in automatico ( per cui vede tutto come float e non dovrebbero esserci più problemi 😉 )

      Flavio

  2. Ciao
    Uso sportstracker da tanto sul nokia 5800 XM, mi trovo benissimo, sicuramente il tuo programma sarà utile e non poco. Ti chiedo come faccio ad eseguirlo ? ma è per linux ? io ho installato ubuntu 11.10, e poi posso importare i dati del mio nokia su sportstracker ?
    Grazie anticipatamente.

    1. da riga di comando basta dare il comando che trovi nella tutorial. Puoi usarlo anche sotto Windows.. esistono un sacco di implementazioni di Python anche per quel Sistema Operativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.