前言
kepler.gl 是由Uber开发的进行空间数据可视化的开源工具,是Uber内部进行空间数据可视化的默认工具。通过其面向Python开放的接口包 keplergl,我们可以在 jupyter notebook 中通过书写Python代码的方式传入多种格式的数据,在其嵌入notebook的交互窗口中使用其内建的多种丰富的空间数据可视化功能。可以让你不需要任何编程基础,即可实现数据地图的可视化。
Kepler.gl 支持的数据格式:① CSV ② GeoJson ③ Json
项目 GitHub 库地址:https://github.com/keplergl/kepler.gl
海量数据显示
以一份成都市出租车GPS记录数据为例,该数据集已提前清洗完成,仅提取了原始数据集中某一天的部分数据。数据记录了成都市部分出租车在载客时的GPS位置和时间等信息,数据记录的格式为 CSV 格式。
对各个字段逐个解释如下:
- TID:出租车的ID。每辆出租车的TID都是唯一的。
- Lat:出租车状态为载客时的纬度。
- Lon:出租车状态为载客时的经度。
- Time:该条记录的时间戳。如
211846
代表 21 点 18 分 46 秒。
如果使用百度地图JavaScript API:添加点时,由于数据量过大(有80多万条记录),数据加载不出且页面卡顿,虽然百度JavaScript API有一个加载海量点的功能,可以实现快速加载海量点,但可视化效果并不美观。
海量点是不可以自定义点的样式的,只可以通过三个属性去改变点的大小、类型、颜色。
var options = {
size: BMAP_POINT_SIZE_SMALL,
shape: BMAP_POINT_SHAPE_CIRCLE,
color: 'blue'
}
网页使用Kepler.gl
想先试试看效果的话,可以登录官方Demo (速度有点慢,多试试
规划云网站搭了一个镜像,访问会快些。网址:可视化工具(kepler) - 规划云
2020年8月更新:有段时间打开Kepler.gl总是无法Add Data,显示Object is not async iterable,以为是更新后的版本有BUG,就一直改用Python的方式使用。后来想着难道是浏览器的原因(常用Microsoft Edge),换成Chrome浏览器,结果不报错了。把Microsoft Edge更新成新版后,这个问题也解决了。
kepler.gl采用GPU渲染,可以快速的渲染几万个数据点
渲染模式也有很多种(以点为例有热力图、聚类等等
对数据进行处理,可以按时间序列展示(格式HHH:MM:SS
按ID筛选出租车并随时间序列演示播放
python使用Kepler.gl
1.本地安装
pip install keplergl
2.加载地图(jupyter notebook)
from keplergl import KeplerGl
map_1 = KeplerGl()
map_1
3.加载数据(也可以直接在上步运行结果上直接操作
# DataFramed
import pandas as pd
df = pd.read_csv('taxi.csv')
map_1.add_data(data=df, name='data_1')
# CSV
with open('taxi.csv', 'r', encoding="utf-8") as f:
csvData = f.read()
map_1.add_data(data=csvData, name='data_2')
# GeoJSON
with open('taxi.json', 'r', encoding="utf-8") as f:
geojson = f.read()
map_1.add_data(data=geojson, name='geojson')
资源
Kepler官方数据提供:GitHub - uber-web/kepler.gl-data: Kepler.gl Sample Repo
参考
费弗里:在jupyter notebook中利用kepler.gl进行空间数据可视化
其他
Jupyter Notebook 太久没用,好不容易用上了又报错kernel error,网上重装kernel的方法对我的情况没有用,后来采用重装jupyter的方法才终于解决了问题。
pip install --user --upgrade --force-reinstall --no-cache-dir jupyter
Jupyter 默认文件保存路径