Mercurial > hg > nsaunier > traffic-intelligence
annotate trafficintelligence/sumo.py @ 1070:0154133e77df
corrected bug
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 17 Jul 2018 10:34:39 -0400 |
| parents | cc5cb04b04b0 |
| children | 3972d85e3b6c |
| rev | line source |
|---|---|
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 '''Libraries for the SUMO traffic simulation software |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
3 http://sumo.dlr.de |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 ''' |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
6 #import csv |
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 |
|
966
40af0f20ee2d
reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
965
diff
changeset
|
8 def loadTazEdges(inFilename): |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
9 '''Converts list of OSM edges per OSM edge and groups per TAZ |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
10 format is csv with first two columns the OSM id and TAZ id, then the list of SUMO edge id |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
11 |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
12 Returns the list of SUMO edge per TAZ''' |
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
13 data = [] |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
14 tazs = {} |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
15 with open(inFilename,'r') as f: |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
16 f.readline() # skip the headers |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
17 for r in f: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
18 tmp = r.strip().split(',') |
|
998
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
19 tazID = tmp[1] |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
20 for edge in tmp[2:]: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
21 if len(edge) > 0: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
22 if tazID in tazs: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
23 if edge not in tazs[tazID]: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
24 tazs[tazID].append(edge) |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
25 else: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
26 tazs[tazID] = [edge] |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
27 return tazs |
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
28 |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
29 def edge2Taz(tazs): |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
30 '''Returns the associative array of the TAZ of each SUMO edge''' |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
31 edge2Tazs = {} |
|
998
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
32 for taz, edges in tazs.items(): |
|
968
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
33 for edge in edges: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
34 if edge in edge2Tazs: |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
35 print('error for edge: {} (taz {}/{})'.format(edge, edge2Tazs[edge], taz)) |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
36 edge2Tazs[edge] = taz |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
37 return edge2Tazs |
|
32a34a143c27
work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
966
diff
changeset
|
38 |
|
966
40af0f20ee2d
reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
965
diff
changeset
|
39 def saveTazEdges(outFilename, tazs): |
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
40 with open(outFilename,'w') as out: |
|
998
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
41 out.write('<tazs>\n') |
|
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
42 for tazID in tazs: |
|
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
43 out.write('<taz id="{}" edges="'.format(tazID)+' '.join(tazs[tazID])+'"/>\n') |
|
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
44 out.write('</tazs>\n') |
|
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
968
diff
changeset
|
45 |
|
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
46 # TODO add utils from process-cyber.py? |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
47 |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
48 # if __name__ == "__main__": |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
49 # import doctest |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
50 # import unittest |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
51 # suite = doctest.DocFileSuite('tests/sumo.txt') |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
52 # #suite = doctest.DocTestSuite() |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
53 # unittest.TextTestRunner().run(suite) |
