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