Mercurial Hosting > traffic-intelligence
annotate python/sumo.py @ 965:eec549e9ff2e
removed bug
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 05 Dec 2017 11:52:59 -0500 |
parents | e3ec6caab984 |
children | 40af0f20ee2d |
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 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
6 import csv |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
8 def convertTazEdges(inFilename, outFilename): |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
9 '''Converts list of OSM edges per OSM edge and groups per TAZ''' |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
10 data = [] |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
11 tazs = {} |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
12 with open(inFilename,'r') as f: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
13 csv_reader = csv.reader(f, delimiter=",") |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
14 next(csv_reader, None) # skip the headers |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
15 for row in csv_reader: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
16 data.append(row) |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
17 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
18 for datum in data: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
19 if len(datum) > 5 and datum[5] is not None: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
20 tazID = datum[3] |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
21 for edge in datum[15:]: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
22 if len(edge) > 0: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
23 if edge is not None: |
965 | 24 if tazID in tazs: |
25 if edge not in tazs[tazID]: | |
26 tazs[tazID].append(edge) | |
27 else: | |
28 tazs[tazID] = [edge] | |
964
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
29 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
30 with open(outFilename,'w') as out: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
31 out.write('<tazs>\n') |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
32 for tazID in tazs: |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
33 out.write('<taz id="{}" edges="'.format(tazID)+' '.join(tazs[tazID])+'"/>\n') |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
34 out.write('</tazs>\n') |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
35 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
36 # TODO add utils from process-cyber.py? |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
37 |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
38 # if __name__ == "__main__": |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
39 # import doctest |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
40 # import unittest |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
41 # suite = doctest.DocFileSuite('tests/sumo.txt') |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
42 # #suite = doctest.DocTestSuite() |
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
43 # unittest.TextTestRunner().run(suite) |