【问题标题】:gdfs to graph and vise versagtfs 到图形,反之亦然
【发布时间】:2018-10-07 07:28:04
【问题描述】:

当我使用python的osmnx时会发生以下情况:

graph = osmnx.graph_from_polygon(Data.bbox)

gdf_nodes, gdf_edges = osmnx.save_load.graph_to_gdfs(
        graph,
        nodes=True, edges=True,
        node_geometry=True,
        fill_edge_geometry=True)
print(gdf_edges['u']) # prints the values nicely

graph2 = osmnx.save_load.gdfs_to_graph(gdf_nodes, gdf_edges) # misses 'v' and 'u' column in gdf_nodes

然后我得到以下错误:

  File "C:\Users\jpelda\AppData\Local\Continuum\anaconda3\lib\site-packages\osmnx\save_load.py", line 513, in gdfs_to_graph
    G.add_edge(u=row['u'], v=row['v'], key=row['key'], **attrs)

TypeError: add_edge() missing 2 required positional arguments: 'u_for_edge' and 'v_for_edge'

【问题讨论】:

    标签: python osmnx


    【解决方案1】:

    确保您使用的是最新发布的 OSMnx(截至今天为 0.8.1)和 NetworkX(截至今天为 2.1)版本。您的代码 sn-p 工作正常。完整的工作示例:

    import networkx as nx
    import osmnx as ox
    print(ox.__version__)
    print(nx.__version__)
    graph = ox.graph_from_place('Piedmont, California, USA', network_type='drive')
    gdf_nodes, gdf_edges = ox.graph_to_gdfs(
            graph,
            nodes=True, edges=True,
            node_geometry=True,
            fill_edge_geometry=True)
    graph2 = ox.gdfs_to_graph(gdf_nodes, gdf_edges)
    

    0.13.0 (2020-05-25)之后

    ox.gdfs_to_graph() 已替换为 ox.graph_from_gdfs()

    如果您的 OSMnx 的版本是 0.13.0 之后,请使用以下代码:

    graph2 = ox.graph_from_gdfs(gdf_nodes, gdf_edges)
    

    【讨论】:

      【解决方案2】:
      import networkx as nx
      
      nx.Graph.add_edge(row['u'], row['v'])
      

      有效!

      显然 u 和 v 不能作为可选项给出!新的 networkx 版本有变化吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-08
        • 2012-02-16
        • 2013-08-16
        • 2012-06-27
        • 2017-02-05
        • 2012-12-01
        • 2012-02-05
        • 1970-01-01
        相关资源
        最近更新 更多