在子集集合中应用GEE函数

时间:2018-06-29 05:16:47

标签: google-earth-engine

我需要在一个年度集合中应用一个函数,对六个相邻图像进行图像插值。但是,该功能必须从图像N°7开始才能正确运行。我尝试使用循环,但返回错误,因为集合长度与函数中的子集不匹配。另一方面,我自己的代码仅返回循环执行的子集中的第一张图像。

var terraCollection = ee.ImageCollection('MODIS/006/MOD10A1').filterBounds(pt).select('NDSI_Snow_Cover').sort('system:time_start', true).filterDate('2015-01-01', '2017-12-30');

var collectionSize = terraCollection.size().getInfo();
    print(terraCollection); //356 images
var list= terraCollection.toList(terraCollection.size());

var filteradj = function(image) {
    for (var i = 7; i <= collectionSize; i= i+1){
         var b0 = ee.Image(list.get(i-0)).select('remapped');
         var b1 = ee.Image(list.get(i-1)).select('remapped');
         var b2 = ee.Image(list.get(i-2)).select('remapped');
         var b3 = ee.Image(list.get(i-3)).select('remapped');
         var b4 = ee.Image(list.get(i-4)).select('remapped');
         var b5 = ee.Image(list.get(i-5)).select('remapped');
         var b6 = ee.Image(list.get(i-6)).select('remapped');
 var ft = b0.where(b0.eq(1).and(b1.eq(3)),3)
            .where(b0.eq(1).and(b1.eq(2)),2)
            .where(b0.eq(1).and(b2.eq(3)),3)
            .where(b0.eq(1).and(b2.eq(2)),2)
            .where(b0.eq(1).and(b3.eq(3)),3)
            .where(b0.eq(1).and(b3.eq(2)),2)
            .where(b0.eq(1).and(b4.eq(3)),3)
            .where(b0.eq(1).and(b4.eq(2)),2)
            .where(b0.eq(1).and(b5.eq(3)),3)
            .where(b0.eq(1).and(b5.eq(2)),2)
            .where(b0.eq(1).and(b6.eq(3)),3)
            .where(b0.eq(1).and(b6.eq(2)),2);
return ft;
}
};

var filter = terraCollection.map(filteradj);
var final=ee.ImageCollection(filter);

0 个答案:

没有答案