self.ele = None # height as float value or None
self.name = None # name as string or None
self.type = None # type as string or None
+ def __repr__(self):
+ return u"Waypoint %s" % unicode(self.name)
class Track:
self.name = None # name as string or None
self.type = None # type as string or None
self.points = [] # one point is a tuple (lat, lon, ele) or (lat, lon, None)
+ def __repr__(self):
+ return u"Track %s" % unicode(self.name)
class WrGpx:
self.metadata = MetaData()
self.waypoints = []
self.tracks = []
+ def __repr__(self):
+ return "WrGpx (%d waypoints; %d tracks)" % (len(self.waypoints), len(self.tracks))
class Hint:
self.message = message
self.level = level
self.line_nr = line_nr
+ def __repr__(self):
+ return "Hint: %s" % self.message
def parse_wrgpx(filename=None, string=None):
elif element.tag == ns+'wpt':
waypoint = parse_wpt(element)
wrgpx.waypoints.append(waypoint)
+ if waypoint.ele is None: hints.append(Hint(u"Elevation of waypoint '%s' should be given" % unicode(waypoint), 1))
# Routes
elif element.tag == ns+'rte':
elif el.tag == ns+'link': track.link = el.attrib['href']
elif el.tag == ns+'type': track.type = el.text
elif el.tag == ns+'trkseg':
+ no_ele = 0
for e in el:
if e.tag == ns+'trkpt':
trkpt = parse_wpt(e)
track.points.append((trkpt.lat, trkpt.lon, trkpt.ele))
+ if trkpt.ele is None: no_ele += 1
elif e.tag == ns+'extensions': hints.append(Hint("XML element extensions within XML element trkpt is not used by WRGPX.", 1))
+ if no_ele > 0: hints.append(Hint(u"%d of %d track points have not elevation (%s)" % (no_ele, len(track.points), unicode(track)), 1))
wrgpx.tracks.append(track)
# Extensions