diff 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
line wrap: on
line diff
--- a/python/sumo.py	Tue Dec 05 16:15:44 2017 -0500
+++ b/python/sumo.py	Thu Dec 07 15:13:06 2017 -0500
@@ -3,31 +3,39 @@
 http://sumo.dlr.de
 '''
 
-import csv
+#import csv
 
 def loadTazEdges(inFilename):
-    '''Converts list of OSM edges per OSM edge and groups per TAZ'''
+    '''Converts list of OSM edges per OSM edge and groups per TAZ
+    format is csv with first two columns the OSM id and TAZ id, then the list of SUMO edge id
+
+    Returns the list of SUMO edge 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)
+        f.readline() # skip the headers
+        for r in f:
+            tmp = r.strip().split(',')
+	    tazID = tmp[1]
+            for edge in tmp[2:]:                
+                if len(edge) > 0:
+                    if tazID in tazs:
+                        if edge not in tazs[tazID]:
+                            tazs[tazID].append(edge)
+                    else:
+                        tazs[tazID] = [edge]
+    return tazs
 
-    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:
-                        if tazID in tazs:
-                            if edge not in tazs[tazID]:
-                                tazs[tazID].append(edge)
-                        else:
-                            tazs[tazID] = [edge]
-    return tazs
-        
+def edge2Taz(tazs):
+    '''Returns the associative array of the TAZ of each SUMO edge'''
+    edge2Tazs = {}
+    for taz, edges in tazs.iteritems():
+        for edge in edges:
+            if edge in edge2Tazs:
+                print('error for edge: {} (taz {}/{})'.format(edge, edge2Tazs[edge], taz))
+            edge2Tazs[edge] = taz
+    return edge2Tazs
+
 def saveTazEdges(outFilename, tazs):
     with open(outFilename,'w') as out:
 	out.write('<tazs>\n')