X-Git-Url: https://git.rvb.name/pyrungps.git/blobdiff_plain/c49b871ebc265b1a2030482ca68f89ed920884ff..1690b8b7c8ccfdf60be2b33b314e6c26bdef86e6:/parsegpx.py diff --git a/parsegpx.py b/parsegpx.py index 25161c8..c8ca599 100644 --- a/parsegpx.py +++ b/parsegpx.py @@ -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)