Mercurial Hosting > traffic-intelligence
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