python - 来自 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
任何线索我怎么能解决这个问题?
解决方案
如果您想将图形保存到磁盘并稍后再次使用它,您应该将其保存为 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 文件,则不会出现此问题。
推荐阅读
- .net-core - 在 dotnet core 中创建主题的最佳实践
- javascript - 谷歌表格合并单元格
- php - 无法在 Ubuntu 18.04 终端中更改 PHP 版本
- java - 片段被销毁时如何在 .get() 方法上删除 OnCompleteListener?
- botframework - github 上 tompaana 的 Agent Handoff intermediator-bot-sample (c#) 无法将 Microsoft.Bot.Builder 和相关软件包升级到 Ver 4.10.3
- bamboo - 竹子中的后处理 xcodebuild 测试输出
- c# - 使用构造函数链接的依赖注入
- java - AvrologicalType String 日期转换为 EPOCH 时间戳-milis
- python - 如何在 python 的浮士德库中运行 hello_world 示例
- wordpress - Wordpress 永久链接不保存