Mercurial Hosting > traffic-intelligence
view python/moving.py @ 2:de5642925615
started implementation of TimeInterval and Spatio-temporal object
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 19 Oct 2009 13:16:21 -0400 |
parents | aed8eb63cdde |
children | 597d61c1eebe |
line wrap: on
line source
#! /usr/bin/env python '''Libraries for moving objects, trajectories...''' import utils; __metaclass__ = type #class MovingObject: class TimeInterval: '''Temporal interval''' def __init__(self, first=0, last=-1): self.first=first self.last=last def __str__(self): return '%d %d'%(self.first, self.last) def empty(self): ''' >>> TimeInterval().empty() True >>> TimeInterval(0,1).empty() False ''' return self.first > self.last def length(self): '''Returns the length of the interval >>> TimeInterval(0,1).length() 2 >>> TimeInterval(10,8).length() 0 ''' return max(0,self.last-self.first+1) def getList(self): return [self.first, self.last] def contains(self, instant): return (self.first<=instant and self.last>=instant) def inside(self, interval2): 'indicates if the temporal interval of self is comprised in interval2' return (self.first >= interval2.first) and (self.last <= interval2.last) def union(self, interval2): '''Largest interval comprising self and interval2''' return TimeInterval(min(self.first, interval2.first), max(self.last, interval2.last)) def intersection(self, interval2): '''Largest interval comprising self and interval2''' return TimeInterval(max(self.first, interval2.first), min(self.last, interval2.last)) class STObject: '''Class for spatio-temporal object i.e. with temporal and spatial existence (time interval and bounding polygon for positions (e.g. rectangle)''' def __init__(self, timeInterval = TimeInterval(), boundingPolygon = None, num = None): self.timeInterval = timeInterval self.boundingPolygon = boundingPolygon self.num = num def empty(self): return self.timeInterval.empty() def getFirstInstant(self): return self.timeInterval.first() def getLastInstant(self): return self.timeInterval.first() # return bounding box, and generic polygon, that defaults to box class Track(STObject): '''Class for trajectories i.e. sequence of positions''' pass if __name__ == "__main__": import doctest import unittest #suite = doctest.DocFileSuite('tests/ubc_utils.txt') suite = doctest.DocTestSuite() unittest.TextTestRunner().run(suite) #doctest.testmod() #doctest.testfile("example.txt")