时间序列处理相关函数及案例

news2024/11/15 16:35:40

目录

  • 常用函数
  • 日期对象
    • ee.Date.fromYMD()
    • ee.List.sequence()
  • 序列影像处理
    • ee.ImageCollection.fromImages()
    • ee.Filter.calendarRange()
    • .set()
  • 案例:统计年均降水量
    • 图像集合变量的使用

常用函数

日期对象

ee.Date.fromYMD()

ee.Date.fromYMD是Google Earth Engine中的一个方法,用于根据给定的年份(Year)、月份(Month)和日期(Day)创建一个日期对象(Date)。它的语法是:

ee.Date.fromYMD(year, month, day)

其中,year是一个整数,表示年份;month是一个整数,表示月份(1代表一月,2代表二月,依此类推);day也是一个整数,表示日期。这个方法会返回一个表示指定日期的ee.Date对象。

例如,如果要创建一个表示2023年5月15日的日期对象,可以这样写:

var date = ee.Date.fromYMD(2023, 5, 15);

这将返回一个ee.Date对象,表示2023年5月15日。

ee.List.sequence()

ee.List.sequence是Google Earth Engine中的一个函数,用于创建一个数字序列的列表。它的语法是:

ee.List.sequence(start, end, step)

其中,start是序列的起始值,end是序列的结束值,step是序列的步长(可选,默认为1)。该函数返回一个包含指定数字范围内所有数字的列表。

例如,如果要创建一个从1到10的数字序列,可以这样写:

var sequence = ee.List.sequence(1, 10);

如果想要指定步长,比如每隔2个数取一个值,可以这样写:

var sequence = ee.List.sequence(1, 10, 2);

这将返回一个列表,包含数字1、3、5、7、9。
在这里插入图片描述

序列影像处理

ee.ImageCollection.fromImages()

ee.ImageCollection.fromImages是Google Earth Engine中的一个方法,用于从一组图像对象创建图像集合。它的语法是:

ee.ImageCollection.fromImages(images)

其中,images是一个包含图像对象的数组。该方法将这些图像对象转换为一个图像集合,并返回该图像集合。

例如,如果有一组图像对象image1、image2、image3,可以这样将它们转换为一个图像集合:

var imageCollection = ee.ImageCollection.fromImages([image1, image2, image3]);

这将返回一个包含这三个图像的图像集合。

ee.Filter.calendarRange()

ee.Filter.calendarRange是Google Earth Engine中的一个过滤器,用于过滤图像集合中满足指定日期范围的图像。它的语法是:

ee.Filter.calendarRange(start, end, field)

其中,start是日期范围的起始日期,end是日期范围的结束日期,field是表示日期的字段。field可以是以下值之一:‘year’、‘month’、‘day’、‘hour’、‘minute’、‘second’。该方法将返回一个过滤器对象,用于筛选满足指定日期范围的图像。

例如,如果要筛选出某个图像集合中2019年1月1日至2019年12月31日之间的图像,可以这样写:

var startDate = ee.Date.fromYMD(2019, 1, 1);
var endDate = ee.Date.fromYMD(2019, 12, 31);

var filter = ee.Filter.calendarRange(startDate, endDate, 'year');

这将返回一个过滤器对象,用于筛选出2019年的图像。

.set()

.set是Google Earth Engine中用于设置图像、特征或图像集合的属性的方法。它允许您为对象添加或更新属性。

在上下文中,.set(‘year’, year)和.set(‘system:time_start’, ee.Date.fromYMD(year, 1, 1))分别用于为生成的年度降水图像设置属性。第一个 .set 用于设置年份属性,而第二个 .set 用于设置起始时间属性。

例如:

var image = ee.Image(0); // 创建一个图像对象
image = image.set('year', 2022); // 设置图像的年份属性为2022
image = image.set('system:time_start', ee.Date.fromYMD(2022, 1, 1)); // 设置图像的起始时间属性为2022年1月1日

在这个例子中,我们创建了一个值为0的图像对象,然后使用 .set 方法为该图像对象设置了两个属性,分别是年份属性(‘year’)和起始时间属性(‘system:time_start’)。

案例:统计年均降水量

var chirps = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY");
// 设置开始和结束的年份
var startyear = 1990;
var endyear = 2020;
 
// 时间格式
var startdate = ee.Date.fromYMD(startyear, 1, 1);
var enddate = ee.Date.fromYMD(endyear + 1, 1, 1);
 
