前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用kepler.gl可视化地理空间数据

使用kepler.gl可视化地理空间数据

作者头像
磐创AI
发布2020-07-22 16:02:06
3.9K0
发布2020-07-22 16:02:06
举报
文章被收录于专栏:磐创AI技术团队的专栏

磐创AI分享

作者 | ABHISHEK SHARMA

编译 | VK

来源 | Analytics Vidhya

概述

  • 地理空间数据现在是一座金矿,我们使用kepler.gl这个python库可视化地理空间数据
  • 学习如何使用kpler.gl可视化地理空间数据,并进行实际案例研究

介绍

请查看这张完全用Python创建的美观的纽约三维地理空间地图:

一个精美的图片!我特别喜欢城市周围的线条,它们交织在一起,呈现出一幅非常精确的城市地图的实际面貌。这个可视化地理空间数据是我最喜欢的项目之一。

使用地理空间数据有很多应用程序——位置跟踪、基于位置的营销和广告,将你与最近的骑手或送货员联系起来,以及其他用例。事实上,这一领域已经开始在业界崭露头角,所以现在是了解这一领域的最佳时机。

在这里,我们将学习如何使用名为kepler.gl的python库。我们很快就会看到,它是处理地理空间数据的强大工具。我们会在一个数据集上应用kepler.gl,让你了解如何实现它。

目录

  • 什么是kepler.gl
  • 安装kepler.gl
  • 可视化纽约市出租车出行
  • 可视化纽约市人口普查区域
  • 保存地图

什么是kepler.gl

你以前听过kepler(开普勒)这个词吗?这可能听起来很熟悉,你可能会想到:

望远镜开普勒

或者他:

德国天文学家开普勒

你说得对,但是我们两个都不是。这是一个Python库,用于可视化地理空间数据。

❝kepler.gl是由Uber的可视化团队创建的一个基于web的高性能工具,用于大规模地理空间数据集的可视化探索。 ❞

它建在deck.gll上,这是Uber对大型数据集进行可视化探索性数据分析的另一个框架。最令人惊奇的是kepler.gl它也可以在我们的Jupyter中使用,这使得它成为数据科学界一个方便的工具。

这是我的地理空间数据可视化工具。是的,我们将创建我们在简介部分看到的可视化。

安装kepler.gl

kepler.gl默认情况下不会安装。因此,必须在计算机上手动安装。安装它类似于任何其他Python库-只需运行以下命令:

代码语言:javascript
复制
!pip install keplergl

现在已经准备好进入地理空间可视化的世界了。

可视化纽约市出租车出行

理解问题陈述

❝问题陈述:出租车是纽约市的重要组成部分。每天很多人都用它在城市里移动。因此,重要的是将这些移动可视化,以便进一步分析。 ❞

所以,我们必须可视化纽约的出租车出行。kepler.gl非常适合这个任务。

数据描述

我们知道我们的最终目标,但如果没有数据,我们就无法达到目标,所以让我们了解我们拥有的数据集。数据包括2015年1月15日的出租车记录。让我们导入我们的数据集并查看它:

代码语言:javascript
复制
import pandas as pd
df=pd.read_csv('kepler.gl-data/nyctrips/data.csv')
print('Shape=>',df.shape)
df.head()

数据集包含12列和97000多行。让我们看看数据集中的列:

代码语言:javascript
复制
df.columns

我们的数据集包括出租车接送时间、纬度、经度、行程距离、车费、小费、乘客人数和支付给司机的总金额等功能。现在,让我们检查一下数据集是否包含任何空值:

代码语言:javascript
复制
df.isnull().sum()

太好了!我们的数据集中没有任何空值。我们现在准备将这些数据可视化。

绘制底图并添加数据集

现在我们知道了数据集,所以让我们开始使用kepler.gl。我们首先必须使用「KeplerGl()」 类创建一个映射对象。这可以采用3个参数:height(可选)、data(可选)和config(可选)。height高度,data是要添加到映射的数据,config是kepler.gl的配置:

代码语言:javascript
复制
from keplergl import KeplerGl
map1=KeplerGl(height=500)
map1

视频:https://youtu.be/5CtxkzZ-3VY

太好了!是时候给它添加数据了。数据可以添加到kepler.gl使用map对象的add_data()方法映射。

这个方法有两个参数:data和name。它接受CSV、GeoJSON、Pandas和geopandas数据帧形式的数据。name参数用于在映射的配置中为数据集分配名称:

代码语言:javascript
复制
map1.add_data(data=df,name='New York City Taxi Trips')

视频:https://youtu.be/nSq3-Fes9ME

你可以看到向地图添加数据是多么容易。以及kepler.gl它自动识别数据集中的模式并为其创建绘图。如果你注意到了,地图左边有很多控件。我们将在下一节中逐一介绍。

自定义kepler.gl的地图

我们必须编写一些代码来创建地图并向其中添加数据,但现在我们不必编写一行代码来创建可视化效果和执行数据分析。这使得它成为最适合初学者的可视化工具。

