函数permanent=True
将函数应用于ImageCollection中的每个图像。函数.map
将一个函数应用于一个图像,并将计算的输出应用于ImageCollection上的先前图像。
第一个每次仅处理一个图像,第二个意味着修改每个图像并将其用于下一个图像的任何计算。
我需要一个功能类似于.iterate
的功能,但不会修改先前的图像。我只需要做:
.iterate
。
我找不到解决办法,
感谢您的帮助
我尝试过,
image (time -1) / image (time 0)
答案 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
。换句话说,第一张图像将被自己分割(因为之前没有图像)。
希望这会有所帮助。