def main(options): if not options.skip_fcd: gtfs2fcd.main(options) edgeMap, typedNets = splitNet(options) if os.path.exists(options.mapperlib): if not options.skip_map: mapFCD(options, typedNets) routes = defaultdict(lambda: []) for o in glob.glob(os.path.join(options.map_output, "*.dat")): for line in open(o): time, edge, speed, coverage, id, minute_of_week = line.split('\t')[:6] routes[id].append(edge) else: print("Warning! No mapping library found, falling back to tracemapper.") routes = traceMap(options, typedNets) net = sumolib.net.readNet(options.network) if options.poly_output: generate_polygons(net, routes, options.poly_output) with open(options.route_output, 'w', encoding="utf8") as rout: sumolib.xml.writeHeader(rout, os.path.basename(__file__), "additional") stops = map_stops(options, net, routes, rout) for vehID, edges in routes.items(): if edges: rout.write(' <route id="%s" edges="%s">\n' % (vehID, " ".join([edgeMap[e] for e in edges]))) offset = None for stop in stops[vehID]: if offset is None: offset = stop[1] rout.write(' <stop busStop="%s" duration="%s" until="%s"/>\n' % (stop[0], options.duration, stop[1] - offset)) rout.write(' </route>\n') else: print("Warning! Empty route", vehID) rout.write('</additional>\n') filter_trips(options, routes, stops, options.vehicle_output, options.begin, options.end)
def main(options): if not options.skip_fcd: gtfs2fcd.main(options) if os.path.exists(options.mapperlib): mapFCD(options) else: print( "Warning! No mapping library found, falling back to tracemapper.") traceMap(options) net = sumolib.net.readNet(options.network) routes = defaultdict(lambda: []) for o in glob.glob(os.path.join(options.map_output, "*.dat")): for line in open(o): time, edge, speed, coverage, id, minute_of_week = line.split( '\t')[:6] routes[id].append(edge) if options.poly_output: generate_polygons(net, routes, options.poly_output) with open(options.route_output, 'w') as rout: sumolib.xml.writeHeader(rout, os.path.basename(__file__), "additional") stops = map_stops(options, net, routes, rout) for vehID, edges in routes.items(): if edges: rout.write(' <route id="%s" edges="%s">\n' % (vehID, " ".join(edges))) for stop in stops[vehID]: rout.write( ' <stop busStop="%s" duration="10" until="%s"/>\n' % stop) rout.write(' </route>\n') else: print("Warning! Empty route", vehID) rout.write('</additional>\n') if options.region == gtfs2fcd.URMO: filter_trips(options, routes, stops, options.vehicle_output, 23 * 3600, 49 * 3600) else: filter_trips(options, routes, stops, options.vehicle_output, options.begin, options.end)
def main(options): if options.verbose: print('Loading net') net = sumolib.net.readNet(options.network) if options.osm_routes: # Import PT from GTFS and OSM routes if not options.bbox: BBoxXY = net.getBBoxXY() BBoxLonLat = (net.convertXY2LonLat(BBoxXY[0][0], BBoxXY[0][1]), net.convertXY2LonLat(BBoxXY[1][0], BBoxXY[1][1])) options.bbox = (BBoxLonLat[0][0], BBoxLonLat[0][1], BBoxLonLat[1][0], BBoxLonLat[1][1]) else: options.bbox = [float(coord) for coord in options.bbox.split(",")] gtfsZip = zipfile.ZipFile(sumolib.open(options.gtfs, False)) (routes, trips_on_day, shapes, stops, stop_times) = gtfs2osm.import_gtfs(options, gtfsZip) (gtfs_data, trip_list, filtered_stops, shapes, shapes_dict) = gtfs2osm.filter_gtfs(options, routes, trips_on_day, shapes, stops, stop_times) osm_routes = gtfs2osm.import_osm(options, net) (mapped_routes, mapped_stops, missing_stops, missing_lines) = gtfs2osm.map_gtfs_osm( options, net, osm_routes, # noqa gtfs_data, shapes, # noqa shapes_dict, filtered_stops) # noqa gtfs2osm.write_gtfs_osm_outputs(options, mapped_routes, mapped_stops, missing_stops, missing_lines, gtfs_data, trip_list, shapes_dict, net) else: # Import PT from GTFS if not options.skip_fcd: gtfs2fcd.main(options) edgeMap, typedNets = splitNet(options) if os.path.exists(options.mapperlib): if not options.skip_map: mapFCD(options, typedNets) routes = defaultdict(lambda: []) for o in glob.glob(os.path.join(options.map_output, "*.dat")): for line in open(o): time, edge, speed, coverage, id, minute_of_week = line.split( '\t')[:6] routes[id].append(edge) else: if options.mapperlib != "tracemapper": print( "Warning! No mapping library found, falling back to tracemapper." ) routes = traceMap(options, typedNets) if options.poly_output: generate_polygons(net, routes, options.poly_output) with open(options.additional_output, 'w', encoding="utf8") as rout: sumolib.xml.writeHeader(rout, os.path.basename(__file__), "additional") stops = map_stops(options, net, routes, rout) for vehID, edges in routes.items(): if edges: rout.write(' <route id="%s" edges="%s">\n' % (vehID, " ".join([edgeMap[e] for e in edges]))) offset = None for stop in stops[vehID]: if offset is None: offset = stop[1] rout.write( ' <stop busStop="%s" duration="%s" until="%s"/>\n' % (stop[0], options.duration, stop[1] - offset)) rout.write(' </route>\n') else: print("Warning! Empty route", vehID) rout.write('</additional>\n') filter_trips(options, routes, stops, options.route_output, options.begin, options.end)