Changeset 122
- Timestamp:
- 12/07/07 23:31:48 (1 year ago)
- Files:
-
- pytrainer/trunk/pytrainer.py (modified) (2 diffs)
- pytrainer/trunk/pytrainer/lib/date.py (modified) (1 diff)
- pytrainer/trunk/pytrainer/lib/gpx.py (modified) (5 diffs)
- pytrainer/trunk/pytrainer/record.py (modified) (1 diff)
- pytrainer/trunk/pytrainer/waypoint.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pytrainer/trunk/pytrainer.py
r93 r122 25 25 import gtk 26 26 import gtk.glade 27 import os 27 28 28 29 data_path = "./" … … 38 39 from pytrainer.main import pyTrainer 39 40 41 42 os.popen("MOZILLA_FIVE_HOME=/usr/lib/firefox") 43 40 44 def main(): 41 45 #Lanzamos el pytrainer pytrainer/trunk/pytrainer/lib/date.py
r8 r122 91 91 92 92 def unixtime2date(self,unixtime): 93 print unixtime 93 94 tm = time.gmtime(unixtime) 94 95 year = tm[0] pytrainer/trunk/pytrainer/lib/gpx.py
r120 r122 23 23 import os 24 24 from system import checkConf 25 import xml.dom.minidom 26 import time 25 27 26 28 class Gpx: … … 33 35 self.upositive = 0 34 36 self.unegative = 0 35 pytrainerfile = self.gpx2pytrainer() 36 self._getValues(pytrainerfile) 37 self._getValues() 37 38 38 39 def getMaxValues(self): 39 40 return self.total_dist, self.total_time 40 41 41 def getDatevalues(self): 42 pytrainerfile = self.gpx2pytrainer() 43 fh = open(pytrainerfile) 44 line = fh.readline() 45 init_time = "" 46 i=0 47 while line: 48 line_arr = re.match("([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)$",line) 49 tmp_time = int(line_arr.group(4)) 50 if i == 1: 51 init_time = tmp_time 52 line = fh.readline() 53 i = i+1 54 end_time = tmp_time 55 return init_time, end_time 42 def getTrackRoutes(self): 43 dom = xml.dom.minidom.parse(self.filename) 44 trks = dom.getElementsByTagName("trk") 45 retorno = [] 46 for trk in trks: 47 name = trk.getElementsByTagName("name")[0].firstChild.data 48 time_ = trk.getElementsByTagName("time")[0].firstChild.data 49 mk_time = time.strptime(time_, "%Y-%m-%dT%H:%M:%SZ") 50 time_ = time.mktime(mk_time) 51 retorno.append((name,time_)) 52 return retorno 56 53 57 54 def getUnevenness(self): … … 59 56 60 57 def getTrackList(self): 61 pytrainerfile = self.gpx2pytrainer() 62 return self._getValues(pytrainerfile) 58 return self._getValues() 63 59 64 def gpx2pytrainer(self): 65 stylefile = self.data_path+"pytrainer.style" 66 tmpfile = self.conf.getValue("tmpdir")+"/gps.txt" 67 #os.system("gpsbabel -t -i gpx -f '%s' -x position,distance=10m -o xcsv,style=%s -F %s" %(self.filename, stylefile,tmpfile)) 68 os.system("gpsbabel -t -i gpx -f '%s' -o xcsv,style=%s -F %s" %(self.filename, stylefile,tmpfile)) 69 return tmpfile 60 def _getValues(self): 61 dom = xml.dom.minidom.parse(self.filename) 62 trkpoints = dom.getElementsByTagName("trkpt") 70 63 71 def _getValues(self,pytrainerfile):72 fh = open(pytrainerfile)73 64 retorno = [] 74 65 his_vel = [] 75 66 last_lat = "False" 76 67 last_lon = "False" 77 68 last_time = "False" 78 his_vel = []79 69 total_dist = 0 80 81 line = fh.readline()82 83 70 tmp_alt = 0 84 71 85 while line: 86 line_arr = re.match("([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)$",line) 87 if len(line_arr.group(3)) < 15: 88 tmp_alt = int(line_arr.group(3)) 89 72 for trkpoint in trkpoints: 73 lat = trkpoint.attributes["lat"].value 74 lon = trkpoint.attributes["lon"].value 75 time_ = trkpoint.getElementsByTagName("time")[0].firstChild.data 76 mk_time = time.strptime(time_, "%Y-%m-%dT%H:%M:%SZ") 77 time_ = time.mktime(mk_time) 78 ele = trkpoint.getElementsByTagName("ele")[0].firstChild.data 79 #chequeamos que la altura sea correcta 80 if len(ele)<15: 81 tmp_alt = int(float(ele)) 82 90 83 #evitamos los puntos blancos 91 if (float(l ine_arr.group(1)) < -0.001) or (float(line_arr.group(1)) > 0.0000001):92 tmp_lat = float(l ine_arr.group(1))*0.0174532925293 tmp_lon = float(l ine_arr.group(2))*0.0174532925294 tmp_time = int( line_arr.group(4))84 if (float(lat) < -0.000001) or (float(lat) > 0.0000001): 85 tmp_lat = float(lat)*0.01745329252 86 tmp_lon = float(lon)*0.01745329252 87 tmp_time = int(time_) 95 88 96 89 #Para las vueltas diferentes a la primera 97 90 if last_lat != "False": 98 time = tmp_time - last_time91 time_ = tmp_time - last_time 99 92 tempnum=(math.sin(last_lat)*math.sin(tmp_lat))+(math.cos(last_lat)*math.cos(tmp_lat)*math.cos(tmp_lon-last_lon)) 100 93 try: … … 103 96 total_dist += dist 104 97 #dividimos kilometros por hora (no por segundo) 105 tmp_vel = dist/((time )/3600.0)98 tmp_vel = dist/((time_)/3600.0) 106 99 vel,his_vel = self._calculate_velocity(tmp_vel,his_vel) 107 100 #si la velocidad es menor de 90 lo damos por bueno 108 if vel<90 and time <100:109 self.total_time += time 110 retorno.append((total_dist,tmp_alt, self.total_time,vel,l ine_arr.group(1),line_arr.group(2)))101 if vel<90 and time_ <100: 102 self.total_time += time_ 103 retorno.append((total_dist,tmp_alt, self.total_time,vel,lat,lon)) 111 104 rel_alt = tmp_alt - last_alt 112 105 if rel_alt > 0: … … 121 114 last_alt = tmp_alt 122 115 last_time = tmp_time 123 line = fh.readline()124 116 125 fh.close126 117 self.total_dist = total_dist 127 118 return retorno pytrainer/trunk/pytrainer/record.py
r98 r122 180 180 from lib.gpx import Gpx 181 181 gpx = Gpx(self.data_path,gpxfile) 182 init_time,end_time = gpx.getDatevalues()183 init_time = self.date.unixtime2date(init_time) 184 end_time = self.date.unixtime2date(end_time)185 if init_time == end_time:186 self.recordwindow.rcd_date.set_text( end_time)182 tracks = gpx.getTrackRoutes() 183 184 if len(tracks) < 2: 185 time = self.date.unixtime2date(tracks[0][1]) 186 self.recordwindow.rcd_date.set_text(time) 187 187 self._actualize_fromgpx(gpx) 188 188 else: 189 msg = _("The gpx file seems to be a several days records. Perhaps you will need to edit your gpx file")189 msg = _("The gpx file seems to be a several track records. Press cancel to select one track record. Press Continue to load all as only one track record.") 190 190 from gui.warning import Warning 191 191 warning = Warning(self.data_path,self._actualize_fromgpx,[gpx]) pytrainer/trunk/pytrainer/waypoint.py
r94 r122 58 58 from lib.gpx import Gpx 59 59 gpx = Gpx(self.data_path,gpxfile) 60 init_time,end_time = gpx.getDatevalues()61 init_time = self.date.unixtime2date(init_time) 62 end_time = self.date.unixtime2date(end_time)63 if init_time == end_time:64 self.recordwindow.rcd_date.set_text( end_time)60 tracks = gpx.getTrackRoutes() 61 62 if len(tracks) > 1: 63 time = self.date.unixtime2date(tracks[0][1]) 64 self.recordwindow.rcd_date.set_text(time) 65 65 self._actualize_fromgpx(gpx) 66 66 else:
