作者
ShanHe
翻译
陈亮芬
编辑
Natalie
图1:创建数据可视化的常见过程包括数据收集、数据处理、可视化探索以及分层。
无论是使用框架还是工具,创建交互式可视化都遵循一个类似的过程:数据收集、数据处理、通过基于web的工具如QGIS、Carto和MapboxStudio进行可视化探索,然后利用React、D3.js和Three.js将可视化转换为Javascript,以构建原型。这个过程不仅冗长乏味,也无法保证一定就能获得有用的可视化。在许多情况下,大家都只是有可视化的想法,但并没有时间和人力来实现可视化。
为了让拥有丰富经验和较高技能水平的用户更容易创建有用的数据可视化,我们很自豪地宣布启用开源地理分析工具kepler.gl。建立在deck.glWebGL数据可视化框架之上的kepler.gl,通过快速获取见解以及验证来自地理空间数据的可视化想法,来扩展地图的创建过程。
什么是kepler.gl?
图2:kepler.gl是一个数据无关的、基于web的高性能应用程序,用于大规模的地理空间可视化。
kepler.gl是一个数据无关的、基于web的高性能应用程序,用于对大规模地理位置数据集进行可视化探索。建立在deck.gl之上的kepler.gl可以呈现代表数千个旅途的数百万个点,并动态地执行空间聚合,如图3所示:
图3:kepler.gl可以呈现代表数千个旅途的数百万个点,并动态地执行空间聚合。
通过在一个单一的web界面中显示地理空间数据,kepler.gl帮助用户快速验证想法,并从这些可视化中收集见解。使用kepler.gl,用户可以将CSV或GeoJSON文件拖放到浏览器中,用不同的图层来可视化它,通过滤波和聚合它来进行探索,最后将最终的可视化导出为静态地图或动画视频。不跨多个浏览器,一次也不需要消耗数周的工作,整个试错过程发生在一个用户界面中,而且只需10分钟就完成了!
图4:kepler.glUX流包含5层,包括六边形、圆弧和点等。
kepler.gl使用层作为构建块来创建交互式地图,支持可定制的层创建和编码数据(例如:票价、ETA和时间戳)到可视通道(例如:圆大小、弧颜色和圆圈颜色)和比例函数(例如:线性、分位数和量化)。
图5:kepler.gl的点、弧、热图层(见图的顶部)以及网格、hexbin和提供了丰富地理空间数据分析的多边形层(见图的下方)。
在kepler.gl中,图层是用于编码位置数据的常见可视化类型,使用户能够进行地理空间分析和探索。对于图层的分类,kepler.gl提供基本的点、弧、路径、多边形、网格和2D及3D中的hexbin,如图5所示。例如,一个点层可以用来绘制事件和地点的位置;一个弧层可以用来可视化源地点-目标地点的相关性;一个hexbin或网格层可以用来聚集点的集合(显示其分布情况);一个多边形层可以用来可视化一个地区分布图(以显示该地理区域的聚合统计数据)。
所有层的几何计算都是支持GPU加速的,这不仅使们能够平滑地渲染数百万个点,也使得与传统的制图软件相比起来,kepler.gl是一个更强大的网络工具。
图6:kepler.gl使用3Dhexbin层来聚合点。
除了传统2D的x和y制图平面,kepler.gl引入了3D来编码数据,以支持呈现等距透视视图中的点高度和网格/六边形/多边形高度。高度的启用,使得用户可以更快地检测聚合地图中的异常情况,如图6所示。
图7:kepler.gl可以通过回放时间序列来可视化时空数据。
kepler.gl允许用户将滤波器应用于数据集中的任何指标。滤波器的典型用途包括增加时间回放来可视化时空数据,不包括使用直方图的离群值,以及将数据精炼成更小的集合来比较。上面的图7显示了滤波器如何在地图上显示数据的时间回放。
图8:kepler.gl允许用户通过刷选来探索源地点-目标地点的相关性。
除了常见的基于指标的过滤,kepler.gl提供了一个独特的地理过滤功能:刷选,如图8所示。通过刷选,用户可以高亮显示地图中当前鼠标位置特定半径范围内的弧和点。这个功能特别适用于可视化源地点-目标地点相关性,以便更好地理解不同区域之间的相互连接。
图9:用户可以使用减色混合(左)和加色混合(右)来渲染图层。
kepler.gl不仅允许用户快速浏览数据,它也授权用户创建漂亮的地图。该软件提供了一组低对比度的基本地图(适用于基于地图的可视化),以及各种颜色的调色板,包括来自ColorBrewer的颜色。类似于照片编辑工具,kepler.gl使用不同的颜色混合技术(例如:普通的、加色以及减色的混合)来给地图添加动画效果,如图9所示。
kepler.gl还允许用户通过有选择地隐藏和显示特征(包括标签、道路和地形)来定制基本地图,或者将其移动到现有的数据层之上。这一系列的技术和特效使得用kepler.gl创建地图非常有趣,充满惊喜。
kepler.gl背后的故事
kepler.gl是在deck.gl基础之上构建的,是一个由WebGL赋能的数据可视化库,也是react-map-gl,是用于Mapbox-gl的一个React包装器,这两者都包含在开源Vis.gl套件中(是Uber的数据可视化团队内部开发的)。
kepler.gl是一个使用Redux来管理其状态和数据流的React组件。它可以很容易地嵌入到其他的React-Redux应用程序中,并且可以像任何其他Redux状态一样被定制。
开发人员可以用kepler.gl简单地构建应用程序,仅通过在UI中安装kepler.glReact组件和在它的根减速器中安装kepler.gl减速器。它的前向调度系统允许一个单独的应用程序中安装多个kepler.gl组件,并支持调度外部的kepler.gl组件来自定义操作。kepler.gl是在一个组件依赖注入系统之上构建的,它允许开发者在初始化时用自定义的UI组件交换默认的UI组件。
在Uber,kepler.gl被用作几个导航应用的地图组件,开发者可以根据他们的需要来构建其他组件。我们也希望其他人可以发现kepler.gl的通用性和有用性!
用kepler.gl创建的样本地图
地理分析需要特定领域的知识,也包含许多抽象的术语。有时,对于数据可视化初学者和非技术人员来说,要想处理地理分析相关的数据问题是很困难的。为了帮助用户起步,kepler.gl提供了由我们的团队创建的一组示例地图。
图10:kepler.gl描绘了旧金山和宝岛/耶尔巴岛的海拔等高线。
我们的旧金山等高线图是用sfdata.org的等高线数据创建的。它利用一个多边形层来绘制等高线,并根据海拔来绘制它们的颜色,如图10所示。这个例子代表了在地理信息系统(GIS)研究中普遍使用的典型制图的地图创建。
图11:纽约市的人口普查图描绘了年城市人口的数量。
如图11所示的纽约市人口图是年的人口普查数据。它蓝色到橙色的分色标度对应关联着从最小到最大的人口规模。这张地图还增加了基于人口的多边形高度,使得发现异常值变得更加容易。
图12:英格兰和威尔士居民的源地点-目的地点地图使用3D弧线来可视化通勤模式。
另一个源地点-目的地点地图是使用英格兰和威尔士居民的通勤数据创建的,如图12所示。这张地图使用双色弧来连接市民住宅(黄色)和工作场所(品红色)的位置。它的鸟瞰图显示了一些令人惊讶的长途通勤,比如从伦敦到伦敦以北-公里的城镇。
下一个议题
两年前,kepler.gl作为一种内部产品被创造出来,现在它已经从一个单一的页面应用演变为一个强大的地理分析和可视化框架。它创造了一个一体化的地理空间数据探索和可视化环境,并被广泛应用于Uber内部,为工程师、分析师和数据科学家提供了先进的地理空间分析技术。
通过开源kepler.gl,不同经验和技术水平的用户现在可以使用免费软件,帮助他们构建和定制有影响力的数据驱动的地图。更重要的是,软件反馈使我们能够培养一个支持kepler.gl未来发展的开发者社区。
在接下来的几个月里,我们设想了kepler.gl的两大改进:
更强大的探索功能:为了产生更深入的见解,我们计划构建框架来支持在可视化仪表板上添加额外的定制图表和小部件。这一附加功能将促进类似于tableau的探索,将地图和图表之间的交互联系起来。
扩展其地理分析能力:通过添加地理空间数据操作,如连接、缓冲、交叉和统一;还有像多边形的点聚合一样的支持层操作;以及通过绘制地图来过滤功能,使得kepler.gl能够支持更大的数据集。在今年早些时候的测试版中,世界各地的公司都采用了kepler.gl来做他们自己的研究。
数据科学家、建筑师、可视化专家以及来自Mapbox、Limebike、Airbnb、SidewalkLabs、HEREtechnologies、AtkinsGlobal、Cityswifter、UBILabs和000kms等公司的工程师们在kepler.gl的简单性、功能和速度中发现了巨大的价值。
我们也看到学者们在使用这个软件,比如来自里约热内卢EstáciodeSá学校的建筑系学生DiegoCrescêncio。Diego在他的研究中处理了kepler.gl的公开犯罪数据。为更好地了解城市设计研究的建筑环境,他一直在使用关于城市范围内犯罪率的2D、3D可视化数据,以了解城市设计如何改善贫民窟的安全。根据Diego的说法,巴西的城市居民很少使用地理分析软件。自从采用kepler.gl,Diego和他的教授以及UNIGIS网络上的其他合作者已经能够对这个项目进行有力而快速的数据分析。
图13:Diego和他的团队使用kepler.gl为巴西的城市设计研究来可视化开放数据。
我们希望你喜欢使用kepler.gl,我们期待着创建漂亮的、数据驱动的地图!请通过我们的GitHub知识库或在Twitter上使用#keplergl话题标签来加入kepler.gl社区。
如果你有兴趣帮助我们创建下一代的Uber数据可视化套件,可以考虑加入我们,成为我们的一份子!