重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画

admin 1个月前 (05-30) 科技 8 0

本文示例代码、数据已上传至我的Github堆栈https://github.com/CNFeffery/DataScienceStudyNotes

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

  而在官方的说明中形貌了要绘制路径动画需要输入的数据花样:

重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画 第1张 图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)

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

重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画 第2张 图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])

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

重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画 第3张 图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文件
重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画 第4张 图7

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

2.2 交互式创作

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

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

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

,

欧博注册网址

www.ludiealliedinstitute.com欢迎进入欧博网址(Allbet Gaming),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

欧博app下载声明:该文看法仅代表作者自己,与本平台无关。转载请注明:重庆新闻论坛:(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画

网友评论

  • (*)

最新评论

站点信息

  • 文章总数:1174
  • 页面总数:0
  • 分类总数:8
  • 标签总数:2262
  • 评论总数:142
  • 浏览总数:10786