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