使用OSMnx的geocode_to_gdf无法通过ID查询Way/Node的问题
问题原因及解决方法
错误原因
ox.geocoder.geocode_to_gdf 是用于地址/地名转地理数据的地理编码工具,它依赖Nominatim服务。但Nominatim并不会为所有OpenStreetMap元素建立地理编码索引:
- 部分Way元素(比如无名称的小路、局部设施)可能未被纳入Nominatim的地理编码索引池,即便该元素在OSM官网可查,也无法通过地理编码接口检索到。
- 你使用的
by_osmid=True参数虽支持通过OSM ID查询,但仅适用于Nominatim已索引的元素,未索引的元素就会返回无结果错误。
正确获取方法
要直接通过OSM Way ID获取对应的GeoDataFrame,应该使用OSMnx专门用于提取指定OSM元素的geometries_from_osmids函数:
import osmnx as ox # 指定元素类型和ID,way类型用'W'前缀 gdf = ox.geometries.geometries_from_osmids(osmids=['W263515466'])
这个函数直接从OSM的元素数据库中提取数据,不依赖Nominatim的地理编码索引,能准确获取到你需要的Way元素。
内容的提问来源于stack exchange,提问作者Sarkis Sulyan
相关产品推荐
相关产品推荐

