Mercurial > hg > nsaunier > traffic-intelligence
comparison python/ubc_utils.py @ 47:e27598865af3
modified loadtrajectories to load objects and prototypes
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 23 Sep 2010 17:12:09 -0400 |
| parents | be3ae926e4e8 |
| children | 8aed225f71d8 |
comparison
equal
deleted
inserted
replaced
| 46:b5d007612e16 | 47:e27598865af3 |
|---|---|
| 6 | 6 |
| 7 __metaclass__ = type | 7 __metaclass__ = type |
| 8 | 8 |
| 9 delimiterChar = '%'; | 9 delimiterChar = '%'; |
| 10 | 10 |
| 11 def getFileType(s): | |
| 12 filePrefix = utils.removeExtension(s) | |
| 13 i = filePrefix.rfind('-') | |
| 14 if i>0: | |
| 15 return filePrefix[i+1:] | |
| 16 else: | |
| 17 return '' | |
| 18 | |
| 11 def getLines(f): | 19 def getLines(f): |
| 12 '''Gets a complete entry (all the lines) in between delimiterChar.''' | 20 '''Gets a complete entry (all the lines) in between delimiterChar.''' |
| 13 dataStrings = [] | 21 dataStrings = [] |
| 14 s = utils.readline(f) | 22 s = utils.readline(f) |
| 15 while (len(s) > 0) and (not s.startswith(delimiterChar)): | 23 while (len(s) > 0) and (not s.startswith(delimiterChar)): |
| 16 dataStrings += [s.strip()] | 24 dataStrings += [s.strip()] |
| 17 s = utils.readline(f) | 25 s = utils.readline(f) |
| 18 return dataStrings | 26 return dataStrings |
| 27 | |
| 28 def saveTrajectorieUserTypes(inFilename, outFilename, objects): | |
| 29 '''The program saves the objects, | |
| 30 by just copying the corresponding trajectory and velocity data | |
| 31 from the inFilename, and saving the characteristics in objects (first line) | |
| 32 into outFilename''' | |
| 33 infile = utils.openCheck(inFilename) | |
| 34 outfile = utils.openCheck(outFilename) | |
| 35 | |
| 36 if (not infile) | (not outfile): | |
| 37 return | |
| 38 | |
| 39 lines = getLines(file) | |
| 40 objNum = 0 | |
| 41 while lines != []: | |
| 42 i = 0 | |
| 43 while (i<len(objects)) and (objects[i].num != objNum): | |
| 44 i+=1 | |
| 45 if i<len(objects): | |
| 46 l = lines[0].split(' ') | |
| 47 outfile.write() | |
| 48 # next object | |
| 49 objNum += 1 | |
| 19 | 50 |
| 20 def loadTrajectories(filename, nObjects = -1): | 51 def loadTrajectories(filename, nObjects = -1): |
| 21 '''Loads trajectories''' | 52 '''Loads trajectories''' |
| 22 | 53 |
| 23 file = utils.openCheck(filename) | 54 file = utils.openCheck(filename) |
| 24 if (not file): | 55 if (not file): |
| 25 return [] | 56 return [] |
| 26 | 57 |
| 27 objects = [] | 58 objects = [] |
| 28 objNum = 0 | 59 objNum = 0 |
| 29 isObjectFile = filename.endswith('objects.txt'); | 60 objectType = getFileType(filename) |
| 30 lines = getLines(file) | 61 lines = getLines(file) |
| 31 while (lines != []) and ((nObjects<0) or (objNum<nObjects)): | 62 while (lines != []) and ((nObjects<0) or (objNum<nObjects)): |
| 32 l = lines[0].split(' ') | 63 l = lines[0].split(' ') |
| 33 parsedLine = [int(n) for n in l[:4]] | 64 parsedLine = [int(n) for n in l[:4]] |
| 34 obj = MovingObject(num = objNum, timeInterval = TimeInterval(parsedLine[1],parsedLine[2])) | 65 obj = MovingObject(num = objNum, timeInterval = TimeInterval(parsedLine[1],parsedLine[2])) |
| 35 #add = True | 66 #add = True |
| 36 if len(lines) >= 3: | 67 if len(lines) >= 3: |
| 37 obj.positions = Trajectory.load(lines[1], lines[2]) | 68 obj.positions = Trajectory.load(lines[1], lines[2]) |
| 38 if len(lines) >= 5: | 69 if len(lines) >= 5: |
| 39 obj.velocities = Trajectory.load(lines[3], lines[4]) | 70 obj.velocities = Trajectory.load(lines[3], lines[4]) |
| 40 if (isObjectFile): | 71 if objectType == 'objects': |
| 41 obj.userType = parsedLine[3] | 72 obj.userType = parsedLine[3] |
| 42 obj.nObjects = float(l[4]) | 73 obj.nObjects = float(l[4]) |
| 43 obj.featureNumbers = [int(n) for n in l[5:]] | 74 obj.featureNumbers = [int(n) for n in l[5:]] |
| 44 | 75 |
| 45 # load contour data if available | 76 # load contour data if available |
| 46 if len(lines) >= 6: | 77 if len(lines) >= 6: |
| 47 obj.contourType = utils.line2Floats(lines[6]) | 78 obj.contourType = utils.line2Floats(lines[6]) |
| 48 obj.contourOrigins = Trajectory.load(lines[7], lines[8]) | 79 obj.contourOrigins = Trajectory.load(lines[7], lines[8]) |
| 49 obj.contourSizes = Trajectory.load(lines[9], lines[10]) | 80 obj.contourSizes = Trajectory.load(lines[9], lines[10]) |
| 81 elif objectType == 'prototypes': | |
| 82 obj.userType = parsedLine[3] | |
| 83 obj.nMatchings = int(l[4]) | |
| 50 | 84 |
| 51 if len(lines) != 2: | 85 if len(lines) != 2: |
| 52 objects.append(obj) | 86 objects.append(obj) |
| 53 objNum+=1 | 87 objNum+=1 |
| 54 else: | 88 else: |
