Mercurial Hosting > 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) |