OSMNX查询布鲁塞尔、雅典等欧洲首都无法返回路网图的报错问题
NetworkXPointlessConcept: Connectivity is undefined for the null graph.报错本质是osmnx查询地名时默认返回的第一个搜索结果存在歧义,布鲁塞尔、雅典在OSM地名库中的首条匹配结果为城市核心点而非行政边界,范围过小甚至没有路网,最终生成空图触发报错。
方案1:指定搜索结果优先级
修改which_result参数,手动选择匹配到的行政边界结果,经测试以下参数可正常返回结果:
# 布鲁塞尔正常查询 ox.graph_from_place("Brussels, Belgium", which_result=2) # 雅典正常查询 ox.graph_from_place("Athens, Greece", which_result=3)
方案2:增加查询范围缓冲
如果仍偶发空图报错,可以加buffer_dist参数给查询范围扩充缓冲(单位为米),避免边界裁剪导致路网为空:
ox.graph_from_place("Brussels, Belgium", which_result=2, buffer_dist=1000)
方案3:用经纬度边界查询(最稳定)
彻底避免地名匹配歧义的方案是直接传入城市的经纬度四至边界,调用graph_from_bbox方法查询:
# 雅典示例:参数依次为北边界纬度、南边界纬度、东边界经度、西边界经度 ox.graph_from_bbox(38.08, 37.93, 23.83, 23.64)
内容的提问来源于stack exchange,提问作者N8_Coder
相关产品推荐
相关产品推荐

