前言空着
这里使用的是Miniconda,从这个网站下载安装即可。个人使用的是Windows 64-bit版。
参考OSMnx 1.1.1文档
conda config --prepend channels conda-forge
conda create -n ox --strict-channel-priority osmnx
一步到位,完成安装,在Pycharm中选择该conda环境即可使用。
具体先这样选:
然后这样选:
就可以创建项目使用了。(下面弯路就可以不看了)
有时间再补充,逃
该部分使用的例子来源于这篇文章
由于OSMnx 1.1.1中对一些函数名和参数名等进行了修改,同时部分函数将在后续的版本中移除,因此修改之后的正确代码如下:
import osmnx as ox
import networkx as nx
G = ox.graph_from_address('广州大学', dist=6000, network_type='all') # 第一步,获取道路数据
ox.plot_graph(G)
origin_point = (23.039506, 113.364664) # 广州大学校门坐标
destination_point = (23.074058, 113.386148) # 中山大学校门坐标
origin_node = ox.nearest_nodes(G, origin_point[1], origin_point[0]) # 获取O最邻近的道路节点
destination_node = ox.nearest_nodes(G, destination_point[1], destination_point[0]) # 获取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) # 可视化结果
print(str(distance)) # 输出最短路径距离
效果图如下(有点丑):
看了下文档,地图的颜色、线条粗细可以通过在plot_graph
,
plot_graph_route
中加入参数进行修改。
OSError: could not find or load spatialindex_c-64.dll
这个问题比较有意思,引起的原因是osmnx
所依赖的geopandas
包需要导入rtree
包引起。这个问题在GitHub的这个issue中进行了讨论,最后geopandas
的开发人员表示这是rtree
的问题,让你自己碰运气,他也无能为力。
解决方法:
geopandas
的开发人员所提)conda config --env --add channels conda-forge
conda config --env --set channel_priority strict
删除rtree
包后重新安装以确保它选择了底层的C库。
pygeos
,在这种情况下不使用rtree
。(geopandas
的开发人员所提)rtree
版本,使用0.9.4之前的版本(其他使用者提出,可能有效)。conda install -c conda-forge rtree=0.9.3
rtree/finder.py
中的load函数中下图这个地方始终无法将路径加入候选,这里我直接将这个判断条件删掉,默认加入这一路径,问题得到解决。_candidates.append(os.path.join(sys.prefix, "Library", "bin"))