def gpx_parser(fh):
it = ElementTree.iterparse(fh, events=('start','end'))
# look for the start gpx tag to fail fast
for event, elem in it:
if event == 'start' and elem.tag.endswith('}gpx'):
break
else:
raise ValueError('Not a gpx file: %s' % fh.name)
# do the main parse
for event, elem in it:
if event == 'end' and elem.tag.endswith('}trkpt'):
latlon = (float(elem.attrib['lat']),
float(elem.attrib['lon']))
elev = np.nan
time = None
for child in elem:
tag_name = child.tag.rsplit('}', 1)[1]
if tag_name == 'ele':
elev = float(child.text)
elif tag_name == 'time':
time = child.text
yield latlon, time, elev
elem.clear()
评论列表
文章目录