QGIS 3.10 制作时序动画_qgis时间序列动画-程序员宅基地

技术标签: QGIS实操与技巧  qgis  

在这里插入图片描述
时间属性是许多空间数据集的重要组成部分。与位置信息相结合,时间属性提供了数据分析和可视化的另一个维度。如果使用的数据集包含时间戳,或者有多个时间段的观测记录,就可以使用QGIS中的TimeManager插件轻松地将其可视化。TimeManager插件可以在特定的时间间隔内查看由数据生成的地图切片(slices),并将其导出为图片文件,然后利用其他工具将图片组合生成动画。

任务概述

通过海盗活动位置点图层,创建热力图(Heatmap),以时间序列动画的方式,展示过去20年间海盗活动热点区域的变化。

将会学到的其他技巧

  • 使用热力图对密集的点数据进行可视化。
  • 创建和使用自定义投影(custom map projections)

获取示范数据

本教程的示范数据采用美国国家地理空间情报局(National Geospatial-Intelligence Agency)提供的反航运活动信息(Anti-shipping Activity Messages)和自然地球(Natural Earth)提供的1:1千万陆地多边形数据,可以通过如下链接下载:
反航运活动信息(Anti-shipping Activity Messages):ASAM_shp.zip
陆地多边形数据:ne_10m_land.zip

将QGIS界面设置为中文

制作地图之前,请将您的QGIS软件界面设置为简体中文(如果您已经设置过了,可以忽略本节后续内容)。操作方式为:通过菜单【Settings】->【Options…】打开对话框,选择其中的【General】标签,找到“Override system locale”前面的复选框并打勾,在“User Interface Transaction”下拉框中找到并选择“简体中文”,单击【OK】,退出QGIS。重新启动QGIS后即可看到简体中文界面。
在这里插入图片描述

安装插件

本教程需要安装TimeManager 插件,点击菜单【插件】->【管理并安装插件…】,查找并安装TimeManager 插件。
在这里插入图片描述

详细操作步骤

  1. 将示范数据下载到本地并解压缩。在QGIS【浏览】面板中,找到ne_10m_land.shp,把它添加到地图窗口。同样步骤,找到asam_data_download/ASAM_events.shp,把它拖拽到地图画布中。
    在这里插入图片描述
  2. 数以千计的海盗活动位置点显示在地图窗口中,很难从这种方式表示的数据中看出更多海盗活动信息,可以借助热力图更好地实现海盗活动数据的可视化。在【图层】面板中,选中“ASAM_events”图层,点击上方的【打开图层样式面板】按钮。【图层样式】面板出现在地图窗口右侧,当前默认的渲染方式是【单一符号】。
    在这里插入图片描述
  3. 从渲染器下拉框中选择【热图】,颜色渐变(Color ramp)下拉框中选择【Viridis】。
    在这里插入图片描述
  4. 调整热力图的【半径】参数为5.0,单位保持默认:Milimeters。在【图层样式】面板,展开【图层渲染】,设置图层的不透明度为75.0%,使得热点图层和下方的陆地多边形图层达到更好的可视化效果。
    在这里插入图片描述
  5. 点击菜单【插件】->【TimeManager】->【Toggle visibility】,用动画形式显示每年海盗活动地图。
    在这里插入图片描述
  6. 在【Time Manager】面板中,点击【Settings】,弹出【Time manager settings】对话框。
    在这里插入图片描述
  7. 在【Time manager settings】对话框中,点击【Add Layer】按钮。
    在这里插入图片描述
  8. 原始数据中包含属性字段“dateofocc”,表示海盗事件发生的日期,TimeManager插件将使用该字段来确定各个时间段应呈现在地图上的数据点,即使用该字段对图层进行过滤。在弹出的【Select layer and column(s)】对话框中,【layer】下拉框选择“ASAM_eventsM”,【Start time】选择“dateofocc”字段,设置【End time】为“Same as start”,点击【OK】按钮。
    在这里插入图片描述
  9. 回到【Time manager settings】对话框,点击【OK】按钮。
    在这里插入图片描述
  10. 点击【TimeManager】面板中的【Power】按钮,启动动画。设置【Time frame size】参数为“1 years”(1年),此时可见“ASAM_events”图层旁出现一个“过滤”按钮,表示根据地图右下角显示的时间,TimeManager插件对数据进行了过滤,将不是当前时间段的数据隐藏了起来。
    在这里插入图片描述
    备注:TimeManager插件通过对图层使用过滤器的方式实现对数据的动画显示,因此,它只对支持过滤器的图层类型起作用。大部分数据源都支持过滤器,但也存在例外情况,比如临时内存图层(temporary memory layers)。因此,如果对图层做了某些处理,产生了临时图层,在对这些临时图层使用TimeManager插件之前,应先右键点击该图层,从弹出菜单中选择【永久化…】,将图层保存起来。
  11. 点击【Time Manager】面板中的【Play】按钮,观察每年海盗活动热点地区动画效果。
    在这里插入图片描述
  12. 动画画面的右下角详细显示了数据的日期与时间,这种显示方式过于冗长繁琐。点击【Time Manager】面板的【Settings】按钮,在弹出对话框中点击【Time display options】按钮,设置时间显示格式为当前数据的年份。
    在这里插入图片描述
  13. 在【Options】对话框中,设置字体大小为 25,时间格式(Time Format)选择“ DateTime”,在文本框中输入 Y%。这里的时间格式应使用Python strftime格式,Y%表示4位数年份。同时,设置【Placement direction】为“ NW”,表示把时间标签放置在地图的西北角,即地图画布的左上方。
    在这里插入图片描述
  14. 点击【OK】按钮,回到【Time manager settings】对话框。选中【Looping animation】复选框,当调整样式时,该选项可以让动画从头开始继续播放。点击【OK】按钮。
    在这里插入图片描述
  15. 重新播放动画,年份标签显示在动画的左上角。为了地图的显示效果更好,可以改变一下投影设置。默认地图投影为 EPSG:4326,该投影适用于存储源数据,但对全球范围可视化来说显示效果并不好。推荐使用 Equal Earth Projection,在视觉上更加美观,而且可以更准确地表现世界范围地图。该投影是一个相对比较新的投影,尚未包含在QGIS的预定义投影中,但可以方便地通过QGIS完成自定义投影设置。点击菜单【设置】->【自定义投影…】。
    在这里插入图片描述
  16. 在【自定义坐标参照系】对话框中,点击【+】按钮,输入名称:“ Equal Earth”。自定义投影的参数需要以PROJ格式(PROJ format)指定,在【参数】文本框中输入以下PROJ格式文本,点击【OK】按钮。
