示例#1
0
        update = s.data._asdict()
        try:
            augment(fix, update)
        except AssertionError as e:
            if 'time' not in str(e):
                logging.warn("Unusual split at line %u. (%s)", line_number, e)
            
            if 'time' not in fix and 'time' in state:
                fix['time'] = state['time']
            if 'date' not in fix and 'date' in state:
                fix['date'] = state['date'] if fix['time'] >= state['time'] else (datetime.strptime(state['date'], "%d%m%y") + timedelta(days=1)).strftime("%d%m%y")
            fixes.append(fix)
            fix = update
        if 'date' in update: state['date'] = update['date']
        if 'time' in update: state['time'] = update['time']
    if fix:
        fixes.append(fix)
    
    segment, prev_time, seg_number = [], None, 0
    for loc in (extract(fix) for fix in fixes):
        if 'time' not in loc: continue
        if prev_time and loc['time'] > prev_time + timedelta(seconds=15):
            upload_points(file, seg_number, segment)
            segment = []
            seg_number += 1
        segment.append(loc)
        prev_time = loc['time']
        loc['time'] = loc['time'].isoformat() + 'Z'
    if segment:
        upload_points(file, seg_number, segment)
示例#2
0
import sys
from xml.etree import ElementTree as ET
import logging

from helpers import upload_points

files = sys.argv[1:]

for file in files:
    logging.info("Reading %s", file)
    tree = ET.parse(file)
    seg_number = 0
    for seg in tree.findall(".//{http://www.topografix.com/GPX/1/1}trkseg"):
        points = []
        for pt in seg.findall("{http://www.topografix.com/GPX/1/1}trkpt"):
            point = {
                 'lat': float(pt.attrib['lat']),
                 'lon': float(pt.attrib['lon'])
            }
            ele = pt.find('{http://www.topografix.com/GPX/1/1}ele')
            if ele is not None:
                point['ele'] = float(ele.text)
            time = pt.find('{http://www.topografix.com/GPX/1/1}time')
            if time is not None:
                point['time'] = time.text
            points.append(point)
        upload_points(file, seg_number, points)
        seg_number += 1