遍历图像集合
虽然 map() 会对集合中的每幅图像应用一个函数,但该函数会独立访问集合中的每幅图像。 例如,假设您想从时间序列中计算 t 时刻的累积异常值 (At)。 要获得 At = f(Imaget,At-1)形式的递归定义序列,映射是行不通的,因为函数(f)取决于前一个结果(At-1)。 例如,假设您想计算一系列相对于基线的累积归一化差异植被指数 (NDVI) 异常图像。 让 A0 = 0,f(Imaget, At-1) = Imaget + At-1,其中 At-1 是截至时间 t-1 的累积异常值,Imaget 是时间 t 的异常值。使用 imageCollection.iterate() 递归定义 ImageCollection。 在下面的示例中,函数 accumulate() 接受两个参数:集合中的一幅图像和之前所有输出的列表。 每次调用 iterate(),都会将异常添加到运行总和中,并将结果添加到列表中。 最终结果将传递给 ImageCollection 构造函数,以获得新的图像序列:
在Google Earth Engine (GEE) 中,iterate 函数用于在集合或列表中迭代应用一个函数,并返回一个新的集合或列表。iterate 函数的语法如下:

eeObject.iterate(function, initialValue)

其中:

  • eeObject 是要迭代的集合或列表对象。
  • function 是应用于集合或列表的函数。该函数必须接受两个参数,第一个参数是迭代中的元素,第二个参数是一个累积值,表示已经应用该函数的元素。该函数必须返回结果集合或列表中的一个元素。
  • initialValue 是迭代过程中的初始值,在第一次迭代时会被传递给函数。

iterate 函数可以用于多种目的,例如计算时间序列的累积值、对图像集合进行分类、应用统计函数等。但请注意,iterate 函数在每次迭代中都会重新计算,因此非常耗费计算资源。对于大型集合或列表,建议使用其他技术来避免性能问题,比如使用 map 函数替代 iterate 函数。

代码解释

这段代码使用Google Earth Engine (GEE) 分析了MODIS EVI时间序列数据。以下是每个部分的解释:

  1. collection = ee.ImageCollection('MODIS/006/MYD13A1').select('EVI')

    • 这行代码创建了一个ImageCollection对象,该对象指定了数据集的ID(MODIS/006/MYD13A1)和要选择的波段(EVI)。
  2. reference = collection.filterDate('2001-01-01', '2010-12-31')

    • 这行代码过滤了时间范围,仅保留了2001年到2010年的数据。这个范围被用作计算平均值的参考数据集。
  3. mean = reference.mean()

    • 这行代码计算了参考数据集的平均值。<
01-08 19:23