+proj=eqearth +datum=WGS84 +wktext

在这里插入图片描述

  1. 回到QGIS的主窗口,点击右下方状态栏的当前投影坐标系。
    在这里插入图片描述
  2. 在弹出的【项目属性|坐标参照系】对话框中,找到并选择自定义坐标系“Equal Earth”,点击【OK】按钮。
    在这里插入图片描述
  3. 地图随之转换为Equal Earth 投影坐标系,可以开始导出动画了。动画帧的导出是从当前时间滑块位置开始,因此在导出动画之前,确保【Time Manager】面板中时间滑块停在开始位置。点击【Time Manager】面板的【Export Video】按钮。
    在这里插入图片描述
  4. 在弹出的对话框中,点击【Select output folder】按钮,为输出动画选择一个目录。选中【 Frames only 】选项,单击【OK】按钮,开始导出。
    在这里插入图片描述
  5. 导出完成后,输出目录中可以看到每一年的地图对应生成了一个PNG图片,用这些图片可以制作GIF动图。GIF动图制作有很多方法,可以使用网站提供的在线制作工具,也可以下载一些开源的小程序来完成。以ezgif.com 网站为例,登陆网站,点击【 Choose Files 】,在弹出对话框中选中所有的PNG文件,然后点击【Upload and make a GIF!】按钮开始制作GIF动图。
    在这里插入图片描述
  6. GIF制作完成后,点击【Save】按钮,将生成的GIF下载到本地。

在这里插入图片描述
本教程到此结束。

吴建玲

2020年6月15日


版权声明

本文欢迎转载,转载时请注明出处。

本文主要翻译并改编自qgistutorials网站,原文链接为https://www.qgistutorials.com/en/docs/3/animating_time_series.html,原文已根据《知识共享署名4.0国际许可协议(Creative Commons Attribution 4.0 International License)》获得许可,在此向原文作者乌加尔·甘地(Ujaval Gandhi)致以敬意,感谢他为分享QGIS技术做出的贡献。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/QGISClass/article/details/106762463

智能推荐

STM32入门-GPIO端口的八种工作模式_gpio的8种工作模式-程序员宅基地

文章浏览阅读5.7w次,点赞428次,收藏2.2k次。新手必看,超讲解详细GPIO端口的八种工作模式_gpio的8种工作模式

QGIS基本功| 8 初识数据源_qgis qml-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏10次。初次接触GIS的朋友,常常弄不清数据源(Data Source)和图层(Layer)的区别与联系,导致在数据处理和分发时出现一些问题,例如:辛辛苦苦做出了一幅漂亮的地图,为什么再次打开数据时,地图又变回丑陋的样子?怎么才能把工作成果分发给同事,让他打开数据时效果跟我本机一模一样?回答这些问题,我们需要从数据源的基本概念说起。本文从数据源和图层的区别与联系、打开数据源管理器、数据源管理器界面介绍和QGIS支持打开的数据源类型等方面,整体上初步介绍数据源相关知识。后续将陆续推出文章,详细介绍.._qgis qml

