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 交互式创作

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

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

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

python制作酷炫动画_Python+Kepler.gl轻松制作酷炫路径动画相关推荐

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

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

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

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

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

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

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

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

  5. 可视化案例(五)Kepler.gl绘制动态酷炫热力图

    目录 一.Kepler.gl简介 二.案例演示 2.1 数据介绍 2.2 基本设置 三.Jupyter Notebook中实现 3.1 安装kepler模块 3.2 基本用法 一.Kepler.gl简 ...

  6. 制作点线动画用它,轻松实现创作 | 万彩动画大师

    点线动画具有灵活多变,高端大气的特点.以圆点和线条为主,通过不停地变幻和排列组合给观众带来震撼的视觉冲击力,常常被应用到互联网.金融等行业.虽然只有简单的点和线条,然而用AE制作起来可不简单哦.别担心 ...

  7. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...

    Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...

  8. 用计算机制作演示文稿教案博客,《轻松制作幻灯片》教案

    <轻松制作幻灯片>教案 教学目标: 知识与技能: 1.学会选择ppt板式,会在ppt中插入图片.文本框.艺术字等基本方法. 2.会保存ppt文件. 过程与方法: 1.使学生能主动参与学习活 ...

  9. python制作词作云动画_python词云的制作方法

    第一次接触到词云主要是觉得很好看,就研究了一下,官方给出了代码的,但是新手看的话还是有点不容易,我们来尝试下吧. 环境:python2.7 python库:PIL(pillow),numpy,matp ...

最新文章

  1. 转:查看系统是64位还是32位
  2. plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式
  3. 独家 | 别用csv存储了-这种文件格式比csv快150倍(附链接)
  4. html表单上传图片获取路径,asp.net获取HTML表单File中的路径的方法
  5. 深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
  6. jquery easyui datagrid getSelections用法
  7. q7goodies事例_Java 8 Friday Goodies:本地交易范围
  8. 使用JGroups进行ElasticMQ消息复制
  9. pxe安装linux后命令不可用,pxe自动安装linux
  10. vba 判断文本框内容是否为空_【VBA】 数据输入 Inputbox 基本语法
  11. Python——PyCharm常用快捷键
  12. 如果你是面试官,如何判断一个面试者的深度学习水平?
  13. JavaScript面向对象之构造函数
  14. 20款绝佳的HTML5应用程序示例
  15. HDU 2256Problem of Precision(矩阵快速幂)
  16. linux work 账户管理,Homework Week-3 用户管理
  17. 古代汉语(王力版)笔记 通论8-9
  18. SWF加密之防反翻译
  19. 2017网易校招:Fibonacci数列
  20. Java多线程--1--stop方法

热门文章

  1. 逆天了!能控制电脑还能和你聊天的机器人?
  2. 江苏将举办大院大所合作专题推介会
  3. 商业策划的基本功:竞品分析
  4. MySQL数据库配置信息查看和修改
  5. 【每天学点管理学】——确定关键成果
  6. 【图论算法】 最短路,次短路,k短路总结
  7. Redis 性能测试工具(redis-benchmark)
  8. 重新认识HTML(一)别来无恙
  9. PHP哔哩哔哩bilibili视频弹幕播放器源码 带后台版本
  10. jQuery Callback 函数