惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
博客园 - Franky
D
Docker
Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Last Week in AI
Last Week in AI
U
Unit 42
F
Fortinet All Blogs
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
P
Proofpoint News Feed
月光博客
月光博客
G
Google Developers Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Kepler.gl 不需要一行代码!玩转酷炫的数据地图 - 少数派
2019-07-13 · via 少数派

在处理数据的过程中,如何“优雅”的展示这些数据一直是一个重要的技巧。而为基于地理坐标为数据打点更是一个重要的技能。在过去,我们的常见的做法是通过诸如 Stata、R、或者是 Python 这些工具来进行这一步的。而这些方法无一例外,都需要对一定的编程技巧。此次我们介绍的数据可视化工具,可以让你不需要任何编程基础,即可实现数据地图的可视化!

一、简介

Kepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.

Kepler.gl 是一个图形化的数据可视化工具,基于 Uber 的大数据可视化开源项目 deck.gl  创建的 demo app。

Github项目地址:https://github.com/keplergl/kepler.gl/

Kepler支持的数据格式

Kepler.gl 支持 3 种数据格式,分别是: CSV、JSON、GeoJSON 。部分地图种类只支持 GeoJSON 格式的数据。

1. 关于 CSV 文件

CSV 是常见的数据格式。它通过分隔符的形式,以存文本的储存数据。我们常用的 Excel 默认保存的是 xlsx 格式或者 xlsxs 格式,可以通过另存为的方式保存为 CSV 文件。

通过另存为 保存为 .csv 

关于在 Kepler.gl 中使用 CSV 文件,这里还需要说明一下:

  • Kepler.gl 目前对中文支持并不那么好,所以变量名称最好用英文,不然在显示时会乱码。导致自己都不知道这组数据是哪个变量。
  • Kepler.gl 的地理信息即经纬度信息需要经度一个组,纬度一个组。并且,Kepler.gl 能够自动识别经纬度信息,不过需要你在给经纬度命名时采用:<name>_lat 和 <name>_lng 或者 <name>_latitude 和 <name>_longitude,或者 <name>_lat and <name>_lon。 其中<name>是自选的变量名称。
  • 关于 CSV 文件的更多说明,可参加官方文档的内容:https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md

2. 关于 JSON 文件

JSON 格式是常见的用于数据传输的文件格式。语言描述容易显得太过复杂,我们举一个简单的例子(一看就会的那种):

一份 JSON 格式文件内的内容是这样的:

{
	"people": [
		{
			"firstName": "王",
			"lastName": "小明"
		},
		{
			"firstName": "陈",
			"lastName": "小红"
		}
	]
}

那么它其实可以分为:

这么看,大概有些人已经猜到了,其实这个数据列成表格就是这样的:

这就是JSON 格式文件所实现的功能。可以简单的理解为将“一个表格的数据,用文字表述”。在一些情况下,你也可用使用 JSON 格式数据。但其实更多情况下,需要使用的是 CSV 或者 GeoJSON,这里介绍了 JSON 那么下文中 GeoJSON 的内容就更容易理解。

2. 关于 GeoJSON 文件

而 GeoJSON 是常见的一种地理信息的文件格式,在原有的 JSON 格式基础上,添加了地理信息相关的内容。如何添加的呢?就是基于大家约定俗成的规范,然后声明地理位置信息。其实 GeoJSON 是 JSON 的一个子集。基本的语法结构上,两者其实是一样的,都是一个 Key 对应一个 Value 。但是不同点在于,GeoJSON 通过特定的 key 来确定特定类型、特点功能的 Value。

为了理解 GeoJSON ,我们来看一个实例:

"type": "Feature",

"properties": {

"adcode": 110000,

"name": "北京市",

"center": [

116.405285,

39.904989

],

"centroid": [

116.41989,

40.189913

],

"childrenNum": 16,

"level": "province",

"subFeatureIndex": 0,

"acroutes": [

100000

],

"parent": {

"adcode": 100000

}

},

"geometry": {

"type": "MultiPolygon",

"coordinates": [...(篇幅限制,省略)...

]

}

}

这是一份记录北京市信息的GeoJSON文件。首先,我们能够看到,最外层是三个Key:

「type」:type确定的是其下 key 的类型;

「properties」:包含的各种「变量」和「值」。例如案例中:“adcode”,表示邮编,北京为110000;“na me”,表示名称,北京市;“center”为地理中心,经纬度坐标需用\[]包裹住,这样才是完整的一组数据。其他信息也是类似的,这里不再赘述;

「geometry」:则是表示几何信息。几何信息有多种类型,“type”标注了这些信息的种类,具体的主要有以下几种:

- Point 即点图。相当于在地图上画一个点。

- Multipoint 即多点图,用于地图打点,可以包含多个点的集合。

- LineString 即线。相当于在地图上画一条线。

- MultiLineString 同理,多线。

- Polygon 多边形。在地图上用一个多边形围住一个范围。

- MultiPolygon 多组多边形。

- GeometryCollection 几何集合。(相当于多层嵌套)

其中type确定的是其下 key 的类型。 “Feature” 表示 其对象为“特征对象”。“特征对象”必须包含 “properties”和“geometry”两个类型的成员,两者之间并没有顺序的差异。

更多信息可参考:https://zh.wikipedia.org/wiki/GeoJSON

二、上手使用

