GEE学习笔记 六十:GEE中生成GIF动画
生成GIF动画这个是GEE新增加的功能之一,这一篇文章我会简单介绍一下如何使用GEE来制作GIF动画。
相关API如下:

参数含义:
params:设置GIF动画显示参数,详细的参数可以参考ee.data.getMapId()
callback:回调函数
其实还有另外的一个方法可以生成GIF动画就是使用缩略图的方式,具体的API如下所示:

如果只是查看API我们发现他并没有说这个可以生成GIF动画,这个是GEE的官方没有及时的更新文档造成的问题。我们在实际使用中会经常直接使用ui.Thumbnail来做相关gif动画输出,如果要使用getVideoThumbURL()也类似。
下面是我做的一个黄河口近三十年的变化动图

下面我会介绍如何做这个动态图。
(1)首先我们选定一个区域作为展示区域,具体区域如下图:

(2)相关生成GIF动画的代码如下:
var roi =/* color: #d63000 *//* displayProperties: [{"type": "rectangle"}] */ee.Geometry.Polygon([[[118.76701352910152, 37.95798438938449],[118.76701352910152, 37.58456192342209],[119.38224790410152, 37.58456192342209],[119.38224790410152, 37.95798438938449]]], null, false),l8_sr = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR");Map.centerObject(roi, 8);Map.addLayer(roi, {color: "red"}, "roi");var sDate = "2013-1-1";var eDate = "2019-1-1";var l8Col = l8_sr.filterDate(sDate, eDate).filterBounds(roi).map(function(image) {var cloudShadowBitMask = 1 << 3;var cloudsBitMask = 1 << 5;var qa = image.select('pixel_qa');var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).and(qa.bitwiseAnd(cloudsBitMask).eq(0));return image.updateMask(mask);}).map(function(image) {var time_start = image.get("system:time_start");image = image.multiply(0.0001);image = image.set("system:time_start", time_start);return image;}).select(["B2","B3","B4"], ['blue','green','red']);print(l8Col.limit(1));print(l8Col.size());var yearList = ee.List.sequence(ee.Date(sDate).get("year"), ee.Number(ee.Date(eDate).get("year")).subtract(1));var yearImgList = yearList.map(function(year) {year = ee.Number(year);var _sdate = ee.Date.fromYMD(year, 1, 1);var _edate = ee.Date.fromYMD(year.add(1), 1, 1);var tempCol = l8Col.filterDate(_sdate, _edate);var img = tempCol.median().clip(roi);img = img.set("year", year);img = img.set("system:index", ee.String(year.toInt()));return img;});var imgCol = ee.ImageCollection.fromImages(yearImgList);print("imgCol", imgCol);// 使用缩略图来制作展示var params = {crs: 'EPSG:3857',framesPerSecond: 2,region: roi,min: 0.0,max: 0.3,bands: ["red", "green", "blue"],dimensions: 512,};print(ui.Thumbnail(imgCol, params));print(imgCol.getVideoThumbURL(params))
代码分析:
需要注意的问题,一是制作GIF图区域不能选择太大;二是区域内包含的像素点不能太多。
运行结果:

