推荐一款低代码炫酷的地理空间数据可视化工具

2022-02-14 11:34:25 浏览数 (1)

数人之道原创文章,转载请联系我们

在开源的地理空间信息数据可视化工具中,大部分都需要一定的编程基础和技巧才能使用。而今天要介绍的这款工具,不需要任何编程基础,即可实现地理空间数据的可视化,而且效果十分炫酷。

这款名叫 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 文件直接打开,然后就可以在浏览器里进行地(愉)理(悦)数(欢)据(快)的可视化操(玩)作(耍)了。

0 人点赞