利用OSMnx创建交互式地图

利用OSMnx创建交互式地图,用于探索城市的街道网络、特定路线、建筑物、公共交通设施等,以及如何根据不同的属性进行可视化展示,允许用户根据不同的属性对地图进行定制化的可视化展示。例如,用户可以根据街道类型(如高速公路、主干道、人行道等)为不同的街道设置不同的颜色或线宽;或者根据建筑物的用途(如住宅、商业、工业等)为不同的建筑物设置不同的填充颜色或图标。这种定制化的可视化展示有助于用户更直观地理解城市的不同组成部分和它们之间的关系,交互式地图允许用户通过缩放、平移、点击等操作来探索地图上的不同元素,并获取有关这些元素的详细信息。此外,用户还可以添加自定义的图层、控件和工具,以进一步丰富地图的功能和用途。

完整代码#运行环境 Python 3.11

# 导入必要的库
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,通过浏览器直接打开HTML,可以看到图上展示了公交站、地铁站、公园、属性标签为'' 建筑物''的数据,如果需要调整地址把该行改成想要的就行,place = "Siming Qu, Xiamen,Fujian,China",包括配色、大小等属性都可以按需调整;

点击地图可以显示具体信息,例如公园:南湖公园;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值