changeset 72:575340e6fce3

corrected most of the method to load NGSIM data (adapted to the current MovingObject class
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 14 Jan 2011 19:49:20 -0500
parents 45e958ccd9bd
children 930a6282c9a9
files python/storage.py
diffstat 1 files changed, 28 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/python/storage.py	Fri Jan 14 19:34:00 2011 -0500
+++ b/python/storage.py	Fri Jan 14 19:49:20 2011 -0500
@@ -25,18 +25,18 @@
 
     def createObject(numbers):
         firstFrameNum = int(numbers[1])
-        time = moving.TimeInterval(firstFrameNum, firstFrameNum+int(numbers[2])-1)
-        obj = moving.MovingObject(num = int(numbers[0]), timeInterval = time)
         # do the geometry and usertype
 
-#         firstFrameNum = int(numbers[1])
-#         lastFrameNum = firstFrameNum+int(numbers[2])-1
-#         f = Feature(sequenceNum, firstFrameNum, lastFrameNum, int(numbers[0]))
-#         f.sizeLength = float(numbers[8])
-#         f.sizeWidth = float(numbers[9])
-#         f.userType = int(numbers[10])
-#         f.positions = [[float(numbers[6])],[float(numbers[7])]]
-#         f.speeds = [float(numbers[11])]
+        firstFrameNum = int(numbers[1])
+        lastFrameNum = firstFrameNum+int(numbers[2])-1
+        #time = moving.TimeInterval(firstFrameNum, firstFrameNum+int(numbers[2])-1)
+        obj = moving.MovingObject(num = int(numbers[0]), 
+                                  timeInterval = moving.TimeInterval(firstFrameNum, lastFrameNum), 
+                                  positions = moving.Trajectory([[float(numbers[6])],[float(numbers[7])]]), 
+                                  userType = int(numbers[10]))
+        obj.curvilinearPositions = moving.Trajectory([[float(numbers[5])],[float(numbers[4])]]) # X is the longitudinal coordinate
+        obj.speeds = [float(numbers[11])]
+        obj.size = [float(numbers[8]), float(numbers[9])] # 8 lengh, 9 width # TODO: temporary, should use a geometry object
         return obj
 
     numbers = input.readline().strip().split()
@@ -47,25 +47,24 @@
         numbers = line.strip().split()
         if obj.num != int(numbers[0]):
             # check and adapt the length to deal with issues in NGSIM data
-            #objLength = f.length()
-            #if (objLength != len(f.positions[0])):
-            #    print 'length pb with object %s (%d,%d)' % (f.num,objLength,len(f.positions[0]))
-            #    f.lastFrameNum = f.getFirstFrameNum()+len(f.positions[0])-1
-            #f.velocities = utils.computeVelocities(f.positions) # compare norm to speeds ?
+            if (obj.length() != obj.positions.length()):
+                print 'length pb with object %s (%d,%d)' % (obj.num,obj.length(),obj.positions.length())
+                obj.last = obj.getFirstInstant()+obj.positions.length()-1
+                #obj.velocities = utils.computeVelocities(f.positions) # compare norm to speeds ?
             objects.append(obj)
             if (nObjects>0) and (len(objects)>=nObjects):
                 break
             obj = createObject(numbers)
         else:
             print(numbers[6])
-#             f.positions[0] += [float(numbers[6])]
-#             f.positions[1] += [float(numbers[7])]
-#             f.speeds += [float(numbers[11])]
+            obj.positions.addPositionXY(float(numbers[6]), float(numbers[7]))
+            obj.curvilinearPositions.addPositionXY(float(numbers[5]), float(numbers[4]))
+            obj.speeds.append(float(numbers[11]))
 
-#         if (f.sizeWidth != float(numbers[9])): 
-#             print 'changed width obj %d' % (f.num)
-#         if (f.sizeLength != float(numbers[8])):
-#             print 'changed length obj %d' % (f.num)
+            if (obj.size[0] != float(numbers[8])):
+                print 'changed length obj %d' % (f.num)
+            if (obj.size[1] != float(numbers[9])):
+                print 'changed width obj %d' % (f.num)
     
     input.close()
     return objects
@@ -91,10 +90,10 @@
 
 
 
-if __name__ == "__main__":
-    import doctest
-    import unittest
-    suite = doctest.DocFileSuite('tests/ubc_utils.txt')
-    unittest.TextTestRunner().run(suite)
-    #doctest.testmod()
-    #doctest.testfile("example.txt")
+# if __name__ == "__main__":
+#     import doctest
+#     import unittest
+#     suite = doctest.DocFileSuite('tests/ubc_utils.txt')
+#     unittest.TextTestRunner().run(suite)
+#     #doctest.testmod()
+#     #doctest.testfile("example.txt")