数人之道原创文章,转载请联系我们
在开源的地理空间信息数据可视化工具中,大部分都需要一定的编程基础和技巧才能使用。而今天要介绍的这款工具,不需要任何编程基础,即可实现地理空间数据的可视化,而且效果十分炫酷。
这款名叫 kepler.gl 的开源工具,是基于 Uber 的大数据可视化开源项目 deck.gl 创建的,依托于 WebGL 强大的图形渲染能力,可以在浏览器端以多种形式轻松地展示大规模的数据集。
通过 kepler.gl 面向 Python 开放的接口包 keplergl,我们可以在 Jupyter Notebook/Lab 中通过编写简单的 Python 代码的方式传入多种格式的数据,在其嵌入 Notebook/Lab 的交互窗口中使用其内建的多种丰富的空间数据可视化功能。也可以直接使用其官网上的 demo 工具,导入数据后直接配置可视化效果。
/ 在官网上使用 /
此使用方法无需编写任何代码,即可实现地理空间数据可视化!
直接访问以下官网网站地址:
https://kepler.gl/demo
上传数据文件(支持的格式为 CSV, Json, GeoJSON)后即可在线进行地理空间数据可视化配置及输出(下面会详细介绍各项功能的配置操作)。
/ 在 Jupyter 中使用 /
此方法需要在 anaconda 中安装 Python 的 keplergl 模块库,并通过 Jupyter Notebook/Lab 的交互窗口进行使用。
1
使用前准备
使用前需要安装 keplergl 的 Python 库及其相关的依赖包。
1.1
安装 keplergl 模块
在 Anaconda Prompt 工具中输入以下命令安装 keplergl 模块,相关依赖包会自动下载并安装:
代码语言:javascript复制conda install -c conda-forge keplergl
由于依赖包相当多,安装需要等待一段时间。
1.2
安装 jupyter labextension
若使用 JupyterLab,还需要安装一个扩展插件,在 Anaconda Prompt 工具中输入以下命令进行安装:
代码语言:javascript复制jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter
安装完成后,重启 Anaconda,再打开 JupyterLab 即可使用。
2
初始化地图窗体
实例化一个 KeplerGl() 对象,查看初始化的地图对象操作窗口。
【参数介绍】
KeplerGl() 的参数:
- height:int 型,展示的地图窗体的高度,默认为 400px
- data:dict 型,传入地图中的字典型数据集
- config:dict 型,地图参数配置信息
- show_docs:bool 型,设置是否显示用户指引文档的地址,默认为 True, 即显示
【代码】
代码语言:javascript复制from keplergl import KeplerGl
# 加载初始化地图窗体
map_a = KeplerGl(height=800, show_docs=False)
map_a
【结果】
出现 kepler.gl 的初始化地图操作窗口,点击左上角的小箭头可以展开一个功能丰富的配置面板:
图2-1:kepler.gl 的初始化地图窗体
这个功能面板就是用来进行可视化配置的,下面会对其进行详细介绍。
3
加载地理数据文件
kepler.gl 支持 4 种数据格式,分别是:CSV, GeoJSON, DataFrame, GeoDataFrame. 其中部分地理数据可视化类型只支持 GeoJSON 格式的数据。
kepler.gl 会对 csv 格式的文件的字段类型进行推断,因此一定要在代表经纬度信息的字段名称中加上对应的 lat、lng 部分,格式有三种:
- <name>_lat, <name>_lng
- <name>_lat, <name>_lon
- <name>_latitude, <name>_longitude
其中 <name> 是自选的变量名称。若不按此格式命名经纬度字段名称,导入数据后不能自动识别为可能的图形对象,需要手动进行选择。
我们使用在《汤加火山喷发后,分析全球火山分布,发现最多火山的地区在这里!》中下载的火山数据集 csv 文件,通过 Pandas 模块读取数据并存入 DataFrame 中,然后利用 keplergl 库的 add_data() 方法将数据信息加载到地图图层中。
【参数介绍】
add_data() 的参数:
- data:传入地图中的数据集,可以是 CSV, GeoJSON, DataFrame
- name:数据集传入图层中显示的名称
【代码】
代码语言:javascript复制import pandas as pd
# 读入数据文件
df = pd.read_csv("volcano_keplergl.csv",encoding='ANSI')
# 创建新的地图窗体,并加载地理数据
map_b = KeplerGl(height=800, show_docs=False)
map_b.add_data(data=df, name="volcano")
map_b
【结果】
图3-1:加载地理数据信息到 kepler.gl 地图中
地理数据信息加载到地图中后,会默认选择最合适的数据图层可视化类型展示其地理位置。
4
地理空间数据可视化配置
与 pyecharts, matplotlib, folium 等可视化库的配置方式不同,在 kepler.gl 中不需要编写颜色、图标、样式、触发事件等参数配置代码,只需要在页面上的功能面板中进行可视化配置操作即可,配置的参数可以复用,真正实现低代码的使用方式。
下面介绍部分常用功能的配置操作。
4.1
Layers(图层)功能
数据展示的图层, 位于底层地图图层之上。用以设置导入数据后,数据图层显示的样式。多套数据可通过图层叠加显示,也可以自行创建新图层。
数据图层有多达 40 种配色方案可供选择(每种配色方案会根据所选择的 steps 数量进行相应调整),也可以自定义配置;可设置配色的基准字段(这里设置为 region)、透明度:
图4-1-1:设置 kepler.gl 数据图层配色方案
可针对每个数据图层配置其可视化的类型,不同类型可设置的内容不尽相同。例如标点型可以设置标记点半径大小、轮廓线条颜色等;路径型可以设置路径线条粗细、海拔比例等:
图4-1-2:设置 kepler.gl 数据图层可视化类型
Arc 和 Line 路径型可视化可在地图上显示路径信息,前提是需要有两组经纬度坐标数据,即起点坐标和终点坐标:
图4-1-3:kepler.gl 地图上显示路径信息
部分可视化类型(如 Hexbin, Cluster)还可以通过高度(海拔)数据,绘制出 3D 数据地图:
图4-1-4:kepler.gl 绘制 3D 数据地图示例一
图4-1-5:kepler.gl 绘制 3D 数据地图示例二
图4-1-6:kepler.gl 绘制 3D 数据地图示例三
图4-1-7:kepler.gl 绘制 3D 数据地图示例四
【实战】
在原火山数据集中加入第二组经纬度数据,实现路径信息展示功能。
图4-1-8:kepler.gl 显示路径信息实战
由于加入的第二组终点坐标数据是随机生成的,因此路径比较凌乱、无规则,大家可以使用更加真实的数据来实现路径展示。
4.2
Filters (过滤器)功能
用以过滤图层中的数据。
数值型数据,可选择数值范围;字符串型数据,可通过选择对应值筛选;时间型数据,可添加时间轴,配合路径信息,还可以实现时间轮播路径动画。
图4-2-1:kepler.gl 图层数据过滤
图4-2-2:kepler.gl 实现时间轮播路径动画
【实战】
在原火山数据集中加入第二组经纬度数据的基础上,再加入时间信息,通过时间过滤条件,实现时间轮播路径动画功能。
图4-2-3:kepler.gl 数据图层加入时间过滤条件
图4-2-4:kepler.gl 实现时间轮播路径动画实战
在数据图层中加入时间类型字段的过滤条件后,图层会自动生成轮播时间轴,点击播放按钮即可按时间轴顺序生成路径信息进行轮播。可应用在出行、物流、航线等大数据展示中。
4.3
Interaction(交互)功能
设置触发事件的交互数据信息。
可设置悬停在目标上显示的数据信息内容,设置是否显示经纬度坐标信息,设置是否允许通过地理编码器进行地点搜索等。
图4-3-1:设置 kepler.gl 触发事件交互信息
这里设置了悬停显示火山名称、类型、最后一次喷发年份、所属国家、地区及经纬度坐标信息,允许通过地理编码器进行地点搜索。
4.4
Base map(底图)功能
设置底层地图样式及底层地图的图层顺序和图层内容。
目前有五种地图样式可供选择,也可以指定外部或自定义的地图样式;可设置地图图层的显示内容及顺序。另外 3D 地图还可以设置建筑物的颜色。
图4-4-1:kepler.gl 底层地图样式及图层设置
每个功能中还有很多丰富好玩的配置,大家可以自行探索。
5
获取地图配置信息
通过 .config 可获取当前地图中的所有配置信息,并以 json 格式返回结果。提取出来的 config 参数,可以在初始化另一个新窗体时直接传入其图层中,以复用到其他地理数据上。
【代码】
代码语言:javascript复制# 显示图层配置信息
map_b.config
# 初始化新窗体,并导入数据及 map_b 的配置信息
map_c = KeplerGl(height=800, data={"volcano_new": df}, config=map_b.config, show_docs=False)
map_c
【结果】
图5-1:输出 kepler.gl 图层配置参数信息
图5-2:将数据及图层配置信息复用至新图层中
火山数据集及 map_b 的图层配置参数信息成功导入到新的图层中。
6
导出地图文件进行可视化配置
通过 kepler.gl 的 .save_to_html() 方法,可将地理空间数据可视化结果生成 html 文件,进行进一步的配置和使用。
【参数介绍】
.save_to_html() 的参数:
- data:dict 型,地理数据,若为空则使用当前地图中的地理数据
- config:dict 型,地图配置信息,若为空则使用地图中当前的配置
- file_name:str 型,导出的文件名称,默认为 keplergl_map.html
- read_only:bool 型,设置导出的文件是否隐藏配置面板,默认为 Fasle,即支持配置
【代码】
代码语言:javascript复制# 导出地理空间数据可视化地图文件
map_c.save_to_html(file_name="volcano_keplergl_map.html")
【结果】
图6-1:导出的 kepler.gl 地图文件
接下来关闭 Jupyter,在工作目录下找到已经导出的 html 文件直接打开,然后就可以在浏览器里进行地(愉)理(悦)数(欢)据(快)的可视化操(玩)作(耍)了。