Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)