自定义地图和执行数据分析总共需要了解四件事:

  1. 图层
  2. 过滤器
  3. 交互
  4. 底图
图层

让我们从了解图层部分开始。图层部分包含修改图层的选项。现在,你可能想知道什么是图层?kepler.gl地图中的一层是可视化的一层,可以根据用例创建、修改和删除。下面我演示了如何修改图层。

视频:https://youtu.be/fZEz11w-Xyo

kepler.gl提供了许多类型的图层,你可以创建用于数据分析。你可以在这里读到更多关于他们的文档:https://docs.kepler.gl/docs/user-guides/c-types-of-layers。

你刚刚看到修改图层是多么容易。稍后你将看到使用kepler.gl. 现在你知道如何修改图层了,让我们了解一下过滤器。

过滤器

正如你可能已经猜到的,过滤器用于过滤数据,这正是该功能存在的原因。在数据分析过程中,我们经常需要过滤数据集。下面我根据旅行距离过滤了地点。

视频:https://youtu.be/sOugr6lsP3U

你可以看到上面,我已经创建了一个5英里的窗口,并根据它过滤了出租车取车点。有许多其他类型的过滤器,你可以使用基于选定列筛选数据。

交互

交互面板用于修改鼠标指针和地图之间的交互。你可以使用它修改工具提示,向地图添加地理编码器,添加画笔以选择地图的一部分,并获取鼠标指针在纬度和经度中的位置坐标。

视频:https://youtu.be/ujaGtilP8Iw

在上面的视频中,我修改了工具提示,还使用了交互面板的其他功能。当你希望在地图上显示光标移动的更多信息时,这些功能在场景中非常有用。现在让我们看看“底图”选项卡。

底图

“底图”选项卡具有修改底图的选项。但底图是什么?

底图是在kepler.gl所有图层的底图 还记得我们以前创建地图对象并将其可视化的时候吗?那是底图。底图在表示信息时非常有用,可以提供美观的效果:

视频:https://youtu.be/Md3WkrDJc1Q

你可以在上面看到底图的颜色是如何使我们的视觉效果与众不同的。你不仅可以更改底图,还可以修改底图的元素。我最喜欢的底图是深色和浅色,因为它们有助于设置对比度。

实际上,底图的选择完全取决于我们正在创建的可视化。

如果你在前面的视频中注意到,还有第五个标签。这是配置选项,包含kepler.gl地图的配置。

此配置用于复制kepler.gl地图。你需要记住的一件事是,添加的数据名称应该保持不变,在本例中是“New York City Taxi Trips”。既然你现在知道了kepler.gl,让我们跳到下一节,在其中我们将创建一些美丽的可视化效果并体验kepler.gl.

可视化出租车行程

在可视化方面,kepler.gl通过在数据中找到一些模式并为其创建可视化,我们的任务已经变得更容易了。你可以在下面的视频中看到这个。它已经在地图上标出了旅行的起降点。此外,它还使用弧和线的层来可视化行程:

视频:https://youtu.be/OSHlHkPK73g

我删除了线条层,因为它看起来不像弧形。在上面的视频中,我们看到最初的弧线看起来并没有什么信息。但当我们在3D里看到它的时候,一切都颠倒了。这就是为什么我喜欢kepler.gl,它允许你在不编写任何代码的情况下创建三维可视化效果。

❝另外,如果你注意到的话,有一条弧线离纽约市很远。如果我们不使用kepler.的话,这是一个异常值。因此,地理空间可视化是必不可少的。它们可以显示数据的某些方面,但是异常值如果通过表格是显示不出来的。 ❞

而且,弧线的源和目标颜色是分开的,这一特点不仅使我们的弧线更具解释性,而且画龙点睛。我们的可视化现在看起来非常漂亮。

还有一件事,互动画笔让我们可以看一看从纽约某个特定地区拍摄的旅行,这可以帮助我们确定该市最繁忙的地区。

但是等等!所有这些可视化都是由kepler.gl做的,我们还没有创造出什么东西,所以让我们纠正它。我能想到的一个很好的视觉效果是取货地点的热图,它将为我们提供人们取货地点的信息。

在kepler.gl创建热图我们需要遵循以下步骤:

  1. 添加新层
  2. 选择类型作为热图
  3. 选择包含取货位置纬度和经度的列
  4. 选择热图的调色板
  5. 选择数据点的半径大小
  6. 调整其他参数

视频:https://youtu.be/KnroJWaRyP4

我们已经成功地创建了热图。但这里有一个陷阱——由于数据是在一天中不同的时间点收集的,我们的热图显示了当天所有的取货地点。我们可以通过使用过滤器为我们的映射添加更多的粒度。

在这里,我使用过滤器并选择了包含用于筛选数据集的取货时间的列。现在,我们可以查看当天不同情况下的取货地点热图。这幅图像为我们提供了一天中不同时间纽约市最繁忙地区的信息。

