前言
上一次给大家介绍了如何利用qgis的图集功能制作动画,相对来说是比较高级的用法了,涉及到了图集的使用、字段属性值关联设置、变量值的使用、基于规则的样式设置等内容,其实这些在QGIS中每块内容都是一些很出色的功能,熟悉掌握它们,在数据处理、数据可视化、地图制作都是非常有用的。
好了,回归到本文上来,这次分享一个关于利用QGIS插件TimeManager来制作动画的案例,利用这个插件结合一些QGIS内置函数可以玩出很多花样来。今天我们做一个最简单的,只要明白了它的动画制作原理,需要制作复杂的动画,其实都是样式设置相关了。
一、数据准备
这是深圳的行政区域图,共10个行政区,有两列属性字段,id和行政区。这是按照行政分类,设置其显示样式,如下图。
二、插件加载及设置
在插件plugins-manage and install plugins,在All下搜索TimeManger,点安装就可以了。之后回到软件界面,在插件plugins可以找到TimeManger并打开它。
打开插件后,如下图,分别进行1-4设置:其中3中的layer处选择我们的图层,start time选我们数据中id字段,end time如图设置,4中默认设置即可。(大家可以回看我们属性表字段,id是从1盐田区到10光明新区,接下来将按这个顺序制作动画。)
前面设置完成后,点OK,出现以下界面,这里要把框框处勾选上,这里表示动画会累积生成,相当于连续的生成,如果不选的话,就是每个行政区出现一次,然后消失,再出现下一张。
三、动画运行设置
上一步完成后,我们点击确定后,将对动画运行的时间进行设置了,在1处设置时间为1970-01-01 00:00:00,然后单位选择1s。这里为什么要这么设置,简单解释下,因为插件它是以Linux的时间系统来定的,即从1970年一月一日凌晨零点零分零秒开始算(格林威治时间),单位为秒。如果你仔细看 TimeManger的使用说明会发现,其实它需要的时间格式很严格的,但是我们这里如果只是输入连续的1-10呢,相当于是时间格式中的只以秒计,表示就是从1970-01-01 00:00:00开始后的10秒中。(拓展一下,如果你想设置成今日的时间,其实只要把今天的时间与1970-01-01 00:00:00作差值,得到一个很大的数,然后把这个数作为你的id编号起点,作等差数列,取10个后,这里时间起点就可以设置成今天了)。
设置完后,点击1成绿色按钮,你会发现界面图像消失了,然后你再点2,发现图按id号1-10逐个出现(同时请注意右下角的时间变化,此时第6秒,图中刚好到第6个区)。
四、动画导出
我们这个案例元素比较少,数量才10个左右,所以直接录屏效果就很好了。当时数据量大的时候,你会发现它的显示效果非常差,卡顿的现象非常严重,这是因为软件在不停的渲染,影响了我们视觉效果。这时就需要用到插件中的Export Video,选择一个空白文件夹,确定就好了。
五、动画生成
打开文件后,会有10张png图片和10张.pgw为后缀的文件(可以把.pgw文件都删除了,这些是带坐标信息的文件,对于生成动画没用)。接下来就按我如何利用qgis的图集功能制作动画中的方法,利用gimp软件制作动画,这里不再多说了。最效果如下:
六、小结
如果你感兴趣,可以拿出你的数据或者手动造一份数据试试文中的方法。
其实说是简单,也很巧妙,因为一般关于timemanager的教程里头它会告诉你:首先你有一列时间格式的字段才能进行插件的设置,比如gps轨迹数据。其实我们仅需要简单的一列连续顺序的数字,它就可以代表时间格式中的秒,并以Linux的时间系统1970-01-01 00:00:00为开始来计时,理解这两点就很容易实现各种动画的制作了。
如果你慢慢熟悉了它的用法,知道了它的设置规则,可以做一些很炫的动画,比如结合标签的显示、底图的显示、渲染效果的显示、甚至是空间运算等。关于插件更多的用法可以参考插件作者的博客https://anitagraser.com/?s=timemanager。
后续将继续分享一些qgis好用的功能以及技巧。