You need to enable JavaScript to run this app. 使用OSMnx提取曼哈顿多边形路网信息时触发ValueError问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用OSMnx提取曼哈顿多边形路网信息时触发ValueError问题咨询

报错根因判定

该报错并非由生成的city对象为MultiPolygon类型导致,核心触发原因是传入ox.graph_from_polygon()的参数类型不匹配。

具体原因拆解

  • ox.geocode_to_gdf()传入地名列表['Manhattan, New York, USA']时,返回值是一个结构化的GeoDataFrame表格,而非ox.graph_from_polygon()所要求的单个Polygon/MultiPolygon几何对象。
  • OSMnx在校验传入的范围参数时,会尝试对入参做布尔值判断;由于入参是包含pandas Series结构的GeoDataFrame,直接触发了pandas库“Series真值判断不明确”的内置报错逻辑,即提示中的ValueError。
  • 补充说明:OSMnx当前版本完全支持将MultiPolygon作为路网提取的范围参数,即便提取出的曼哈顿边界是MultiPolygon类型,也不会触发该类报错。

代码修正方案

  • 从返回的GeoDataFrame中提取单值几何对象作为入参,修改示例:
import osmnx as ox
import networkx as nx # 补充缺失的networkx导入

# 传入列表查询得到GeoDataFrame
city = ox.geocode_to_gdf(['Manhattan, New York, USA'])
# 从GeoDataFrame中提取对应几何对象
city_poly = city.geometry.iloc[0]
# 传入几何对象提取路网
G = ox.graph_from_polygon(city_poly, network_type='drive', simplify=True)
G_nx = nx.relabel.convert_node_labels_to_integers(G)
nodes, edges = ox.graph_to_gdfs(G_nx, nodes=True, edges=True)
  • 额外排查项:原代码缺失import networkx as nx的导入步骤,运行到图重标号环节时会触发名称未定义的报错,需补上对应导入。

内容的提问来源于stack exchange,提问作者DPM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 23:24:02