Mercurial > hg > nsaunier > traffic-intelligence
annotate python/sumo.py @ 964:e3ec6caab984
utilities for SUMO traffic simulation
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Mon, 27 Nov 2017 17:23:30 -0500 |
| parents | |
| children | eec549e9ff2e |
| 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: |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
24 tazs.setdefault(tazID, [edge]).append(edge) |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
25 |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
26 with open(outFilename,'w') as out: |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
27 out.write('<tazs>\n') |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
28 for tazID in tazs: |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
29 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
|
30 out.write('</tazs>\n') |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
31 |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
32 # TODO add utils from process-cyber.py? |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
33 |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
34 # if __name__ == "__main__": |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
35 # import doctest |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
36 # import unittest |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
37 # suite = doctest.DocFileSuite('tests/sumo.txt') |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
38 # #suite = doctest.DocTestSuite() |
|
e3ec6caab984
utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
39 # unittest.TextTestRunner().run(suite) |
