问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OSMnx应用指南:创建交互式地图

创作时间:
作者:
@小白创作中心

OSMnx应用指南:创建交互式地图

引用
CSDN
1.
https://blog.csdn.net/weixin_45812624/article/details/140546916

OSMnx是一个强大的Python库,用于处理OpenStreetMap数据。它可以帮助用户轻松获取和分析城市的街道网络、建筑物、公共交通设施等地理信息,并创建交互式地图。本文将通过一个具体示例,展示如何使用OSMnx创建一个包含街道、建筑物、公交站、地铁站和公园的交互式地图。

环境准备

本示例使用Python 3.11环境,需要安装以下库:

  • OSMnx
  • NetworkX

可以通过以下命令安装:

pip install osmnx networkx

代码实现

导入必要的库

import osmnx as ox
import networkx as nx

定义地点和地图底图样式

place = "Siming Qu, Xiamen,Fujian,China"
tiles = "cartodbpositron"
mk_buildings = {"radius": 6}  # 建筑物标记的大小
mk_bus_stops = {"radius": 4, "color": "red"}  # 公交站点标记的大小和颜色
mk_parks = {"color": "green"}  # 公园颜色配置
mk_subway_stations = {"color": "blue", "radius": 5}  # 地铁站标记的大小和颜色

获取街道网络和建筑信息

G = ox.graph_from_place(place, network_type="drive", truncate_by_edge=True)
gdf_buildings = ox.features_from_place(place, tags={"building": True})

获取公园信息

parks = ox.features_from_place(place, tags={"leisure": "park"})

获取公交站点信息

bus_stops = ox.features_from_place(place, tags={"highway": "bus_stop"})

获取地铁站信息

subway_stations = ox.features_from_place(place, tags={"railway": "station"})

绘制包含建筑、街道网络的地图

m = gdf_buildings.explore(tiles=tiles, tooltip=["name", "height"], marker_kwds=mk_buildings)
streets = ox.graph_to_gdfs(G, nodes=False)
streets.explore(m=m, color="grey")

将公交站点和公园信息叠加到现有地图上

bus_stops.explore(m=m, tooltip="name", marker_kwds=mk_bus_stops)
parks.explore(m=m, color="lime", tooltip="name", marker_kwds=mk_parks)

将地铁站信息叠加到地图上

subway_stations.explore(m=m, tiles=tiles, color="blue", tooltip="name", marker_kwds=mk_subway_stations)

保存地图到HTML文件

output_file = "siming_district.html"
m.save(output_file)
print(f"地图已保存为 {output_file}")

结果展示

运行上述代码后,会生成一个HTML文件,通过浏览器打开可以看到如下的交互式地图:


点击地图上的不同元素,可以查看具体的属性信息。例如,点击公园可以显示公园的名称。

总结

本文通过一个具体示例,展示了如何使用OSMnx库创建包含街道、建筑物、公交站、地铁站和公园的交互式地图。通过调整place变量的值,可以轻松将地图应用于其他城市或地区。此外,通过修改标记的大小、颜色等属性,可以实现个性化的地图可视化效果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号