Mercurial Hosting > traffic-intelligence
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')