示例#1
0
def can_drop(p0, p1, p2):
	if p2[2] - p0[2] > 15: return False
	if geo.dist_meters(p0, p2, geo.NEW_YORK) > 25: return False
	if geo.dist_meters(p0, p1, geo.NEW_YORK) < 10 or \
	   geo.dist_meters(p1, p2, geo.NEW_YORK) < 10: return True
	if geo.angle(p0, p1, p2, geo.NEW_YORK) > 15: return False
	return True
示例#2
0
def pipeline(track, db):
	if not isinstance(track, dict):
		track = db.tracks.find_one({'_id': bson.objectid.ObjectId(track)})
		assert track is not None

	print "Processing track", track['_id']

	gpx_path = 'data/gpx/%s.gpx' % track['_id']
	json_path = 'data/json/%s.json' % track['_id']
	sparse_path = 'data/json-sparse/%s.json' % track['_id']

	parse_gpx.gpx_to_json(gpx_path, json_path)
	track_compress.compress_track_file(json_path, sparse_path)

	track_data = json.load(open(json_path))
	start_time = track_data[0][2]
	duration = track_data[-1][2] - start_time
	distance = sum(geo.dist_meters(track_data[i-1], track_data[i], geo.NEW_YORK) for i in xrange(1, len(track_data)))
	db.tracks.update({'_id': track['_id']}, {'$set': {'start_time': start_time, 'distance': distance, 'duration': duration}})

	return {'duration': duration} # return any/all data that could be useful for incremental updates