首页 > 解决方案 > 来自 gdf ​​的 Osmnx 基本统计数据

问题描述

我正在尝试使用以下代码计算从 gdf ​​创建的图形的基本统计信息:

ox.utiles_graph.graph_from_gdf(n,e)

节点和边之前已保存,原因如下:

G = graph.graph_from_place(some_place_name) 
n,e = ox.graph_to_gdfs(G)
n.save_to_file(filname,driver="ESRI Shapefile")
e.save_to_file(filname,driver="ESRI Shapefile")

我可以绘制图表并从中计算旅行时间,但我无法使用基本统计功能。我收到以下错误:

 ---> 56 ox.basic_stats(G)

~/anaconda3/envs/ox/lib/python3.9/site-packages/osmnx/stats.py in basic_stats(G, area, clean_int_tol, clean_intersects, tolerance, circuity_dist)
    346     stats["edge_length_avg"] = stats["edge_length_total"] / stats["m"]
    347     stats["streets_per_node_avg"] = streets_per_node_avg(G)
--> 348     stats["streets_per_node_counts"] = streets_per_node_counts(G)
    349     stats["streets_per_node_proportions"] = streets_per_node_proportions(G)
    350     stats["intersection_count"] = intersection_count(G)

~/anaconda3/envs/ox/lib/python3.9/site-packages/osmnx/stats.py in streets_per_node_counts(G)
     80     """
     81     spn_vals = list(streets_per_node(G).values())
---> 82     return {i: spn_vals.count(i) for i in range(int(max(spn_vals)) + 1)}
     83 
     84 

ValueError: max() arg is an empty sequence

任何线索我怎么能解决这个问题?

标签: pythongisnetworkxosmnx

解决方案


如果您想将图形保存到磁盘并稍后再次使用它,您应该将其保存为 GraphML 文件。如果出于某种原因必须将其保存为节点/边缘 shapefile,如果要计算基本统计信息,则需要手动计算每个节点的街道数:

import osmnx as ox
import networkx as nx

G = ox.graph_from_gdfs(some_nodes, some_edges)

spn = ox.utils_graph.count_streets_per_node(G)
nx.set_node_attributes(G, values=spn, name="street_count")
stats = ox.basic_stats(G)

请注意,如果您以这种方式手动执行此操作,由于外围效应,您的每节点街道数可能会有些不准确。如果您只是以通常的方式下载图形然后将其保存为 GraphML 文件,则不会出现此问题。


推荐阅读