OSMNX街道网络投影后丢失原始图部分节点问题咨询
阿姆斯特丹步行网络投影节点丢失的技术解释
你执行的相关代码如下:
import networkx as nx import osmnx as ox G_wgs84 = ox.graph_from_place('Amsterdam',retain_all=True, network_type='walk') G = ox.project_graph(G_wgs84, to_crs='epsg:28992')
该现象的合理技术原因如下:
- 投影坐标系有效范围过滤:你使用的
EPSG:28992是荷兰专属的国家平面坐标系统,仅支持荷兰本土及周边极小范围区域的坐标转换。通过graph_from_place拉取的阿姆斯特丹步行网络边界处,可能包含少量落在EPSG:28992有效投影范围外的节点,这类节点投影后会生成NaN、无穷大等无效坐标,被osmnx自动过滤删除。 - 重合节点自动合并:WGS84为经纬度地理坐标,受OpenStreetMap原始数据精度限制,部分实际空间位置完全重合的节点可能存在极细微的经纬度差值,在WGS84坐标系下会被识别为独立节点。投影到平面坐标系后,坐标微小差值被抹平,坐标完全一致的节点会被osmnx自动合并,最终导致节点计数减少。
- 孤立节点拓扑清理:
project_graph执行时会同步校验图的拓扑有效性,若投影后某节点关联的所有边都因坐标无效被删除,该无任何关联边的孤立节点也会被自动清理,不会保留在结果图中。
可通过以下代码验证丢失节点的具体原因:
# 查询丢失节点的WGS84经纬度坐标 print(G_wgs84.nodes[7394240355]['y'], G_wgs84.nodes[7394240355]['x'])拿到坐标后可先核对该点是否落在阿姆斯特丹行政边界外,或是计算其投影后的坐标是否与其他节点完全重合。
内容的提问来源于stack exchange,提问作者AppleLoad
相关产品推荐
相关产品推荐

