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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)