来源请引用:地理遥感生态网科学数据注册与出版系统.
相关文章:
GEE学习笔记 六十:GEE中生成GIF动画
生成GIF动画这个是GEE新增加的功能之一,这一篇文章我会简单介绍一下如何使用GEE来制作GIF动画。 相关API如下: 参数含义: params:设置GIF动画显示参数,详细的参数可以参考ee.data.getMapId() callback:回调…...
react中的useEffect
是函数组件中执行的副作用,副作用就是指每次组件更新都会执行的函数,可以用来取代生命周期。 1. 基本用法 import { useEffect } from "react"; useEffect(()>{console.log(副作用); });2. 副作用分为需要清除的和不需要清除 假如设置…...
故障安全(Crash-Safe) 复制
二进制日志记录是故障安全的:MySQL 仅记录完成的事件或事务使用 sync-binlog 提高安全性默认值是1,最安全的,操作系统在每次事务后写入文件将svnc-binloq 设置为0,当操作系统根据其内部规则写入文件的同时服务器崩溃时性能最好但事务丢失的可…...
Spring aop之针对注解
前言 接触过Spring的都知道,aop是其中重要的特性之一。笔者在开发做项目中,aop更多地是要和注解搭配:在某些方法上加上自定义注解,然后要对这些方法进行增强(很少用execution指定,哪些包下的哪些方法要增强)。那这时就…...
【JavaScript速成之路】JavaScript数据类型转换
📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言数据类型转换1,转换为字符串型1.1,利用“”拼接转换成…...
21-绑定自定义事件
绑定自定义事件 利用自定义事件获取子组件的值 父组件给子组件绑定一个自定义事件,实际上是绑定到了子组件的实例对象vc上: <!-- 自定义myEvent事件 --> <Student v-on:myEventgetStudentName/>在父组件中编写getStudentName的实现&#…...
【Mysql】触发器
【Mysql】触发器 文章目录【Mysql】触发器1. 触发器1.1 介绍1.2 语法1.2.1 创建触发器1.2.2 查看触发器1.2.3 删除触发器1.2.4 案例1. 触发器 1.1 介绍 触发器是与表有关的数据库对象,指在insert、update、delete之前(BEFORE)或之后(AFTER),触发并执行…...
CODESYS开发教程11-库管理器
今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的文件读写函数库SysFile。大家可能发现了,在CODESYS的开发中实际上是离不开各种库的使用,其中包括系统库、第三方库以及用户自己开发的库。实际…...
【UnityAR相关】Unity Vuforia扫图片成模型具体步骤
1 资产准备 导入要生成的fbx模型(带有材质), 你会发现导入fbx的材质丢失了: 选择Standard再Extract Materials导出材质到指定文件夹下(我放在Assets->Materials了 ok啦! 材质出现了, 模型…...
2023年全国最新保安员精选真题及答案2
百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 21.一般来说,最经济的巡逻方式是()。 A:步巡 B:…...
keil5安装了pack包但是还是不能选择device
一开始,我以为是keil5无法安装 STM32 芯片包,打开device倒是可以看到stm公司的芯片包,但是没有我想要的stm32f1。 我按照网上的一些说法,找到了这个STM32F1 的pack芯片包,但是我双击安装的时候,它的安装位…...
秒杀系统设计
1.秒杀系统的特点 瞬时高并发 2.预防措施 2.1.流量限制 对于一个相同的用户,限制请求的频次对于一个相同的IP,限制请求的频次验证码,减缓用户请求的次数活动开启之前,按钮先置灰,防止无效的请求流入系统࿰…...
全面认识数据指标体系
什么是数据指标体系? 看了下百度百科,竟然没有数据指标这个词条,看来这个词大家平时还用的不多啊。那只有间接偷懒一下,分别查下指标和数据这两个词条的含义,在组合起来看看。 数据:数据是指对客观事件进…...
热榜首推!阿里内部都在用的Java后端面试笔记,主流技术全在里面了!备战2023Java面试,拿理想offer
纵观今年的技术招聘市场, Java依旧是当仁不让的霸主 !即便遭受 Go等新兴语言不断冲击,依旧岿然不动。究其原因:Java有着极其成熟的生态,这个不用我多说;Java在 运维、可观测性、可监 控性方面都有着非常优秀…...
Android架构设计——【 APT技术实现butterknife框架 】
APT简介 APT英文全称:Android annotation process tool是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文…...
线程的基本概念
文章目录基础概念线程与进程什么是进程?什么是线程?进程和线程的区别:多线程什么是多线程?多线程的局限性串行、并行、并发同步异步、阻塞非阻塞线程的创建1、继承Thread类,重写run方法2、实现Runnable接口,…...
java面试题中常见名词注解
一.常见名词注解 1.mysql索引,索引数据结构,hash,二叉树,B树,B树,红黑树, mysql索引:帮助mysql高效获取数据的数据结构,通俗来说,数据库索引就好比一本书的…...
SpringAOP从入门到源码分析大全,学好AOP这一篇就够了(二)
文章目录系列文档索引四、Spring AOP的使用入门1、激活AspectJ模块(1)注解激活(2)XML激活2、创建 AspectJ 代理(了解)(1)编程方式创建 AspectJ 代理实例(2)XM…...
华为OD机试 - 斗地主(C++) | 附带编码思路 【2023】
刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…...
【存储】etcd的存储是如何实现的(3)-blotdb
前两篇分别介绍了etcd的存储模块以及mvcc模块。在存储模块中,提到了etcd kv存储backend是基于boltdb实现的,其在boltdb的基础上封装了读写事务,通过内存缓存批量将事务刷盘,提升整体的写入性能。botldb是etcd的真正的底层存储。本…...
earthengine-api 未来展望:路线图、新功能和社区发展趋势
earthengine-api 未来展望:路线图、新功能和社区发展趋势 【免费下载链接】earthengine-api Python and JavaScript bindings for calling the Earth Engine API. 项目地址: https://gitcode.com/gh_mirrors/ea/earthengine-api earthengine-api 作为连接地球…...
Z-Image-Turbo_Sugar脸部Lora效果增强:ControlNet+Lora联合调控Sugar脸部结构
Z-Image-Turbo_Sugar脸部Lora效果增强:ControlNetLora联合调控Sugar脸部结构 想生成那种又纯又欲、甜度爆表的Sugar风格脸部图片吗?是不是经常遇到模型生成的脸型不够精致、五官比例失调,或者风格不够统一的问题?今天,…...
收藏 | 阿里字节开源Agent框架大比拼:小白程序员必看,三种思路助你入门大模型!
本文对比了阿里和字节开源的HiClaw、CoPaw和DeerFlow三个Agent框架,分析了它们在架构设计、安全模型和适用场景上的差异。HiClaw侧重多Agent协作,CoPaw聚焦个人AI助手,DeerFlow强调单Agent深度任务处理。文章还探讨了阿里组合拳与字节单点突破…...
C语言起源发展全知道,带你了解编程界元老的辉煌历程
C言语是一种具有通用性的编程言语,在软件开发范畴被广泛运用,如操作系统、嵌入式系统、高性能服务器还有各类应用软件,它因强大功能、简洁语法以及高效性能而闻名,本文会详细介绍C言语的起源、发展进程以及其在当今编程世界里的地…...
抖音直播数据抓取实战:零基础掌握直播间弹幕分析技术
抖音直播数据抓取实战:零基础掌握直播间弹幕分析技术 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要获取抖音直播间的…...
ncmdumpGUI终极指南:解锁你的音乐收藏,告别NCM格式束缚
ncmdumpGUI终极指南:解锁你的音乐收藏,告别NCM格式束缚 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况&am…...
MedGemma-X部署教程:一行命令启动,开启自然语言交互的影像分析
MedGemma-X部署教程:一行命令启动,开启自然语言交互的影像分析 1. 为什么选择MedGemma-X? 在医疗影像分析领域,传统CAD系统往往只能提供简单的二分类结果(如"正常/异常"),而MedGemm…...
LiuJuan20260223Zimage新手必看:从CSDN博客文档到本地成功出图的避坑指南
LiuJuan20260223Zimage新手必看:从CSDN博客文档到本地成功出图的避坑指南 你是不是也遇到过这种情况?在CSDN上看到一个有趣的AI绘画模型,比如这个LiuJuan20260223Zimage,文档写得清清楚楚,但自己一上手部署࿰…...
Go语言实战:用EMQX搭建MQTT物联网系统(含Docker部署指南)
Go语言与EMQX实战:构建高可靠物联网通信系统 1. 物联网通信基础与MQTT协议解析 在万物互联的时代,设备间的实时通信成为物联网系统的核心需求。MQTT协议凭借其轻量级、低功耗和高效发布/订阅机制,已成为物联网领域的事实标准。让我们深入探讨…...
Java线程池中如何用TransmittableThreadLocal避免变量丢失?附完整Demo
Java线程池中TransmittableThreadLocal的实战应用与避坑指南 在Java高并发编程中,线程池是提升性能的利器,但线程复用机制却给上下文传递带来了挑战。当我们在父线程设置变量,子线程却无法获取时,这种"断链"现象常让开发…...
