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