Mercurial Hosting > traffic-intelligence
diff python/moving.py @ 7:ffddccfab7f9
loading shell objects from NGSIM works
author | Nicolas Saunier <nico@confins.net> |
---|---|
date | Thu, 05 Nov 2009 17:17:20 -0500 |
parents | 597d61c1eebe |
children | 30559b2cf7a9 |
line wrap: on
line diff
--- a/python/moving.py Wed Nov 04 19:13:08 2009 -0500 +++ b/python/moving.py Thu Nov 05 17:17:20 2009 -0500 @@ -3,6 +3,8 @@ import utils; +from shapely.geometry import Polygon + __metaclass__ = type #class MovingObject: @@ -53,6 +55,13 @@ '''Largest interval comprising self and interval2''' return TimeInterval(max(self.first, interval2.first), min(self.last, interval2.last)) + +# class BoundingPolygon: +# '''Class for a polygon bounding a set of points +# with methods to create intersection, unions... +# ''' +# We will use the polygon class of Shapely + class STObject: '''Class for spatio-temporal object i.e. with temporal and spatial existence @@ -60,13 +69,13 @@ It does not mean that the object is defined for all time instants within the time interval''' - def __init__(self, timeInterval = TimeInterval(), boundingPolygon = None, num = None): + def __init__(self, num = None, timeInterval = None, boundingPolygon = None): + self.num = num self.timeInterval = timeInterval self.boundingPolygon = boundingPolygon - self.num = num def empty(self): - return self.timeInterval.empty() + return self.timeInterval.empty() or not self.boudingPolygon def getFirstInstant(self): return self.timeInterval.first() @@ -74,22 +83,44 @@ def getLastInstant(self): return self.timeInterval.first() - - -# return bounding box, and generic polygon, that defaults to box - -class Trajectory(STObject): +class Trajectory: '''Class for trajectories i.e. a temporal sequence of positions''' - pass + + def __init__(self, positions = None): + self.positions = positions + + def addPosition(self, point): + if not self.positions: + self.positions = [[point[0]],[point[1]]] + else: + self.positions[0].append(point[0]) + self.positions[1].append(point[1]) + + def draw(self): + from matplotlib.pylab import plot + plot(self.positions[0], self.positions[1]) +class MovingObject(STObject): + '''Class for moving objects + i.e. with a trajectory and a geometry (volume) + and a type (e.g. road user) + ''' + + def __init__(self, num = None, timeInterval = None, trajectory = None, geometry = None, type = None): + STObject.__init__(self, num, timeInterval) + self.trajectory = trajectory + self.geometry = geometry + self.type = type + # compute bounding polygon from trajectory + + # def computeVelocities(self): class TemporalIndicator: '''Class for temporal indicators i.e. indicators that take a value at specific instants''' pass - if __name__ == "__main__": import doctest import unittest