赞
踩
1安装
最好自建虚拟环境,然后可以
参考我之前的一篇文章,成功安装,注意必须要是指定的版本,轮子安装
2调用
检验安装成功第一步,调用。
import osmnx as ox
3各级别边界获取
1)例:澳大利亚新南威尔士州行政边界获取:
实现代码:
- city = ox.gdf_from_place('New South Wales')
- ox.plot_shape(ox.project_gdf(city))
2)例:悉尼市行政边界获取:
实现代码:
- city = ox.gdf_from_place('Sydney')
- ox.plot_shape(ox.project_gdf(city))
3)例:广州市天河区行政边界获取:
实现代码:
- city = ox.gdf_from_place('广州市天河区')
- ox.plot_shape(ox.project_gdf(city))
4保存数据到本地
OSMnx提供三种文件保存格式:ESRI Shpfile,osm以及graphml。
以最常用的shpfile为例:
ox.save_gdf_shapefile(“city.shp”)
(保存路径一般为代码所在文件夹)
5道路数据获取
道路数据获取方法有三种:以上为根据坐标范围进行获取(graph_from_bbox),其次还可以根据地名进行检索(graph_from_place),根据地址进行检索(graph_from_address)。道路类型也有三种可供获取:行车道路(network_type = ‘drive’),可骑行道路(network_type = ‘bike’)与步行道路(network_type = ‘walk’)。
1)例:根据坐标范围获取深圳市全市可骑行道路数据:
实现代码:
- G = ox.graph_from_bbox(22.9837, 22.1365, 114.976, 113.3487, network_type = 'drive')
- G = ox.project_graph(G)
- ox.save_graph_shapefile('深圳市可骑行道路.shp')
- ox.plot_graph(G)
2)例:根据地名检索获取以广州大学为中心,半径1.5km范围内的所有道路:
对比百度地图:
细致的高校内部小路也能获取,可见OSMnx质量。
实现代码:
- G = ox.graph_from_address('广州大学', distance = 1500, network_type = 'all')
- ox.plot_graph(G)
- ox.save_graph_shapefile('全国排名第100高校周边道路.shp')
Arcmap软件查看下载数据:
广州市珠江新城周边道路
广州大学城周边道路
6路径规划
例:广州大学校门-中山大学校门路径规划
先来看百度地图的检索结果:
模式选择步行,因为我们后面OSMnx获取的数据为可步行道路。百度地图选择的最佳路径长度是5.2km。
OSMnx运行结果:
①首先以广州大学为中心,获取方圆5km的步行道路数据;
②首先输入广大与中大校门坐标作为OD,获得路径规划结果;
放大显示:
③输出规划路径的长度(默认单位为米)
④对比结果
百度地图路径规划长度为5.2km(左图),使用OSMnx的路径规划长度为5.224km(右图),虽推荐路径不一,但最短距离结果较为一致。
实现代码:
import osmnx as ox
import networkx as nx
G = ox.graph_from_address(“广州大学”, distance=6000,network_type=‘all’) #第一步,获取道路数据
ox.plot_graph(G)
origin_point = (23.039506,113.364664) #广州大学校门坐标
destination_point = (23.074058,113.386148) #中山大学校门坐标
origin_node = ox.get_nearest_node(G, origin_point) #获取O最邻近的道路节点
destination_node = ox.get_nearest_node(G, destination_point) #获取D最邻近的道路节点
route = nx.shortest_path(G, origin_node, destination_node, weight=‘length’) #请求获取最短路径
distance = nx.shortest_path_length(G, origin_node, destination_node, weight=‘length’) #并获取路径长度
fig, ax = ox.plot_graph_route(G, route, origin_point=origin_point, destination_point=destination_point) #可视化结果
print(str(distance)) #输出最短路径距离
提示:
若进行大量OD计算,编写循环结构即可。
OSMnx路径规划优缺点:
优点:路径规划不需注册,无配额限制,而著名地图API路径规划一般每天限额几千次,要进行大规模研究时可适当考虑。
缺点:图商的路径规划通常会考虑到实际交通情况,但OSMnx做不到,只能考虑物理几何最短路径,高精度分析需求时需注意这一点。
注意:OSM系列数据不能用于涉及我国国境线的地图表达,须遵守法律法规,使用正确、合法的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。