地图可视化库入门:Folium基础、地图创建与保存、添加标记与弹窗、绘制轨迹线
好,咱们正式开始动手了。
这一章,我带你走进 Folium 的世界。说实话,在 Python 的地图可视化库里,Folium 是我用得最顺手的一个。它底层依赖 Leaflet.js,说白了就是帮你用 Python 生成一个漂亮的交互式 HTML 地图。你不需要懂前端,也能做出能缩放、能点击、能展示轨迹的网页地图。
1. 什么是 Folium?
Folium 是一个 Python 库,专门用来生成交互式地图。它的核心思路很简单:你用 Python 写代码,它帮你生成一个 HTML 文件,浏览器打开就能看。
我个人习惯用它来做三件事:
- 快速查看地理数据分布
- 展示 GPS 轨迹或路径
- 制作带标记和弹窗的汇报地图
嗯,这里要注意:Folium 不是用来做空间分析的,它就是个可视化工具。分析的事交给 GeoPandas 或 Shapely,展示的事交给 Folium,各司其职。
2. 安装与第一个地图
安装很简单,一行命令搞定:
pip install folium
然后我们来创建第一张地图。我习惯先指定一个中心点坐标和缩放级别:
import folium
# 创建一个地图对象,中心点设为北京天安门附近
m = folium.Map(location=[39.9042, 116.4074], zoom_start=12)
# 保存为 HTML 文件
m.save('my_first_map.html')
运行完,你会在当前目录看到一个 HTML 文件。双击打开,就能看到一张可拖拽、可缩放的地图。是不是很简单?
3. 添加标记与弹窗
光有地图太单调了。咱们加点标记上去。标记可以是一个点,也可以带上弹窗信息。
import folium
m = folium.Map(location=[39.9042, 116.4074], zoom_start=12)
# 添加一个标记
folium.Marker(
location=[39.9042, 116.4074],
popup='<b>天安门广场</b><br>北京市中心',
icon=folium.Icon(color='red', icon='info-sign')
).add_to(m)
m.save('map_with_marker.html')
这里我用了 popup 参数,点击标记就会弹出一个信息框。你可以放 HTML 标签,比如加粗、换行、甚至图片链接。
我在项目中遇到过一个问题:弹窗内容太长,显示不全。后来发现可以用 folium.Popup 控制宽度:
popup = folium.Popup('这是一段很长的描述文字...', max_width=300)
folium.Marker(location=[39.9042, 116.4074], popup=popup).add_to(m)
4. 绘制轨迹线
轨迹线是地图可视化的重头戏。比如你有一组 GPS 坐标点,想看看走过的路径,用 PolyLine 就能搞定。
import folium
m = folium.Map(location=[39.9, 116.4], zoom_start=13)
# 模拟一条轨迹:从王府井到天安门再到西单
coordinates = [
[39.9142, 116.4074], # 王府井
[39.9042, 116.4074], # 天安门
[39.9112, 116.3764] # 西单
]
folium.PolyLine(
locations=coordinates,
color='blue',
weight=3,
opacity=0.8
).add_to(m)
m.save('trajectory.html')
你想想看,如果轨迹点很多,比如上千个 GPS 点,直接画上去会不会卡?会的。我曾经处理过一条 10 万点的轨迹,浏览器直接崩溃。后来我用了简化算法(比如 Douglas-Peucker),把点压缩到 1000 个以内,流畅多了。
simplify() 方法预处理。
5. 知识体系一览
为了让你更直观地理解本章的知识结构,我画了一张 SVG 流程图:
6. 常用参数速查
我把本章用到的核心参数整理成了一张表,方便你以后查阅:
| 函数/对象 | 参数 | 说明 | 示例值 |
|---|---|---|---|
| folium.Map | location | 地图中心点坐标 | [39.9042, 116.4074] |
| zoom_start | 初始缩放级别 | 12 | |
| folium.Marker | popup | 点击弹窗内容(支持 HTML) | '<b>标题</b>' |
| icon | 标记图标样式 | folium.Icon(color='red') | |
| folium.PolyLine | locations | 轨迹点列表 | [[lat1, lon1], [lat2, lon2]] |
| color | 线条颜色 | 'blue' | |
| weight | 线条粗细 | 3 | |
| opacity | 透明度(0~1) | 0.8 |
好了,这一章的内容就到这里。你学会了创建地图、添加标记、绘制轨迹线,还知道了怎么保存成 HTML 文件。下一章咱们会深入聊一聊地图底图样式和图层控制,到时候你会看到更多好玩的东西。