annotate python/sumo.py @ 966:40af0f20ee2d

reworking the functions
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 05 Dec 2017 16:11:49 -0500
parents eec549e9ff2e
children 32a34a143c27
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
966
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
8 def loadTazEdges(inFilename):
964
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
eec549e9ff2e removed bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 964
diff changeset
24 if tazID in tazs:
eec549e9ff2e removed bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 964
diff changeset
25 if edge not in tazs[tazID]:
eec549e9ff2e removed bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 964
diff changeset
26 tazs[tazID].append(edge)
eec549e9ff2e removed bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 964
diff changeset
27 else:
eec549e9ff2e removed bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 964
diff changeset
28 tazs[tazID] = [edge]
966
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
29 return tazs
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
30
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
31 def saveTazEdges(outFilename, tazs):
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
32 with open(outFilename,'w') as out:
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
33 out.write('<tazs>\n')
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
34 for tazID in tazs:
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
35 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
36 out.write('</tazs>\n')
966
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
37
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
38 # TODO add utils from process-cyber.py?
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
39
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
40 # if __name__ == "__main__":
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41 # import doctest
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
42 # import unittest
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43 # suite = doctest.DocFileSuite('tests/sumo.txt')
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
44 # #suite = doctest.DocTestSuite()
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
45 # unittest.TextTestRunner().run(suite)