Example #1
0
def main():
    usage = """usage: python gdb_import_gtfs.py [options] <graphdb_filename> <gtfsdb_filename> [<agency_id>]"""
    parser = OptionParser(usage=usage)
    parser.add_option("-n", "--namespace", dest="namespace", default="0",
                      help="agency namespace")
    parser.add_option("-m", "--maxtrips", dest="maxtrips", default=None, help="maximum number of trips to load")
    parser.add_option("-d", "--date", dest="sample_date", default=None, help="only load transit running on a given day. YYYYMMDD" )
    
    (options, args) = parser.parse_args()
    
    if len(args) != 2:
        parser.print_help()
        exit(-1)
    
    graphdb_filename = args[0]
    gtfsdb_filename  = args[1]
    agency_id        = args[2] if len(args)==3 else None
    
    print "importing from gtfsdb '%s' into graphdb '%s'"%(gtfsdb_filename, graphdb_filename)
    
    gtfsdb = GTFSDatabase( gtfsdb_filename )
    gdb = GraphDatabase( graphdb_filename, overwrite=False )
    
    maxtrips = int(options.maxtrips) if options.maxtrips else None
    gdb_load_gtfsdb( gdb, options.namespace, gtfsdb, gdb.get_cursor(), agency_id, maxtrips=maxtrips, sample_date=options.sample_date)
    gdb.commit()
    
    print "done"
Example #2
0
def main():
    usage = """usage: python gdb_link_osm_gtfs.py <graphdb_filename> <osmdb_filename> <gtfsdb_filename>"""
    parser = OptionParser(usage=usage)

    (options, args) = parser.parse_args()

    if len(args) != 3:
        parser.print_help()
        exit(-1)

    graphdb_filename = args[0]
    osmdb_filename = args[1]
    gtfsdb_filename = args[2]

    gtfsdb = GTFSDatabase(gtfsdb_filename)
    osmdb = OSMDB(osmdb_filename)
    gdb = GraphDatabase(graphdb_filename)

    n_stops = gtfsdb.count_stops()

    c = gdb.get_cursor()
    for i, (stop_id, stop_name, stop_lat,
            stop_lon) in enumerate(gtfsdb.stops()):
        print "%d/%d" % (i, n_stops)

        nd_id, nd_lat, nd_lon, nd_dist = osmdb.nearest_node(stop_lat, stop_lon)
        station_vertex_id = "sta-%s" % stop_id
        osm_vertex_id = "osm-%s" % nd_id

        print station_vertex_id, osm_vertex_id

        gdb.add_edge(station_vertex_id, osm_vertex_id, Link(), c)
        gdb.add_edge(osm_vertex_id, station_vertex_id, Link(), c)

    gdb.commit()
Example #3
0
def main():
    usage = """usage: python gdb_link_osm_gtfs.py <graphdb_filename> <osmdb_filename> <gtfsdb_filename>"""
    parser = OptionParser(usage=usage)
    
    (options, args) = parser.parse_args()
    
    if len(args) != 3:
        parser.print_help()
        exit(-1)
        
    graphdb_filename = args[0]
    osmdb_filename   = args[1]
    gtfsdb_filename  = args[2]
    
    gtfsdb = GTFSDatabase( gtfsdb_filename )
    osmdb = OSMDB( osmdb_filename )
    gdb = GraphDatabase( graphdb_filename )

    n_stops = gtfsdb.count_stops()

    c = gdb.get_cursor()
    for i, (stop_id, stop_name, stop_lat, stop_lon) in enumerate( gtfsdb.stops() ):
        print "%d/%d"%(i,n_stops)
        
        nd_id, nd_lat, nd_lon, nd_dist = osmdb.nearest_node( stop_lat, stop_lon )
        station_vertex_id = "sta-%s"%stop_id
        osm_vertex_id = "osm-%s"%nd_id
        
        print station_vertex_id, osm_vertex_id
        
        gdb.add_edge( station_vertex_id, osm_vertex_id, Link(), c )
        gdb.add_edge( osm_vertex_id, station_vertex_id, Link(), c )
    
    gdb.commit()
