changeset 964:e3ec6caab984

utilities for SUMO traffic simulation
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 27 Nov 2017 17:23:30 -0500
parents 2757efeabbb4
children eec549e9ff2e
files python/sumo.py
diffstat 1 files changed, 39 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python/sumo.py	Mon Nov 27 17:23:30 2017 -0500
@@ -0,0 +1,39 @@
+#! /usr/bin/env python
+'''Libraries for the SUMO traffic simulation software
+http://sumo.dlr.de
+'''
+
+import csv
+
+def convertTazEdges(inFilename, outFilename):
+    '''Converts list of OSM edges per OSM edge and groups per TAZ'''
+    data = []
+    tazs = {}
+    with open(inFilename,'r') as f:
+	csv_reader = csv.reader(f, delimiter=",")
+	next(csv_reader, None)  # skip the headers
+	for row in csv_reader:
+	    data.append(row)
+
+    for datum in data:
+	if len(datum) > 5 and datum[5] is not None:
+	    tazID = datum[3]
+	    for edge in datum[15:]:
+                if len(edge) > 0:
+		    if edge is not None:
+		        tazs.setdefault(tazID, [edge]).append(edge)
+
+    with open(outFilename,'w') as out:
+	out.write('<tazs>\n')				
+	for tazID in tazs:
+	    out.write('<taz id="{}" edges="'.format(tazID)+' '.join(tazs[tazID])+'"/>\n')
+	out.write('</tazs>\n')
+
+# TODO add utils from process-cyber.py?
+        
+# if __name__ == "__main__":
+#     import doctest
+#     import unittest
+#     suite = doctest.DocFileSuite('tests/sumo.txt')
+#     #suite = doctest.DocTestSuite()
+#     unittest.TextTestRunner().run(suite)