在下一节中,我们将创建与你在简介中看到的相同的可视化效果。

可视化纽约市人口普查区域

理解问题

❝问题说明:人口普查区域是为进行人口普查而确定的地理区域。将它们可视化可以为我们提供有关整个纽约市人口分布的信息。 ❞

问题陈述非常简单。我们只需要创建一个可以显示整个纽约市人口分布的可视化模型。显示人口普查区域的三维地图非常适合这一目的。所以让我们创造一个。

数据描述

我们将使用一个包含2010年人口普查图的数据集,从这里获取的纽约市人口数据:https://github.com/uber-web/kepler.gl-data。

选择的数据集采用GeoJSON格式。GeoJSON是一种基于JavaScript对象表示法(JSON)的格式,用于编码各种几何特征。它使用各种几何类型,如点、线串、多边形、多点和其他。

因为这次我们的数据集的格式不同,所以我们将使用不同的库来处理这个数据集。我们会用geopandas做这个。

Geopandas是一个Python库,它使使用Python处理地理空间数据更加容易。Geopandas结合了各种顶级库,如numpy、shapely、fiona、geopy、descartes、matplotlib和Pandas。如果你知道如何使用Pandas,那么你在使用它时不会遇到任何问题。

因此,让我们导入库并查看我们的数据集:

代码语言:javascript
复制
from keplergl import KeplerGl
import geopandas as gpd
import matplotlib.pyplot as plt
import matplotlib

census=gpd.read_file('kepler.gl-data/nyc_census/data.json')
print('Shape=>',census.shape)
census.head()

我们的数据集包含纽约市2166个人口普查区的人口、邻里表区号(ntacode)、社区发展区补助资格(cdeligibil)、区号(boro_code)、人口普查区面积(shape_area)等信息。

如果你注意到上面,有一个名为geometry的列。它包含普查区域的几何信息,即普查区域的形状为多边形。你可以在此处阅读有关数据集其他功能的更多信息。

https://data.cityofnewyork.us/api/views/fxpq-c8ku/files/c1bc6807-5120-44ac-b0b2-138dc622a4a8?download=true&filename=nyct2010_metadata.pdf

现在,让我们不使用kepler.gl绘制数据集,看看它是否正确.

你可以使用geopandas的**plot()**函数查看GeoJSON:

代码语言:javascript
复制
census.plot(figsize=(12,10))

太好了!这看起来像纽约市。我们现在已经准备好了数据集,所以让我们跳到可视化部分。

可视化人口普查区域

你已经知道我们的第一步是什么–我们必须创建一个地图,然后将数据添加到其中:

代码语言:javascript
复制
map2=KeplerGl(height=500,data={'Census Data':census})
map2

视频:https://youtu.be/hkwWXmUObPQ

如果你注意到了,我没有在这里使用「add_data()「方法。我只是将数据传递给了」KeplerGl()」。这是向其中添加数据的另一种方式。kepler.gl已经检测到几何列并将其绘制出来,但它看起来不太吸引人,而且它也不在3D中。因此,让我们将其进行设置:

视频:https://youtu.be/VvkzEP2LREI

你可以在上面看到,我们不需要做太多的工作来绘制三维的人口普查图。最后,现在你已经创建了一个三维的人口普查图,它看起来和我之前展示给你的一模一样。你的3D地图看起来非常漂亮。

保存可视化

有两种方法可以保存可视化效果。首先,保存Jupyter,然后将map导出为HTML。所以让我们看看第一种方法:

只需单击SaveNotebook小部件状态按钮,就保存在Jupyter中。现在让我们看看第二种方法。此操作要求你运行一行代码:

代码语言:javascript
复制
map2.save_to_html(file_name='nyc_census.html',read_only=True)

注意:这只保存可见的图层,同时隐藏左侧面板。如果要自定义生成的地图并查看所有图层,则需要运行以下代码:

代码语言:javascript
复制
map2.save_to_html(file_name='nyc_census-customize.html')

结尾

最后,我们到达了本文的结尾。现在,我可以说你已经知道如何使用kepler.gl用于可视化地理位置数据集。

为了进行更深入的分析,我强烈建议阅读他们的文档,这些文档制作精美,易于阅读。

https://docs.kepler.gl/

原文链接:https://www.analyticsvidhya.com/blog/2020/06/learn-visualize-geospatial-data-jupyter-kepler/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 介绍
  • 目录
  • 什么是kepler.gl
  • 安装kepler.gl
  • 可视化纽约市出租车出行
    • 理解问题陈述
      • 数据描述
        • 绘制底图并添加数据集
          • 自定义kepler.gl的地图
            • 图层
            • 过滤器
            • 交互
            • 底图
          • 可视化出租车行程
          • 可视化纽约市人口普查区域
            • 理解问题
              • 数据描述
                • 可视化人口普查区域
                • 保存可视化
                • 结尾
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档