在Google Earth引擎的imageCollection中的2个连续图像上应用函数

时间:2019-03-27 19:15:24

标签: google-earth-engine

函数permanent=True将函数应用于ImageCollection中的每个图像。函数.map将一个函数应用于一个图像,并将计算的输出应用于ImageCollection上的先前图像。 第一个每次仅处理一个图像,第二个意味着修改每个图像并将其用于下一个图像的任何计算。

我需要一个功能类似于.iterate的功能,但不会修改先前的图像。我只需要做: .iterate。 我找不到解决办法,

感谢您的帮助

我尝试过,

image (time -1) / image (time 0)

1 个答案:

答案 0 :(得分:0)

您可以做的是将imageCollection转换为ee.List对象,然后使用索引变量映射到该列表以访问先前的图像。示例代码如下:

var length = yourImageCollection.size();
var list = yourImageCollection.toList(length);

var calculated_list = list.map(function(img) {
    var index = list.indexOf(img)
    img = ee.Image(img);
    var previousIndex = ee.Algorithms.If(index.eq(0), index, index.subtract(1));
    var previousImage = ee.Image(list.get(previousIndex)):
    var change = ee.Image(previousImage.divide(img)
                                       .copyProperties(img, ["system:time_start"]));
    return change;
})

我不确定您要如何处理第一张图像,因此当map功能到达第一张图像时,previousIndex将等于index。换句话说,第一张图像将被自己分割(因为之前没有图像)。

希望这会有所帮助。