// 制作时序
var years = ee.List.sequence(startyear, endyear);
print(years)
 
 
//获取矢量边界,这里改动边界就好了,也就是要上传你自己的矢量边界,或者直接在地图上画
var countries = ee.FeatureCollection('projects/a-flyllf0313/assets/tianshui');
 
 
// 将其转化为geometry
var SriLanka = countries.geometry();
 
//影像的处理和过滤,这里需要选择加入你要用的影像数据
var annualPrecip = ee.ImageCollection.fromImages(
  years.map(function (year) {
    var annual = chirps
        .filter(ee.Filter.calendarRange(year, year, 'year'))
        .sum();
    return annual
        .set('year', year)
        .set('system:time_start', ee.Date.fromYMD(year, 1, 1));
}));

 //设置计算的区域降水的统计和参数设置
var title = {
  title: 'Annual precipitation',
  hAxis: {title: 'Time'},
  vAxis: {title: 'Precipitation (mm)'},
};
 
var chart = ui.Chart.image.seriesByRegion({
  imageCollection: annualPrecip,
  regions: SriLanka,
  reducer: ee.Reducer.mean(),
  band: 'precipitation',
  scale: 2500,
  xProperty: 'system:time_start',
  seriesProperty: 'SITE'
}).setOptions(title)
  .setChartType('ColumnChart');
 
//打印chart
print(chart);
 
var annualMean = annualPrecip.mean().clip(SriLanka);
 
var pViz = {
  min: 400,
  max: 800,
  palette: '000000, 0000FF, FDFF92, FF2700, FF00E7'
};
 
Map.centerObject(countries, 5);
Map.addLayer(annualMean, pViz, 'mean yearly P');

这段代码首先加载了名为“UCSB-CHG/CHIRPS/DAILY”的降水数据集,然后设置了开始年份和结束年份,以及时间格式。接着,通过 ee.List.sequence 方法创建了一个从1990年到2020年的年份序列。

接下来,代码获取了一个矢量边界,并将其转换为几何对象,以指定感兴趣区域。然后,使用 ee.ImageCollection.fromImages 方法按年份遍历降水数据集,并对每年的数据进行累加,得到年度总降水量图像集合。

随后,代码设置了用于生成降水量图表的参数,并使用 ui.Chart.image.seriesByRegion 方法生成了该图表。图表展示了感兴趣区域内年度降水量的变化趋势。

最后,代码计算了年均降水量,并将其裁剪到感兴趣区域,并将结果添加到地图中进行可视化。

整个过程旨在分析感兴趣区域内年度降水量的变化趋势,并提供相应的可视化结果。

在这里插入图片描述
在这里插入图片描述

图像集合变量的使用

annualPrecip是创建的一个图像集合变量(ImageCollection)
在这里插入图片描述
由ee.ImageCollection.fromImages()创建,使用在下方的创建图表需要用到的imageCollection参数中

var chart = ui.Chart.image.seriesByRegion({
  imageCollection: annualPrecip,
  regions: SriLanka,
  reducer: ee.Reducer.mean(),
  band: 'precipitation',
  scale: 2500,
  xProperty: 'system:time_start',
  seriesProperty: 'SITE'
}).setOptions(title)
  .setChartType('ColumnChart');

另外,还可以在后面跟.mean()来对图像集合变量进行统计

var annualMean = annualPrecip.mean().clip(SriLanka);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15.0 Scrapy 使用中出现的错误分享

