Многочисленные мелкие доработки, связанные с изменением отрисовки треков и загрузкой...
[pyrungps.git] / parsegpx.py
index 25161c8d761517d5d46122d777c71fe8efb022e3..c8ca59988e92e20fae868175871945feba3a933b 100644 (file)
@@ -13,6 +13,7 @@ import datetime
 def check_db_for_training(db,sport,timestamp):
 
   conn = sqlite3.connect(db)
+  conn.text_factory = str
   cur = conn.cursor()
 
   cur.execute ("select count(*) from tracks where sport=? and start_time=?" , (sport,timestamp))
@@ -21,9 +22,13 @@ def check_db_for_training(db,sport,timestamp):
 def write_parsed_to_db(db,gpx,filename):
 
   conn = sqlite3.connect(db)
+  conn.text_factory = str
   cur = conn.cursor()
 
-  cur.execute ("delete from tracks where filename=?" , (filename.decode('UTF-8'),))
+  if type(filename) is str:
+    filename=filename.decode('UTF-8')
+
+  cur.execute ("delete from tracks where filename=?" , (filename,))
   
   tracks = gpx.tracks
   
@@ -36,6 +41,8 @@ def write_parsed_to_db(db,gpx,filename):
         
       try:
         name = gpx.name
+        if type(name) is str:
+          name=name.decode('UTF-8')
       except:
         name = None
         
@@ -61,13 +68,14 @@ def write_parsed_to_db(db,gpx,filename):
           descent = track.elevation_loss()
           ((minlat,minlon),(maxlat,maxlon)) = track.bound_box()
           params = ( 
-            gpx.author,name,filename.decode('UTF-8'),
+            gpx.author,name,filename,
             track.sport,start_time,full_duration,
             distance,filtered_distance,ascent,descent,
             start.lat,start.lon,
             printable,
             minlat,minlon,maxlat,maxlon
              )
+          print(params)
           cur.execute("""
             insert into tracks(
               author,name,filename,sport,
@@ -93,4 +101,39 @@ def write_tree_to_db(db,tree,filename):
 
   write_parsed_to_db(db,gpx,filename)
 
-  
\ No newline at end of file
+def print_parsed_file(filename):
+
+  gpx = pygpx.GPX()
+  gpx.ReadFile(filename)
+
+  for track in gpx.tracks:
+
+    try:
+      author = gpx.author
+    except:
+      author = None 
+       
+    try:
+      name = gpx.name
+    except:
+      name = None
+        
+    start = track.start()
+    if start:
+      printable = pygeocode.GeoName(start.lat,start.lon).printable
+      start_time = track.start_time()
+      full_duration = track.full_duration().total_seconds()
+      distance = track.distance()
+      filtered_distance = track.filtered_distance(max_speed=50)
+      ascent = track.elevation_gain()
+      descent = track.elevation_loss()
+      ((minlat,minlon),(maxlat,maxlon)) = track.bound_box()
+      params = ( 
+        gpx.author,name,filename.decode('UTF-8'),
+        track.sport,start_time,full_duration,
+        distance,filtered_distance,ascent,descent,
+        start.lat,start.lon,
+        printable,
+        minlat,minlon,maxlat,maxlon
+      )
+      print(params)