diff python/storage.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 aed8eb63cdde
children 8aed225f71d8
line wrap: on
line diff
--- a/python/storage.py	Wed Nov 04 19:13:08 2009 -0500
+++ b/python/storage.py	Thu Nov 05 17:17:20 2009 -0500
@@ -1,7 +1,8 @@
 #! /usr/bin/env python
 '''Various utilities to save and load data'''
 
-import utils;
+import utils
+import moving
 
 __metaclass__ = type
 
@@ -12,52 +13,59 @@
 def loadNgsimFile(filename, nObjects = -1, sequenceNum = -1):
     '''Reads data from the trajectory data provided by NGSIM project 
     and returns the list of Feature objects'''
-    features = []
+    objects = []
 
-    input = utils.open(filename)
+    input = utils.openCheck(filename)
     if not input:
         import sys
         sys.exit()
 
-    def createFeature(numbers):
+    def createObject(numbers):
         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])]
-        return f
+        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])]
+        return obj
 
     numbers = input.readline().strip().split()
     if (len(numbers) > 0):
-        f = createFeature(numbers)
+        obj = createObject(numbers)
 
     for line in input:
         numbers = line.strip().split()
-        if f.num != int(numbers[0]):
+        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 ?
-            features.append(f)
-            if (nObjects>0) and (len(features)>=nObjects):
+            #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 ?
+            objects.append(obj)
+            if (nObjects>0) and (len(objects)>=nObjects):
                 break
-            f = createFeature(numbers)
+            obj = createObject(numbers)
         else:
-            f.positions[0] += [float(numbers[6])]
-            f.positions[1] += [float(numbers[7])]
-            f.speeds += [float(numbers[11])]
+            print(numbers[6])
+#             f.positions[0] += [float(numbers[6])]
+#             f.positions[1] += [float(numbers[7])]
+#             f.speeds += [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)
     
     input.close()
-    return features
+    return objects
 
 def convertNgsimFile(inFile, outFile, append = False, nObjects = -1, sequenceNum = 0):
     '''Reads data from the trajectory data provided by NGSIM project