说了那么多关于数据格式的内容,终于可以一起上手了。如果没有现成的数据需要分析,那么可以先使用 Kapler.gl 提供的 Sample Data 学习一下这款软件如何操作:

sample data

网站很贴心的提供了一些数据集,供大家学习上手。其中有诸如加利福尼亚地震数据、2017年美国失业率数据等内容,这些数据都提供下载。其中部分数据采用的是 GeoJSON  格式的数据,可供大家下载学习(就是想做啥图,就把样例中的 GeoJSON 数据下载下来,参考格式在替换上自己的数据🌚)。

1. 呈现效果

我们选择一了地震数据集来做演示。首先简单介绍一下这个数据:

地震数据

这个数据集主要包括了时间信息(DataTime)、地理位置信息(Latitude 和 Longitude)、以及其他描述地震的信息(震级、震源深度等)。

所以,这些数据在数据地图中他是如何展示的呢?

Kepler.gl 根据地理位置信息和地震信息标注点的位置和大小颜色。然后更加下方的时间轴范围展示一张图里显示的数量。并且可以根据时间轴“动起来”,效果如下:

看完了效果,我们大致能够了解 Kepler.gl 能够将数据可视化实现到怎么样的程度(其实每一个案例的呈现都非常优秀)。接着让我看看更为具体的编辑界面吧,这才是我们需要学习的内容。

2.工具栏

Kepler.gl 设置项分为4个工具栏,左其分别是 Layers (图层)、Filters (过滤)、Interaction(交互)、Base map (底层地图)。

四者的作用可以概括为:

Layers (图层):数据展示的图层, 位于底层地图上面。就是我们导入的数据后,控制样式的图层。

Filters (过滤器):用以过滤数据。例如,上图中时间轴就是一个过滤器,用以过滤时间段,显示相同时间段的数据。

Interaction(交互):即鼠标移动时显示的数据信息。

Base map (底层地图):就是最底层地图样式。有4种样式可选。

1.1  Layers 的设置

首先来看图层的具体设置。图层的概念与常见的图片编辑软件是一样的,例如你可以在底层添加显示地图颜色的图层,在上层添加显示一个光束的图层。分别展示数据大小、流向等信息。

具体来说:

通过添加按钮可以添加多个图层,上面的图层会遮盖下面的图层。可以通过左边的眼睛按钮选择显示或者隐藏图层。

鼠标移动到图层横条后可以对其进行排序(按住左边几个小方格点阵,拖拽即可)、重命名或者删除等操作。

点击向下的箭头,可以展开一个图层的具体设置。

这里最基本的,选择需要的地图类型(Layer Type / Type):

一共有9+2(H3和3D图)种。每一种地图的类型对于数据要求也不同。例如 Arc 和 Line 图,就需要有两组经纬度坐标,即起止地的坐标。 Polygon 就要求使用 geojson 格式的文件。数据格式可以参照前文提到的方法,下载 Sample 数据做参考。本文就以最基础的 Point 点图为例,介绍一下具体的设置项,抛砖引玉方便读者入门。

选择了 Point 后,如果没有自动匹配经纬度,那么需要手动选择经纬度变量:

- lat:纬度  (加\* 为必填项目)

- lng: 经度

- altitude :海拔 (选填项)

接下来是颜色设置,Kepler.gl 提供了丰富的色彩设置选项。首先是有多种组合完成的配色方案可供选择。我们还能够选择最高20种颜色的搭配。

- color based on 的选项是决定色彩的变量。例如地震案例中选择 magnitude (级数)来确定颜色。

- color scale 选择颜色的分布形式。有 quantize 和 quantile 两组分布方法。

- opacity 透明度。控制点的透明度。

接着是着色半径,就是控制具体点的大小。太小了容易看不见,太大了容易互相遮挡,所以还是需要适当调整的。

- radius range 设置半径范围

- radius based on 半径依据。案例中依然是按照震级来的

- fixed radius to meter 确定到地图实际的米数。就是将点标记到实际地理位置上按比例设置半径。

- draw outline 描边:打开这个按钮会将实色圈变为空心的圈

- High Precision Rendering 高精度绘图:打开按钮会使得绘图精度更高,也会消耗更多资源。

- enable height 展示高度:部分种类的地图还提供高度选项,这样就能绘制出3D的数据地图了,如图:

这是用震源深度最为作为高度的数据地图

1.2 Filters 过滤器的设置

Filters 除了为地图增加时间轴外,更为主要功能还是针对某一变量进行数据的过滤,例如过滤掉浅源的地震:

当然,最常见的还是用时间轴过滤器来制作动图效果。

1.3 Interactions 设置交互时显示的信息

Interactions 其实就是设置鼠标点击时,显示的样式。通过 dataset 中的变量,选择添加显示的内容。

1.4 base map 底层地图样式的设置

最后的 Base map 其实也很简单,选择深色或者浅色主题的底层地图,以及在地图上呈现的内容多少:

最后,如果还有其他问题,可以参考 Kepler.gl 的官方说明文档:https://github.com/uber/kepler.gl/blob/master/docs/a-introduction.md


注1:本文首发于 「数据Seminar」 公众号

注2: 本文撰写于去年7月,Kepler.gl 在这一年中不断进化,在一些名称上也有所变化,具体可参考 Kepler 的 RoadMap:https://github.com/keplergl/kepler.gl/wiki/Kepler.gl-2019-Roadmap