1 简介

Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集。

图1

更令人兴奋地是Kepler.gl在去年推出了基于Python的接口库keplergl,结合jupyter notebook/jupyter lab的相关拓展插件,使得我们可以通过编写Python程序配合Kepler.gl更灵活地制作各种可视化作品。

图2

而随着近期keplergl的更新,更多的新特性得以同步到其Python生态中,本文就将针对其中的路径动画的制作方法进行介绍。

2 基于keplergl的路径动画

我们要制作的路径动画图主要用于表现特定路径上流的运动,譬如图3的例子来自Kepler.gl官方示例:

图3

而在官方的说明中描述了要绘制路径动画需要输入的数据格式:

图4

这是一个典型的GeoJSON格式LineString要素,特别的是其"coordinates"键对应的值不同于常规的[经度, 纬度]格式,而是代表着[经度, 纬度, 高度, 时间戳],其中高度非必要,可以设置为0,而时间戳则声明了轨迹动画在该时间点会到达的该点位置,即线要素上连续的点位置+时间戳定义了轨迹动画的运动模式,下面我们分步骤来实现。

2.1 构造数据与初始化html

这里我们以重庆市渝中区的OSM路网为演示示例数据,首先我们需要利用json模块来读取本地重庆市渝中区_osm路网_道路.geojson数据:

from keplergl import KeplerGl

import json

import time

with open('geometry/重庆市渝中区_osm路网_道路.geojson') as g:

raw_roads = json.load(g)

随便打印出其中包含的某个线要素:

图5

可以看到,这时线要素内部包含的点还是[经度, 纬度]的格式,接下来我们为其虚构上时间戳信息,为了保证整个路网可视化的协调一致,将所有线要素的时间跨度固定在一个小时之内,保证每段路上从头到尾的轨迹动画都保持一致:

start_time = time.mktime(time.strptime('2020-05-29 20:00:00', "%Y-%m-%d %H:%M:%S"))

for i in range(raw_roads['features'].__len__()):

for j in range(raw_roads['features'][i]['geometry']['coordinates'].__len__()):

shift_time = int((j / raw_roads['features'][i]['geometry']['coordinates'].__len__())*3600) # 更新当前对应的时间戳

raw_roads['features'][i]['geometry']['coordinates'][j] \

.extend([0, # 高度设置为0

int(start_time) + shift_time])

接着再打印其中一个线要素:

图6

可以发现每个点元素都追加上高度0以及对应的时间戳(注意这里的时间戳必须为整数否则之后输入keplergl会报错),接下来的过程就非常简单,首先确保你已经安装了keplergl以及对应插件,譬如我所使用的jupyter lab,在确保nodejs被安装的前提下,使用jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter安装拓展插件(jupyter notebook可参考https://github.com/keplergl/kepler.gl/tree/master/bindings/kepler.gl-jupyter#installation),以及使用pip install keplergl来安装keplergl库,一切准备就绪直接运行如下代码:

from keplergl import KeplerGl

# 生成KeplerGl对象s

map1 = KeplerGl(height=400,

data={'flow': raw_roads}) # data以图层名为键,对应的矢量数据为值

map1

map1.save_to_html(file_name='渝中区.html') # 导出到本地可编辑html文件

图7

这一步的目的是初始化已嵌入目标数据的html文件,接下来你就可以关闭jupyter lab,在工作目录下找到已经导出的html文件直接打开,接下来的工作将在浏览器里进行。

2.2 交互式创作

接下来的过程则不涉及任何代码,我们将以点击按钮的方式改变我们可视化作品的外观,由于整个过程细节较多,因此将整个过程录制为视频:

Kepler.gl中的交互式参数调整非常简单,只要你随便试一试就可以掌握其用法,不必拘泥于我上面的参数设置,发挥自己的创意,调出更美观的轨迹动画结果。

以上就是本文的全部内容,如有疑问或建议欢迎到评论区与我交流~

python炫酷动画源代码_(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画...相关推荐

  1. python做动画视频教程_Python+Kepler.gl轻松制作酷炫路径动画的实现示例

    1. 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集. ...

  2. 【Python应用】Python+Kepler.gl轻松制作酷炫路径动画

    文章来源于Python大数据分析,作者费弗里 本文示例代码.数据已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 ...

  3. python制作酷炫动画_Python+Kepler.gl轻松制作酷炫路径动画

    1 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集.图1 ...

  4. python制作的炫酷动画_Python+Kepler.gl轻松制作酷炫路径动画

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:费弗里 欢迎点击左上角关注小编,除了分享技术文章之外还有很多福利,私 ...

  5. (数据科学学习手札32)Python中re模块的详细介绍

    一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...

  6. (数据科学学习手札61)xpath进阶用法

    一.简介 xpath作为对网页.对xml文件进行定位的工具,速度快,语法简洁明了,在网络爬虫解析内容的过程中起到很大的作用,除了xpath的基础用法之外(可参考我之前写的(数据科学学习手札50)基于P ...

  7. python 最小二乘回归 高斯核_数据科学中最简单也最重要的算法:线性回归

    全文共1794字,预计学习时长15分钟 线性回归是数据科学中最简单也是最重要的算法.无论面试的工作领域是数据科学.数据分析.机器学习或者是量化研究,都有可能会遇到涉及线性回归的具体问题.要想熟练掌握线 ...

  8. python网络数据采集 第三版_(数据科学学习手札31)基于Python的网络数据采集(初级篇)...

    一.简介 在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时 ...

  9. python绘制词云图转换图_(数据科学学习手札71)利用Python绘制词云图

    1 简介 词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词: 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

最新文章

  1. 【linux】Valgrind工具集详解(四):抑制错误
  2. GMM-HMM语音识别算法
  3. 10万元奖金助力AI加速药物研发!小分子预测大赛来啦
  4. 上传文件到 Web 服务器
  5. 针对Java中的XSD验证XML
  6. 防水耐脏,超大容量双肩包,限时拼团仅需49元
  7. struct与typedef 结构体定义
  8. 基于小脑模型神经网络轨迹跟踪matlab程序
  9. 小米note 卡在android,小米Note手机SIM卡怎么安装?小米Note安装手机SIM卡教程
  10. R语言—热力地图复合气泡饼图
  11. ECshop商城开发系列视频教程后盾网VIP课程
  12. TPS、RPS和QPS是什么
  13. 什么是网桥,它应该如何搭建
  14. 对数用计算机,如何使用计算器计算对数
  15. uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】
  16. 《租车管理系统 ——“订单管理(代驾)”模块》项目研发阶段性总结
  17. 解构给默认值_函数的对象参数的解构和默认值
  18. 松下与Delos中国携手,共同推动健康人居空间的研究和实证
  19. 山东大学机器学习课程资源索引
  20. 汽车上DTC是什么意思?DTC是什么故障

热门文章

  1. 线性代数基础知识:求矩阵的特征值、特征向量和协方差矩阵
  2. i.MX6ULL驱动开发 | 02-字符设备驱动框架
  3. 『网络安全』蜜罐到蜜网入门指南(一)蜜罐初识
  4. 在 ASP.NET Core 使用 IOptions pattern
  5. 建立反脆弱的投资体系,寻找风险收益不对称
  6. iOS11正式版亮点
  7. 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」
  8. [SQL必知必会] 读书笔记
  9. RTP H264 NAL
  10. 今天14:00 | 12位一作华人学者开启 ICLR 2022