コード例 #1
0
ファイル: rkIO.py プロジェクト: bk8190/RunkeeperMapper
def _readPointsFromActivity(activity, workdir, kwargs):
    try:
        spatialFilterDistance = kwargs["spatialFilterDistance"]
    except:
        spatialFilterDistance = None

    # Parse the XML document
    with open(workdir + os.sep + activity["GPX File"], "r") as f:
        soup = BeautifulSoup(f.read())

    # Read all GPS trackpoints
    trkpts = soup.find_all("trkpt")

    # Convert to GPSPoint structures
    points = [GPSPoint.trackpointToGPSPoint(trkpt, activity) for trkpt in trkpts]

    if spatialFilterDistance is not None:
        points = GPSPoint.removeWithinRange(points, spatialFilterDistance)
    return points
コード例 #2
0
def processPoints(workdir, points):
    # Get unique activity types
    activities = rkIO.parseIndexFile(workdir)
    types = set([a['Type'] for a in activities])
    types = [i for i in types]
    
    # Filter points into activity types
    filteredpoints = []
    for t in types:
        filteredpoints.append([point for i,point in enumerate(points) if activities[point.activity]['Type'] == t])
    
    points = []
    for i in range(len(types)):
        # Remove points within a specified distance
        print("Filtering type '" + types[i] + "'")
        n0 = len(filteredpoints[i])
        filteredpoints[i] = GPSPoint.removeWithinRange(filteredpoints[i], 20, verbose=True)
        n1 = len(filteredpoints[i])
        
        print('Pass 1 kept ' + str(n1) + '/' + str(n0))
        points.extend(filteredpoints[i])
    
    return points