def load_gpx(filename):
"""
:param filename: The file to load the track for.
:return [Point|MultiPoint], BBox:
The point or line read from the GPX track file.
And the bounding box as a 4-tuple.
"""
__LOG.debug(u'Opening GPX file: %s' % filename)
try:
with open(filename, 'r') as gpx_file:
tree = ElementTree.parse(gpx_file)
root = tree.getroot()
except IOError as e:
__LOG.error(u'Failed to read %s: %s' % (filename, e.message))
raise e
tracks = []
for trk in root.findall('{http://www.topografix.com/GPX/1/1}trk'):
for seg in trk.findall('{http://www.topografix.com/GPX/1/1}trkseg'):
track_points = []
for point in seg.findall('{http://www.topografix.com/GPX/1/1}trkpt'):
trk_pt = ([float(point.get('lon')), float(point.get('lat'))])
track_points.append(trk_pt)
tracks.append(__mk_track(track_points))
for trk in root.findall('{http://www.topografix.com/GPX/1/0}trk'):
for seg in trk.findall('{http://www.topografix.com/GPX/1/0}trkseg'):
track_points = []
for point in seg.findall('{http://www.topografix.com/GPX/1/0}trkpt'):
trk_pt = ([float(point.get('lon')), float(point.get('lat'))])
track_points.append(trk_pt)
tracks.append(__mk_track(track_points))
return tracks
评论列表
文章目录