kaldi yesorno案例学习记录_local/prepare_lm.sh: line 7: 19989-程序员宅基地

文章浏览阅读270次。学习自Kaldi-yesno详解先来学习run.sh脚本#!/bin/bashtrain_cmd=“utils/run.pl”decode_cmd=“utils/run.pl”#-d filename 判断filename是否为目录,是为真,即下面的是如果waves_yesorno部署目录,去网站下载,||逻辑或,如果前面的语句执行成功,后面的就不执行了,如果前面的出问题,就异常退出(exit 0 代表正常运行程序并退出程序,exit 1 代表非正常运行导致退出程序。其实目的就是: 程序退出后, _local/prepare_lm.sh: line 7: 19989

《专题五 容器化微服务》之《第三章 云原生DevOps》之《第二节 监控》-程序员宅基地

文章浏览阅读181次。我:es的index类似kafka的topic, es的shard类似kafka的partition,副本类似kafka的副本(除了es当有多个请求需要访问同一个index时,各shard的多副本上可并行搜索;相比之下,kafka的partition只能分配给一个消费者组里的一个消费者)20:40 filebeat对k8s的支持:通过监听k8s事件,自动采集容器的标准输出。10 30+ 容器与Kubernetes里的日志,与传统主机模式下的日志有较大区别。13 55+ Filebeat采集容器化日志。

一文带你快速了解业务流程分析和流程建模_系统业务流程介绍与分析-程序员宅基地

文章浏览阅读2.2k次。有哪些业务流程?业务流程如何完成?业务流程有谁参与?流程中有哪些控制流(如判断、同步分支和会合)?多个不同流程建的关系?完成流程所用的资源等。_系统业务流程介绍与分析

nmos导通流向_MOS管-程序员宅基地

文章浏览阅读6.5k次,点赞3次,收藏14次。MOS管P管。通常S接电源。G控制信号,D接负载。当G等于S时。S和D不导通当G小于一定S D和S导通。N管S接地,G接控制,D接电流节点1. MOS管开关电路学习过模拟电路的人都知道三极管是流控流器件,也就是由基极电流控制集电极与发射极之间的电流;而MOS管是压控流器件,也就是由栅极上所加的电压控制漏极与源极之间电流。MOSFET管是FET的一种,可以被制造为增强型或者耗尽型,P沟道或N沟道共四..._nmos导通

随便推点

【云驻共创】云原生应用架构之企业核心业务未来架构演进路线及华为云方案_基于云原生架构构建核心业务支撑系统应用试点研究-程序员宅基地

文章浏览阅读2.6w次,点赞4次,收藏9次。文章目录前言前言本文整理自华为云社区【内容共创】活动第14期。查看活动详情:https://bbs.huaweicloud.com/blogs/336904相关任务详情:任务16.企业核心业务未来架构演进路线及华为云方案_基于云原生架构构建核心业务支撑系统应用试点研究

实验十九、利用运算电路解方程_利用运算电路求解方程的方法研究-程序员宅基地

文章浏览阅读882次。运算电路求解一元二次方程_利用运算电路求解方程的方法研究

Vue3+ElementPlus 根据路由 自动创建二级菜单_vue 项目 element新增菜单下级页面-程序员宅基地

文章浏览阅读334次,点赞5次,收藏4次。本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**_vue 项目 element新增菜单下级页面

linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;_linux按照mysql数据库配置表名不区分大小写-程序员宅基地

文章浏览阅读1.2k次。1、linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写; 2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写; lower_case_table_names参数详解: lower_case_table_names = 0 其_linux按照mysql数据库配置表名不区分大小写

关于JAVA核心技术(卷一)读后的思考(接口的基本知识的讨论)-程序员宅基地

文章浏览阅读118次。接口接口技术:这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口对象。接口概念:接口不是类,而是对类的一组需求的描述,这些类要遵从接口描述的统一格式进行定义。举个简单的例子:假设有一个类A,其中有一个sort方法是对对象数组进行排序,但要求对象所属的类必须实现了 B接口。假设B接口定义如下..._接口的定义中,对接口的域和方法有什么要求

torch.split()-程序员宅基地

文章浏览阅读3.4k次,点赞3次,收藏9次。所以,torch.split()是一个很有用的函数,可以轻松地将张量分割成任意形状和大小的张量列表,以用于后续处理。官网解释:Splits the tensor into chunks.——PyTorch中用于分割张量的函数。官网链接:https://pytorch.org/docs/stable/torch.html。作用:将一个多维张量分割成多个张量。_torch.split