查看: 610|回复: 0

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!

[复制链接]
发表于 2024-11-29 10:16:29 | 显示全部楼层 |阅读模式
点击蓝字关注我们

Osmnx:用Python玩转OpenStreetMap地图数据

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-7379

Python搞地理信息分析有福啦!Osmnx这个库简直就是给咱们开发者准备的一把瑞士军刀,它让从OpenStreetMap下载和分析地理数据变得超easy。说实话,没有它我可能还在手动下载那些杂乱的地图数据呢…

1.

安装那些事儿

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-3708

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-8654

pip install osmnx

装这个库可能会卡一下下,别着急,它底层用到了不少地理信息相关的依赖。要是遇到报错,八成是缺了gdal或者rtree这些包,补装一下就好啦~

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-1501

2.

下载地图数据有多简单

python

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-3534
import osmnx as ox

1# 获取北京天安门周边的街道网络

2G = ox.graph_from_address('Tiananmen Square, Beijing, China', dist=1000)

4# 把地图画出来看看

5ox.plot_graph(G)

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-1360

看到没,就这两行代码,北京天安门附近1公里的路网就到手了!这图里的点就是路口,线就是道路。酷不酷?

温馨提示:第一次下载可能会比较慢,建议挂个代理,不然容易超时。

3.

地图分析也不难# 基础统计信息

1stats = ox.basic_stats(G)

2print(f“路网总长度:{stats['street_length_total']:.2f}米”)

3print(f“路口数量:{len(G.nodes)}”)

5# 找最短路径

6origin = list(G.nodes())[0]

7destination = list(G.nodes())[-1]

8route = ox.shortest_path(G, origin, destination)

这些数据都是现成的,想统计路网密度、计算两点之间最短路径,都不用自己写算法,库里全都给准备好啦~

4.

地图数据过滤很灵活# 只要主干道

1tags = {'highway':['primary', 'secondary', 'tertiary']}

2G_main = ox.graph_from_address('Tiananmen Square, Beijing, China',

3                              dist=1000,

4                              custom_filter=tags)

6# 要啥过滤啥

7places = ox.geometries_from_address('Tiananmen Square, Beijing, China',

8                                  tags={'amenity':'restaurant'},

9                                  dist=1000)

不光是道路,饭店、学校、公园这些地理要素也都能轻松获取。OpenStreetMap的标签系统特别强大,想要啥数据玩啥数据。

5.

存档和加载# 保存地图数据

1ox.save_graph_xml(G, filepath='beijing_roads.osm')

3# 读取已存地图

4G_loaded = ox.load_graphml('beijing_roads.osm')

下载的数据记得存到本地,下次用直接加载就好,省得重复下载浪费时间。

温馨提示:这些地图文件可能会比较大,存档前最好压缩一下。别忘了定期清理不用的数据,不然硬盘分分钟就满啦。

今天聊的这个Osmnx用起来贼爽,对地理数据分析感兴趣的小伙伴赶紧去试试。对了,趁着这会儿,赶紧动手实践一下,找个你感兴趣的地方,把它的地图数据下载下来玩玩~

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-2695

点分享

Osmnx,一个下载和分析 OpenStreetMap 数据的神奇Python库!-951

点在看

点点赞
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表