如何用OSMnx移除城市路网图中的外环道路(以巴黎为例)
如何用OSMnx保留巴黎城市路网并移除外环及近郊道路?
完全可以通过OSMnx实现这个需求,分两步操作就能精准裁剪路网:
1. 裁剪至巴黎行政边界,移除近郊道路
先获取巴黎的官方行政边界,再用这个边界多边形把初始路网裁剪到城市范围内,自动剔除近郊区域的道路:
# 获取初始路网 import osmnx as ox G = ox.graph_from_place("Paris, Ile-de-France, France", network_type="drive") # 获取巴黎行政边界的GeoDataFrame paris_boundary = ox.geocode_to_gdf("Paris, Ile-de-France, France") # 裁剪路网至行政边界内 G_city_only = ox.truncate.truncate_graph_to_polygon(G, paris_boundary.geometry.iloc[0])
2. 识别并移除环城大道(外环道路)
如果巴黎的环城大道(Boulevard Périphérique)在行政边界内,可通过OSM的名称标签精准识别并移除:
# 筛选出环城大道的所有边 peripherique_edges = [(u, v, k) for u, v, k, data in G_city_only.edges(data=True, keys=True) if data.get("name") == "Boulevard Périphérique"] # 复制路网并移除目标边 G_final = G_city_only.copy() G_final.remove_edges_from(peripherique_edges) # 可选:清理裁剪后产生的孤立节点 G_final = ox.utils_graph.remove_isolated_nodes(G_final)
验证结果
可以可视化对比裁剪前后的路网,确认是否符合需求:
ox.plot_graph(G_final, node_size=0, edge_linewidth=0.5)
内容的提问来源于stack exchange,提问作者Elena Natterer
相关产品推荐
相关产品推荐