Example #4
0
def main():
    usage = """usage: python gdb_import_gtfs.py [options] <graphdb_filename> <gtfsdb_filename> <agency_id>"""
    parser = OptionParser(usage=usage)
    parser.add_option("-n", "--namespace", dest="namespace", default="0",
                      help="agency namespace")
    parser.add_option("-m", "--maxtrips", dest="maxtrips", default=None, help="maximum number of trips to load")
    
    (options, args) = parser.parse_args()
    
    if len(args) != 3:
        parser.print_help()
        exit(-1)
    
    graphdb_filename = args[0]
    gtfsdb_filename  = args[1]
    agency_id        = args[2]
    
    print "importing agency '%s' from gtfsdb '%s' into graphdb '%s'"%(agency_id, gtfsdb_filename, graphdb_filename)
    
    gtfsdb = GTFSDatabase( gtfsdb_filename )
    gdb = GraphDatabase( graphdb_filename, overwrite=False )
    
    maxtrips = int(options.maxtrips) if options.maxtrips else None
    gdb_load_gtfsdb_to_boardalight(gdb, options.namespace, gtfsdb, agency_id, gdb.get_cursor(), maxtrips=maxtrips)
    gdb.commit()
    
    print "done"
Example #5
0
    def importGtfsWrapper(gtfs_filename, db_conn_string):

        gdb = GraphDatabase( db_conn_string, overwrite=False )

        gtfsdb = GTFSDatabase( db_conn_string, overwrite=True )
        gtfsdb.load_gtfs( gtfs_filename )

        gdb_load_gtfsdb( gdb, 1, gtfsdb, gdb.get_cursor())
Example #6
0
def main():
    usage = """usage: python wktize_gdb.py <graphdb_filename> <osmdb_filename> <gtfsdb_filename>"""
    parser = OptionParser(usage=usage)
    
    (options, args) = parser.parse_args()
    
    if len(args) != 3:
        parser.print_help()
        exit(-1)
        
    graphdb_filename = args[0]
    osmdb_filename   = args[1]
    gtfsdb_filename  = args[2]
    
    gtfsdb = GTFSDatabase( gtfsdb_filename )
    osmdb = OSMDB( osmdb_filename )
    gdb = GraphDatabase( graphdb_filename )
    
    def vertex_interesting(vlabel) :
        return vlabel[0:4] == 'sta-' or vlabel[0:4] == 'osm-'  
    
    def vertex_lookup(vlabel) :
        if vlabel[0:4] == 'sta-' :
            id, name, lat, lon = gtfsdb.stop(vlabel[4:])
            vclass = 'GTFS Stop'
        elif vlabel[0:4] == 'osm-' :
            id, tags, lat, lon, endnode_refs = osmdb.node(vlabel[4:])
            vclass = 'OSM Node'
        else : 
            lat = None
            lon = None
            vclass = None
        return vclass, lat, lon

    c = gdb.get_cursor()
    c.execute( "CREATE TABLE IF NOT EXISTS geom_vertices (label TEXT UNIQUE ON CONFLICT IGNORE, class TEXT, WKT_GEOMETRY TEXT)" )
    c.execute( "CREATE TABLE IF NOT EXISTS geom_edges (class TEXT, WKT_GEOMETRY TEXT)" )
    gdb.commit()

    num_vertices = gdb.num_vertices()
    curr_vertex = 0
    for vlabel in gdb.all_vertex_labels() :
        curr_vertex += 1
        if curr_vertex % 1000 == 0 : 
            sys.stdout.write( '\rVertex %i/%i' % (curr_vertex, num_vertices) )
            sys.stdout.flush()
        if not vertex_interesting(vlabel) : continue
        vclass, lat, lon = vertex_lookup(vlabel)
        c.execute("INSERT INTO geom_vertices VALUES (?, ?, ?)", (vlabel, vclass, "POINT(%s %s)" % (lon, lat)))
    gdb.commit()
        
    print ' '
    num_edges = gdb.num_edges()
    curr_edge = 0
    edges = gdb.execute( "SELECT vertex1, vertex2, edgetype, edgestate FROM edges" )
    for vertex1, vertex2, edgetype, edgestate in edges :
        curr_edge += 1
        if curr_edge % 1000 == 0 : 
            sys.stdout.write( '\rEdge %i/%i' % (curr_edge, num_edges) )
            sys.stdout.flush()
        if not (vertex_interesting(vertex1) and vertex_interesting(vertex2)) : continue
        vclass1, lat1, lon1 = vertex_lookup(vertex1)
        vclass2, lat2, lon2 = vertex_lookup(vertex2)
        c.execute("INSERT INTO geom_edges VALUES (?, ?)", (edgetype, "LINESTRING(%s %s, %s %s)" % (lon1, lat1, lon2, lat2)))
    gdb.commit()

    print '\nIndexing...'
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_vertices_label ON geom_vertices (label)" )
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_vertices_class ON geom_vertices (class)" )
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_edges_class ON geom_edges (class)" )