目录 一、把 Scrapy项目创建在一个 python 项目中 1、导致情况及解决方法(简述) 2、导致情况及解决方法(详述) 2.1 导致引入模块时找不到 2.2 后续 scrapy crawl 命令报错 一、把 Scrapy项目创建在一个 python 项目中 1、导致情况及解决方法(简述) (1&#x…

Linux 多线程开发

第三章 Linux 多线程开发 3.1 线程3.1.2 线程操作3.1.2 线程属性 3.2 线程同步3.2.1 互斥量/锁3.2.2 死锁3.2.3 读写锁 3.3 生产者消费者模型3.3.1 条件变量3.3.2 信号量/灯 网络编程系列文章: 第1章 Linux系统编程入门(上) 第1章 Linux系统…

返回值不同算方法重载么?为什么?

1、典型回答 返回值不同不算方法重载 方法重载(Overloading)是指在同一个类中定义了多个同名方法,但它们的参数列表不同,方法重载要求方法: 名称相同参数类型、参数个数或参数顺序,至少有一个不同 方法…

QT----计算器

目录 1 搭建标准界面2、 逻辑编写2.1 初始化 github链接:基于qt的计算器 1 搭建标准界面 按照下图搭设界面 修改样式让这计算器看起来更像一点,同时对按钮分组进行样式编辑,添加字符串name,为number,其他按键为other。之前的文章…

2024会声会影 软件介绍、下载,功能介绍及问题解答

会声会影正式版是一款使用起来十分件便捷的影视后期视频编辑处理软件,会声会影正式版操作简单,还具备了独特创意、灵活有趣等特点,并且软件还具备了上百种滤镜和特效、调控速度、从多机新增视讯片段等等功能,会声会影官方版便捷好…

2024上海网络安全产业创新大会成功举办,天空卫士成为焦点

2月28日,由上海市经济和信息化委员会、上海市普陀区人民政府主办的2024上海网络安全产业创新大会在上海跨国采购会展中心举办。天空卫士受邀参加2023年重点行业网络安全解决方案揭榜结果发布暨合作签约仪式,并参加了工业互联网安全产业创新论坛和数据安全…

【Python】新手入门学习:什么是python解释器,它的作用是什么?

【Python】新手入门学习:什么是python解释器,它的作用是什么? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基…

Day37:安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类

目录 JNDI注入-RMI&LDAP服务 JNDI远程调用-JNDI-Injection JNDI远程调用-marshalsec JNDI-Injection & marshalsec 实现原理 JNDI注入-FastJson漏洞结合 JNDI注入-JDK高版本注入绕过 思维导图 Java知识点: 功能:数据库操作,文…

C语言⽂件操作

1. 为什么使⽤⽂件 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存&…

羊大师分析,羊奶养生智慧

羊大师分析,羊奶养生智慧 羊奶,这一古老而自然的饮品,近年来逐渐受到越来越多人的青睐。其独特的营养价值与养生功效,使得羊奶成为了追求健康生活的人们的理想选择。那么,羊奶究竟蕴藏着怎样的养生智慧呢?…

MQ的相关概念

微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。 同步通讯 同步调用的优点: 时效性较强,可以立即得到结果 Feign调用就属于同…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统(DNS)三、文本传输协议(FTP)四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统(DNS) 我们知道,随着人们建立一个网站…

Redis底层数据结构之String

文章目录 1. 前提回顾2. RedisObject三大数据类型简介3. SDS字符串4. SDS字符串源码分析5. 总结 1. 前提回顾 前面我们说到redis的String数据结构在底层有多种编码方式。例如我们执行下面两条语句 set k1 v1 set age 17我们查看类型,发现这类型都是String类型 我们…

动态规划课堂5-----子序列问题(动态规划 + 哈希表)

目录 引言: 例题1:最长递增子序列 例题2:最长定差子序列 例题3:最长的斐波那契子序列的长度 例题4:最长等差数列 例题5:等差数列划分II-子序列 结语: 引言: 要想解决子序列问…

pc端vue2项目使用uniapp组件

项目示例下载 运行实例: 这是我在pc端做移动端底代码时的需求,只能在vue2使用,vue3暂时不知道怎么兼容。 安装依赖包时可能会报:npm install Failed to set up Chromium r756035! Set “PUPPETEER_SKIP_DOWNLOAD” env variable …

伪分布式Spark集群搭建

一、软件环境 软 件 版 本 安 装 包 VMware虚拟机 16 VMware-workstation-full-16.2.2-19200509.exe SSH连接工具 FinalShell Linux OS CentOS7.5 CentOS-7.5-x86_64-DVD-1804.iso JDK 1.8 jdk-8u161-linux-x64.tar.gz Spark 3.2.1 spark-3.2.1-bin-…

JVM的整体架构

JVM的整体架构 JVM的架构模型 基本上是基于栈的指令集架构 基于栈式架构的特点 设计和实现更简单,适用于资源受限的系统避开了寄存器的分配难题:使用零地址指令方式分配指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更…

AI写作一键生成原创文案,效率高!

AI写作一键生成原创文案,效率高!当下时代,文案写作对于各个企业推广产品和服务显得隔外重要。优秀的文案能够吸引用户的注意力,激发购买欲望,从而为企业带来更多的销售机会。然而,对于许多人来说&#xff0…

【Python】新手入门学习:什么是工作目录?

【Python】新手入门学习:什么是工作目录? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得…

【Python机器学习系列】自助法计算机器学习评价指标的置信区间(案例+源码)

这是我的第235篇原创文章。 一、引言 Bootstrap方法是非常有用的一种统计学上的估计方法,是一类非参数Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。 自助法计算分类模型的AUC、准确率、特异度和灵敏…