如何在OSMnx图中添加街道为节点?是否有对应提取方法?
OSMnx街道节点化提取相关疑问
我理解,osmnx的
graph_from_address方法生成的图中,node指两条或多条街道的交叉口,而edge指连接两个(或多个)交叉口的单条街道。根据参考文献[1]中的图,该方法生成的似乎是图1(b)(轴线图),而非同一参考文献中图1(c)定义的连通性图(其中街道作为节点而非边)。请问是否存在osmnx方法可提取街道作为节点而非边?
[1] Bin Jiang (2009) Ranking spaces for predicting human movement in an urban environment, International Journal of Geographical Information Science, 23:7, 823-837, DOI:10.1080/13658810802022822
附:我在文档中未找到类似功能的内容
解答
- OSMnx没有直接提供将街道作为节点、交叉口作为边的内置方法,它默认的图结构就是以交叉口为节点、街道路段为边构建的,对应你提到的轴线图类型。
- 要实现街道作为节点的连通性图,需要自行转换图结构,步骤如下:
- 用OSMnx提取原始路网(比如
graph_from_address或graph_from_place),提取每条街道的标识属性(如name、osmid); - 将每个街道作为新图的节点,同时记录每条街道连接的交叉口集合;
- 判断街道间是否通过交叉口直接连通,若连通则在对应的街道节点间创建边,以此搭建连通性图。
- 用OSMnx提取原始路网(比如
- 转换时可以用OSMnx的
gdf_from_graph方法把路网转为GeoDataFrame,便于处理街道的空间和属性信息,再结合networkx的图操作功能完成新图构建。
内容的提问来源于stack exchange,提问作者ifv
相关产品推荐
相关产品推荐

