前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:费弗里

欢迎点击左上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。

1. 简介

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

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

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

2.基于keplergl的路径动画

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

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

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

3.构造数据与初始化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)

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

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

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])

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

可以发现每个点元素都追加上高度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文件

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

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

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

  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. python制作词作云动画_python词云的制作方法

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

  9. python处理excel数据透视表_Python也能轻松做出Excel透视表的效果,一切技巧全在这里...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来才发现,原来不是 Python ...

最新文章

  1. 小希的迷宫(并查集)
  2. Win10远程桌面失败,这可能是由于CredSSP加密Oracle修正 解决方法
  3. .net post提交后接收返回数据_读完这一篇IT程序员终于明白post和get的区别
  4. python自己创建模块引用失败_详解Python import方法引入模块的实例 Python怎么import自己写的模块...
  5. bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路(最小生成树)
  6. 获取计算机登录用户名和密码,查看电脑的登录用户名_查看电脑用户名和密码...
  7. 对promise、resolve和reject的简单理解
  8. 宾州州立大学计算机排名,宾州州立大学帕克分校排名
  9. 对曲线的坐标的积分的斯托克斯公式+参数定积分法
  10. 在java中 数组是作为_2.在Java中,数组是作为____来处理的。
  11. 内网渗透-最实用的横向移动总结
  12. python实现图片切割和合并
  13. Oracle EBS Interface/API(14)-MRP Forcast清空(或删除)所有预测物料
  14. 士兵杀敌(coduck)
  15. 自动化成本高?那么如何获得最高的投资回报呢?
  16. dva是什么游戏_守望先锋DVA上分攻略 DVA使用技巧详解
  17. 基于java+SpringBoot+HTML+MySQL精准扶贫网站的设计与实现
  18. linux下磁盘查看和分区
  19. 小微企业如何通过运营公众号提升业绩?
  20. html两个盒子怎么左右对其,多个div两端对齐

热门文章

  1. 定向耦合器——谈谈隔离度(四)
  2. Oracle 行转列 pivot函数基本用法
  3. 标定协议基础知识介绍
  4. 台式电脑鼠标怎么选?
  5. Awstats安装配置
  6. lunix命令向文件添加内容的几种方法
  7. USACO 4.4.2 Pollutant Control追查坏牛奶 题解与分析
  8. commandos 系列
  9. wap2app(五)-- 微信授权登录以及踩过的坑
  10. Macbook air M1 关闭SIP;更改安全策略