openstreetmap是免费地理数据下载的网站,而osmnx是一个用于从openstreetmap下载边界并分析和可视化街道网络python包。
OSMnx工具箱,该工具箱可从OpenStreetMap自动下载,建模和可视化空间数据。可以通过该工具可视化方法(包括地物图和极坐标直方图)以计算方式探索世界各地街道网络和建筑物中的模式和配置,这些方法有助于将城市复杂性压缩成可理解的人工产物,以反映人类对建筑环境的体验。无处不在的城市数据和计算可以从定量和定性的角度开辟新的城市形态分析。(参考:https://geoffboeing.com/)
conda install -c conda-forge osmnx
pip install osmnx
pip install geos
或者:
conda config --prepend channels conda-forge
conda create -n ox --strict-channel-priority osmnx
conda config --prepend channels conda-forge
conda install osmnx
# 或者
pip install geopandas tqdm osmnx matplotlib
安装的同时,也安装了其他依赖库,以确保该工具箱与相应的版本匹配。
Downloading and Extracting Packages
xerces-c-3.2.3 | 3.8 MB | ##################### | 100%
libspatialindex-1.9. | 380 KB | ##################### | 100%
libcurl-7.68.0 | 271 KB | ##################### | 100%
libiconv-1.16 | 680 KB | ##################### | 100%
munch-2.5.0 | 12 KB | ##################### | 100%
expat-2.2.9 | 261 KB | ##################### | 100%
libpq-11.5 | 3.5 MB | ##################### | 100%
joblib-1.0.0 | 206 KB | ##################### | 100%
cligj-0.7.1 | 10 KB | ##################### | 100%
kealib-1.4.7 | 133 KB | ##################### | 100%
fiona-1.8.4 | 916 KB | ##################### | 100%
curl-7.68.0 | 118 KB | ##################### | 100%
bzip2-1.0.8 | 149 KB | ##################### | 100%
krb5-1.16.4 | 833 KB | ##################### | 100%
libnetcdf-4.6.1 | 494 KB | ##################### | 100%
geopandas-0.6.3 | 903 KB | ##################### | 100%
libkml-1.3.0 | 8.9 MB | ##################### | 100%
hdf4-4.2.13 | 1.3 MB | ##################### | 100%
libssh2-1.9.0 | 218 KB | ##################### | 100%
attrs-20.3.0 | 41 KB | ##################### | 100%
threadpoolctl-2.1.0 | 15 KB | ##################### | 100%
scikit-learn-0.23.2 | 6.2 MB | ##################### | 100%
click-plugins-1.1.1 | 9 KB | ##################### | 100%
freexl-1.0.5 | 56 KB | ##################### | 100%
geos-3.7.1 | 771 KB | ##################### | 100%
descartes-1.1.0 | 7 KB | ##################### | 100%
gdal-2.3.3 | 984 KB | ##################### | 100%
rtree-0.9.4 | 44 KB | ##################### | 100%
hdf5-1.10.4 | 34.9 MB | ##################### | 100%
pyproj-1.9.6 | 238 KB | ##################### | 100%
libxml2-2.9.10 | 3.5 MB | ##################### | 100%
osmnx-0.16.2 | 69 KB | ##################### | 100%
boost-cpp-1.74.0 | 16.1 MB | ##################### | 100%
libspatialite-4.3.0a | 4.3 MB | ##################### | 100%
proj4-5.2.0 | 3.3 MB | ##################### | 100%
pcre-8.44 | 498 KB | ##################### | 100%
libgdal-2.3.3 | 7.2 MB | ##################### | 100%
branca-0.4.1 | 26 KB | ##################### | 100%
folium-0.11.0 | 61 KB | ##################### | 100%
click-7.1.2 | 64 KB | ##################### | 100%
shapely-1.6.4 | 391 KB | ##################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
开始安装osmnx
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f7/a4/e66aafbefcbb717813bf3a355c8c4fc3ed04ea1dd7feb2920f2f4f868921/geopandas-0.8.1-py2.py3-none-any.whl (962 kB)
|██▌ | 71 kB 4.5 MB/s eta 0:00:0 |███ | 81 kB 5.1 MB/s eta 0:00:0 |███ | 92 kB 5.8 MB/s eta 0:00:0 |███▌ | 102 kB 6.4 MB/s eta 0:00: |████ | 112 kB 6.4 MB/s eta 0:00: |████ | 122 kB 6.4 MB/s eta 0:00: |████▌ | 133 kB 6.4 MB/s eta 0:00: |█████ | 143 kB 6.4 MB/s eta 0:00: |█████ | 153 kB 6.4 MB/s eta 0:00: |█████▌ | 163 kB 6.4 MB/s eta 0:00: |██████ | 174 kB 6.4 MB/s eta 0:00: |██████ | 184 kB 6.4 MB/s eta 0:00: |██████▌ | 194 kB 6.4 MB/s eta 0:00: |███████ | 204 kB 6.4 MB/s eta 0:00: |███████ | 215 kB 6.4 MB/s eta 0:00: |███████▌ | 225 kB 6.4 MB/s eta 0:00: |████████ | 235 kB 6.4 MB/s eta 0:00: |████████ | 245 kB 6.4 MB/s eta 0:00: |████████▌ | 256 kB 6.4 MB/s eta 0:00: |█████████ | 266 kB 6.4 MB/s eta 0:00: |█████████ | 276 kB 6.4 MB/s eta 0:00: |█████████▌ | 286 kB 6.4 MB/s eta 0:00: |██████████ | 296 kB 6.4 MB/s eta 0:00: |██████████ | 307 kB 6.4 MB/s eta 0:00: |██████████▌ | 317 kB 6.4 MB/s eta 0:00: |███████████ | 327 kB 6.4 MB/s eta 0:00: |███████████ | 337 kB 6.4 MB/s eta 0:00: |███████████▌ | 348 kB 6.4 MB/s eta 0:00: |████████████ | 358 kB 6.4 MB/s eta 0:00: |████████████ | 368 kB 6.4 MB/s eta 0:00: |████████████▌ | 378 kB 6.4 MB/s eta 0:00: |█████████████ | 389 kB 6.4 MB/s eta 0:00: |█████████████ | 399 kB 6.4 MB/s eta 0:00: |█████████████▌ | 409 kB 6.4 MB/s eta 0:00: |██████████████ | 419 kB 6.4 MB/s eta 0:00: |██████████████ | 430 kB 6.4 MB/s eta 0:00: |██████████████▌ | 440 kB 6.4 MB/s eta 0:00: |███████████████ | 450 kB 6.4 MB/s eta 0:00: |███████████████ | 460 kB 6.4 MB/s eta 0:00: |███████████████▌ | 471 kB 6.4 MB/s eta 0:00: |████████████████ | 481 kB 6.4 MB/s eta 0:00: |████████████████▌ | 491 kB 6.4 MB/s eta 0:00: |█████████████████ | 501 kB 6.4 MB/s eta 0:00: |█████████████████ | 512 kB 6.4 MB/s eta 0:00: |█████████████████▌ | 522 kB 6.4 MB/s eta 0:00: |██████████████████ | 532 kB 6.4 MB/s eta 0:00: |██████████████████ | 542 kB 6.4 MB/s eta 0:00: |██████████████████▌ | 552 kB 6.4 MB/s eta 0:00: |███████████████████ | 563 kB 6.4 MB/s eta 0:00: |███████████████████ | 573 kB 6.4 MB/s eta 0:00: |███████████████████▌ | 583 kB 6.4 MB/s eta 0:00: |████████████████████ | 593 kB 6.4 MB/s eta 0:00: |████████████████████ | 604 kB 6.4 MB/s eta 0:00: |████████████████████▌ | 614 kB 6.4 MB/s eta 0:00: |█████████████████████ | 624 kB 6.4 MB/s eta 0:00: |█████████████████████ | 634 kB 6.4 MB/s eta 0:00: |█████████████████████▌ | 645 kB 6.4 MB/s eta 0:00: |██████████████████████ | 655 kB 6.4 MB/s eta 0:00: |██████████████████████ | 665 kB 6.4 MB/s eta 0:00: |██████████████████████▌ | 675 kB 6.4 MB/s eta 0:00: |███████████████████████ | 686 kB 6.4 MB/s eta 0:00: |███████████████████████ | 696 kB 6.4 MB/s eta 0:00: |███████████████████████▌ | 706 kB 6.4 MB/s eta 0:00: |████████████████████████ | 716 kB 6.4 MB/s eta 0:00: |████████████████████████ | 727 kB 6.4 MB/s eta 0:00: |████████████████████████▌ | 737 kB 6.4 MB/s eta 0:00: |█████████████████████████ | 747 kB 6.4 MB/s eta 0:00: |█████████████████████████ | 757 kB 6.4 MB/s eta 0:00: |█████████████████████████▌ | 768 kB 6.4 MB/s eta 0:00: |██████████████████████████ | 778 kB 6.4 MB/s eta 0:00: |██████████████████████████ | 788 kB 6.4 MB/s eta 0:00: |██████████████████████████▌ | 798 kB 6.4 MB/s eta 0:00: |███████████████████████████ | 808 kB 6.4 MB/s eta 0:00: |███████████████████████████ | 819 kB 6.4 MB/s eta 0:00: |███████████████████████████▌ | 829 kB 6.4 MB/s eta 0:00: |████████████████████████████ | 839 kB 6.4 MB/s eta 0:00: |████████████████████████████ | 849 kB 6.4 MB/s eta 0:00: |████████████████████████████▌ | 860 kB 6.4 MB/s eta 0:00: |█████████████████████████████ | 870 kB 6.4 MB/s eta 0:00: |█████████████████████████████ | 880 kB 6.4 MB/s eta 0:00: |█████████████████████████████▌ | 890 kB 6.4 MB/s eta 0:00: |██████████████████████████████ | 901 kB 6.4 MB/s eta 0:00: |██████████████████████████████ | 911 kB 6.4 MB/s eta 0:00: |██████████████████████████████▌ | 921 kB 6.4 MB/s eta 0:00: |███████████████████████████████ | 931 kB 6.4 MB/s eta 0:00: |███████████████████████████████ | 942 kB 6.4 MB/s eta 0:00: |███████████████████████████████▌| 952 kB 6.4 MB/s eta 0:00: |████████████████████████████████| 962 kB 6.4 MB/s eta 0:00: |████████████████████████████████| 962 kB 6.4 MB/s
Attempting uninstall: pyproj
Found existing installation: pyproj 1.9.6
Uninstalling pyproj-1.9.6:
Successfully uninstalled pyproj-1.9.6
Attempting uninstall: Shapely
Found existing installation: Shapely 1.6.4.post2
Uninstalling Shapely-1.6.4.post2:
Successfully uninstalled Shapely-1.6.4.post2
Attempting uninstall: geopandas
Found existing installation: geopandas 0.6.3
Uninstalling geopandas-0.6.3:
Successfully uninstalled geopandas-0.6.3
Successfully installed Shapely-1.7.1 geopandas-0.8.1 pyproj-3.0.0.post1
第二种安装方式:
如果上述方法无法安装, 可以在https://www.lfd.uci.edu/~gohlke/pythonlibs/中下载相应的whl文件。如下:
安装osmnx的依赖包
可以按照下列顺序一个个进行安装(包虽然多,但是安装起来很快)
1、descartes
2、folium
3、geopy
4、matplotlib
5、networkx
6、numpy
7、pandas
8、requests
9、pyproj
10、GDAL
11、Fiona
12、Rtree
13、lxml
14、Pillow
15、Basemap
16、geos
17、geopandas
18、Shapely
19、osmnx
下载完之后使用pip install pk_name.whl即可。
测试源码:
In [2]: import osmnx as ox
In [3]: G = ox.graph_from_point((37.79, -122.41), dist=750, network_type='all')
...: ox.plot_graph(G)
Out[3]: (<Figure size 800x800 with 1 Axes>, <AxesSubplot:>)
In [4]: G = ox.graph_from_point((37.79, -122.41), dist=750, network_type='all')
...: ox.plot_graph(G)
执行结果
您可以轻松地请求自治市,县,州或其他地理实体内的街道网络。您还可以传递一个地点列表(例如几个邻近的城市)以在其中创建统一的街道网络。场所列表可以包括字符串和/或结构化键:值场所查询:
In [9]: places = ['Los Altos, California, USA',
...: {'city':'Los Altos Hills', 'state':'California'},
...: 'Loyola, California']
...: G = ox.graph_from_place(places, network_type='drive')
...: ox.plot_graph(G)
执行结果:
加载路网并显示。网络类型“驱动器”将加载汽车可到达的道路。其他可用类型:“all_private”、“all”、“bike”、“drive”、“drive_service”、“walk”。G对象是 MultiDiGraph 的一个实例,它是NetworkX包中的有向图类型。
import osmnx as ox
G = ox.graph_from_place('Sutherland Shire Council', network_type='drive')
ox.plot_graph(G)
四、解决的报错问题
OSMnx不带OSM ID,但是您可以指定是否要城市或州(甚至是which_result):
import osmnx as ox
outline_city = ox.gdf_from_place({'city':'Salzburg'})
outline_state = ox.gdf_from_place({'state':'Salzburg'})
编辑:请注意,自OSMnx v0.15.0起,gdf_from_place和gdf_from_places函数已被弃用,并由geocode_to_gdf函数替换。
https://stackoverflow.com/questions/54789530/osmnx-specify-place-in-gdf-from-place-better
OSMnx路径规划优缺点:
优点:路径规划不需注册,无配额限制,而著名地图API路径规划一般每天限额几千次,要进行大规模研究时可适当考虑。
缺点:图商的路径规划通常会考虑到实际交通情况,但OSMnx做不到,只能考虑物理几何最短路径,高精度分析需求时需注意这一点。
注意:OSM系列数据不能用于涉及我国国境线的地图表达,须遵守法律法规,使用正确、合法的数据。
参考python 引用osmnx
https://www.cnpython.com/qa/56242
https://github.com/gboeing/osmnx/issues/8
https://osmnx.readthedocs.io/en/stable/