Mercurial > hg > nsaunier > traffic-intelligence
comparison python/ubc_utils.py @ 13:30559b2cf7a9
minimal code to load UBC data
| author | Nicolas Saunier <nico@confins.net> |
|---|---|
| date | Fri, 13 Nov 2009 19:29:01 -0500 |
| parents | |
| children | 9d6831cfe675 |
comparison
equal
deleted
inserted
replaced
| 12:ff5403319cec | 13:30559b2cf7a9 |
|---|---|
| 1 #! /usr/bin/env python | |
| 2 '''Various utilities to load data saved by the UBC tool(s)''' | |
| 3 | |
| 4 import utils | |
| 5 from moving import MovingObject, TimeInterval, Trajectory | |
| 6 | |
| 7 __metaclass__ = type | |
| 8 | |
| 9 delimiterChar = '%'; | |
| 10 | |
| 11 def getLines(f): | |
| 12 '''Gets a complete entry (all the lines) in between delimiterChar.''' | |
| 13 dataStrings = [] | |
| 14 s = utils.readline(f) | |
| 15 while (len(s) > 0) and (not s.startswith(delimiterChar)): | |
| 16 dataStrings += [s.strip()] | |
| 17 s = utils.readline(f) | |
| 18 return dataStrings | |
| 19 | |
| 20 def loadTrajectories(filename, nObjects = -1): | |
| 21 '''Loads trajectories''' | |
| 22 | |
| 23 file = utils.openCheck(filename) | |
| 24 if (not file): | |
| 25 return [] | |
| 26 | |
| 27 objects = [] | |
| 28 objNum = 0 | |
| 29 lines = getLines(file) | |
| 30 while (lines != []) and ((nObjects<0) or (objNum<nObjects)): | |
| 31 l = lines[0].split(' ') | |
| 32 parsedLine = [int(n) for n in l[:4]] | |
| 33 obj = MovingObject(num = objNum, timeInterval = TimeInterval(parsedLine[1],parsedLine[2])) | |
| 34 add = True | |
| 35 if (len(lines) >= 3): | |
| 36 obj.positions = Trajectory([[float(n) for n in lines[1].split(' ')], | |
| 37 [float(n) for n in lines[2].split(' ')]]) | |
| 38 if (len(lines) >= 5): | |
| 39 obj.velocity = Trajectory([[float(n) for n in lines[3].split(' ')], | |
| 40 [float(n) for n in lines[4].split(' ')]]) | |
| 41 | |
| 42 if len(lines) != 2: | |
| 43 objects.append(obj) | |
| 44 objNum+=1 | |
| 45 else: | |
| 46 print("Error two lines of data for feature %d"%(f.num)) | |
| 47 | |
| 48 lines = getLines(file) | |
| 49 | |
| 50 file.close() | |
| 51 return objects | |
| 52 |
