annotate python/sumo.py @ 968:32a34a143c27

work on sumo and metadata
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Thu, 07 Dec 2017 15:13:06 -0500
parents 40af0f20ee2d
children 933670761a57
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
968
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
6 #import csv
964
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):
968
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
9 '''Converts list of OSM edges per OSM edge and groups per TAZ
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
10 format is csv with first two columns the OSM id and TAZ id, then the list of SUMO edge id
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
11
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
12 Returns the list of SUMO edge per TAZ'''
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13 data = []
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 tazs = {}
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
15 with open(inFilename,'r') as f:
968
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
16 f.readline() # skip the headers
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
17 for r in f:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
18 tmp = r.strip().split(',')
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
19 tazID = tmp[1]
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
20 for edge in tmp[2:]:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
21 if len(edge) > 0:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
22 if tazID in tazs:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
23 if edge not in tazs[tazID]:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
24 tazs[tazID].append(edge)
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
25 else:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
26 tazs[tazID] = [edge]
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
27 return tazs
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
28
968
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
29 def edge2Taz(tazs):
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
30 '''Returns the associative array of the TAZ of each SUMO edge'''
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
31 edge2Tazs = {}
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
32 for taz, edges in tazs.iteritems():
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
33 for edge in edges:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
34 if edge in edge2Tazs:
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
35 print('error for edge: {} (taz {}/{})'.format(edge, edge2Tazs[edge], taz))
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
36 edge2Tazs[edge] = taz
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
37 return edge2Tazs
32a34a143c27 work on sumo and metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 966
diff changeset
38
966
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
39 def saveTazEdges(outFilename, tazs):
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
40 with open(outFilename,'w') as out:
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41 out.write('<tazs>\n')
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
42 for tazID in tazs:
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43 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
44 out.write('</tazs>\n')
966
40af0f20ee2d reworking the functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 965
diff changeset
45
964
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
46 # TODO add utils from process-cyber.py?
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
47
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
48 # if __name__ == "__main__":
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
49 # import doctest
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
50 # import unittest
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
51 # suite = doctest.DocFileSuite('tests/sumo.txt')
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
52 # #suite = doctest.DocTestSuite()
e3ec6caab984 utilities for SUMO traffic simulation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
53 # unittest.TextTestRunner().run(suite)