十识
第1节:过滤图像集合
我们将首先访问CHIRPS Pentad 集合并对其进行过滤以创建一年的时间序列。
var chirps=ee.ImageCollection(\''UCSB-CHG/CHIRPS/PENTAD\'');
var startDate=\''2019-01-01\'';
var endDate=\''2020-01-01\'';
var yearFiltered=chirps.filter(ee.Filter.date(startDate, endDate));
print(yearFiltered, \''Date-filtered CHIRPS images\'');
CHIRPS 集合包含每个五位图的一张图像。上面的过滤集合被过滤为包含一年,相当于72个全局图像。如果你在控制台中展开打印的集合,你将能够看到单个图像的元数据;请注意,它们的日期戳表明它们每五天均匀间隔一次。
每个图像的像素值存储五点期间的总降水量。如果没有聚合到与其他数据集匹配的时期,这些图层就不是很有用。对于水文分析,我们通常需要每月或一个季节的总降水量。让我们聚合这个集合,以便我们有12个图像-每月一张图像,其像素值代表该月的总降水量。
第2节:使用日期
为了聚合时间序列,我们需要学习如何以编程方式创建和操作日期。本节介绍ee的一些函数。有用的日期模块。
Earth Engine API 有一个名为ee的函数。Date.fromYMD旨在根据年、月和日值创建日期对象。以下代码片段显示如何定义包含年份值的变量并从中创建日期对象。将以下代码粘贴到新脚本中:
var chirps=ee.ImageCollection(\''UCSB-CHG/CHIRPS/PENTAD\'');
var year=2019;
var startDate=ee.Date.fromYMD(year, 1, 1);
现在,让我们确定如何创建结束日期以便能够指定所需的时间间隔。创建相对于另一个日期的日期的p引用方法是使用advance函数。它需要两个参数——增量值和时间单位——并返回一个新日期。下面的代码显示了如何创建给定日期以后一年的日期。将其粘贴到你的脚本中。
var endDate=startDate.advance(1, \''year\'');
接下来,粘贴下面的代码以使用这些计算的日期执行 CHIRPS 数据的过滤。运行后,通过查找打印结果中图像的日期来检查你是否已准确设置日期。
var yearFiltered=chirps
.filter(ee.Filter.date(startDate, endDate));
print(yearFiltered, \''Date-filtered CHIRPS images\'');
Earth Engine 中非常常用的另一个日期函数是millis.此函数采用日期对象并返回自1970年开始的任意参考日期以来的毫秒数:1970-01-01T00:00:00Z。这被称为“Unix 时间戳”;它是将日期转换为数字的标准方法,可以轻松地以高精度比较日期。Earth Engine 对象将图像和要素的时间戳存储在名为system:time_start 和system:time_end 的特殊属性中。这两个属性都需要提供数字而不是日期,并且millis 函数可以帮助你做到这一点。你可以打印调用该函数的结果并自行检查。
print(startDate, \''Start date\'');
print(endDate, \''End date\'');
print(\''Start date as timestamp\'', startDate.millis());
print(\''End date as timestamp\'', endDate.millis());
当我们需要设置聚合图像的system:time_start 和system:time_end属性时,我们将在下一节中使用millis函数。
第3节:聚合图像
现在我们可以开始将五元数汇总为每月的总和。聚合过程有两个基本步骤。第一个是确定一个时间间隔(在本例中为一个月)的开始日期和结束日期,第二个是对每个时间间