您好,登录后才能下订单哦!
# 怎么用Python+Kepler.gl轻松制作时间轮播地图

*图:使用Python+Kepler.gl创建的时间轮播地图效果*
## 一、什么是时间轮播地图
时间轮播地图(Time-Series Map)是一种将时间维度数据通过动态可视化方式展示的地图形式。它通过时间轴控制地图元素的显示,让用户直观观察到数据随时间变化的趋势,非常适合展示:
- 人口迁移轨迹
- 疫情传播路径
- 交通流量变化
- 气象数据演变
- 商业网点扩张过程
传统GIS工具实现这类效果需要复杂编码,而Python+Kepler.gl的组合让这个过程变得异常简单。
## 二、工具准备
### 1. 必需工具
- **Python 3.6+**:数据处理核心环境
- **Jupyter Notebook**:推荐交互式开发环境
- **Kepler.gl**:Uber开源的强大地理可视化工具
- **GeoPandas**:处理地理空间数据
- **Pandas**:数据处理基础库
### 2. 安装依赖包
```bash
pip install geopandas pandas keplergl jupyter
时间轮播地图需要数据包含三个关键要素:
示例数据结构:
城市 | 经度 | 纬度 | 日期 | 人口数 |
---|---|---|---|---|
北京 | 116.40 | 39.90 | 2020-01-01 | 2171万 |
上海 | 121.47 | 31.23 | 2020-01-01 | 2487万 |
import pandas as pd
import geopandas as gpd
from keplergl import KeplerGl
# 读取数据文件
df = pd.read_csv('population_data.csv')
# 转换时间格式(关键步骤!)
df['日期'] = pd.to_datetime(df['日期']).dt.strftime('%Y-%m-%d')
# 转换为GeoDataFrame
gdf = gpd.GeoDataFrame(
df,
geometry=gpd.points_from_xy(df.经度, df.纬度)
)
# 初始化地图
map_1 = KeplerGl(height=600)
# 添加数据
map_1.add_data(data=gdf, name='人口数据')
# 显示地图
map_1
# 保存配置字典
config = {
'version': 'v1',
'config': {
'mapState': {'bearing': 0, 'pitch': 45},
'filters': [{
'name': '日期',
'type': 'timeRange',
'value': ['2020-01-01', '2020-12-31'],
'enlarged': True
}]
}
}
# 应用配置
map_1.config = config
使用Johns Hopkins大学疫情数据集:
covid_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
# 数据重塑为长格式
covid_long = covid_df.melt(
id_vars=['Province/State','Country/Region','Lat','Long'],
var_name='Date',
value_name='Cases'
)
# 在Kepler.gl中选择图层类型为「Heatmap」
# 设置颜色渐变:低值(蓝色)->高值(红色)
# 时间字段选择「Date」
map_1.save_to_html(file_name='time_map.html')
<iframe src="time_map.html" width="100%" height="600px"></iframe>
推荐使用ScreenFlow或Camtasia录制屏幕动画
Q1:时间轴无法正常播放
A:检查时间列是否转换为标准格式,使用pd.to_datetime()
确保类型正确
Q2:数据点不显示
A:确认经纬度范围是否合理,检查是否有超出[-180,180]和[-90,90]的值
Q3:动画卡顿
A:当数据量>10万条时,建议:
- 使用df.sample(50000)
随机采样
- 按地理区域过滤
- 降低时间粒度(按月而非按天)
# 轨迹数据示例
trip_config = {
'visState': {
'layers': [{
'type': 'arc',
'config': {
'animation': {
'enable': True,
'speed': 5
}
}
}]
}
}
通过Python+Kepler.gl的组合,我们只需不到50行代码就能创建专业级的时间轮播地图。相比传统GIS开发方式,这种工作流具有:
✓ 开发效率提升80%以上
✓ 零前端编码需求
✓ 支持百万级数据渲染
✓ 产出可交互的现代化可视化
建议将本文代码保存为Jupyter Notebook模板,后续项目只需替换数据源即可快速复用。点击此处下载完整示例代码。 “`
注:本文示例数据均为模拟数据,实际应用时请替换为自己的数据集。Kepler.gl官方文档见 kepler.gl/docs
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。