Ejemplo n.º 1
0
 def __init__(self, filename=None):
     """ Create a Run from a gpx file"""
     self.filename = filename
     self.segments = []
     self._parser = None
     if filename is not None:
         self._parser = GPX_Parser(filename)
         for seg in xrange(self._parser.number_of_segments()):
             self.segments.append(Segment())
             for trackpoint in self._parser:
                 self.segments[seg].trackpoints.append(trackpoint)
Ejemplo n.º 2
0
class Run:
    """ Class that represents a Run
    """
    def __init__(self, filename=None):
        """ Create a Run from a gpx file"""
        self.filename = filename
        self.segments = []
        self._parser = None
        if filename is not None:
            self._parser = GPX_Parser(filename)
            for seg in xrange(self._parser.number_of_segments()):
                self.segments.append(Segment())
                for trackpoint in self._parser:
                    self.segments[seg].trackpoints.append(trackpoint)
    def pause_time(self, unit='sec'):
        """ Return the total number of seconds not spent running (i.e. time
            spent between segments)
        """
        result = 0
        for i in xrange(1, len(self.segments)):
            result = result + self.segments[i].trackpoints[0].time_to(
                     self.segments[i-1].trackpoints[-1], unit=unit)
        return result
    def skipped_distance(self, unit='meter'):
        """ Return the total distance not spent running (i.e.  distance skipped
            between segments)
        """
        result = 0
        for i in xrange(1, len(self.segments)):
            result = result + self.segments[i].trackpoints[0].distance_to(
                     self.segments[i-1].trackpoints[-1], unit=unit)
        return result
    def total_distance(self, unit='meter'):
        """ Return the total distance covered in the run, including inactive
            periods
        """
        return self.active_distance(unit=unit) \
               + self.skipped_distance(unit=unit)
    def total_time(self, unit='sec'):
        """ Return the total time the run took """
        return self.segments[0].trackpoints[0].time_to(
               self.segments[-1].trackpoints[-1], unit=unit)
    def active_distance(self, unit='meter'):
        """ Return the total distance covered in the run """
        result = 0
        for segment in self.segments:
            result = result + segment.total_distance(unit=unit)
        return result
    def active_time(self, unit='second'):
        """ Return the total distance covered in the run """
        return self.total_time(unit=unit) - self.pause_time(unit=unit)
    def average_speed(self, dunit=PREF_DUNIT, tunit='hour'):
        """ Return the average speed over active periods """
        return self.active_distance(unit=dunit) / self.active_time(unit=tunit)
    def average_pace(self, tunit='min', dunit=PREF_DUNIT):
        """ Return the average speed over active periods """
        return  self.active_time(unit=tunit) / self.active_distance(unit=dunit)
    def segmentize(self):
        """ Create segments based on heuristics """
        segments = self.segments
        self.segments = []
        for segment in segments:
            self.segments += segmentize(segment)