在GEE中循环内部功能

时间:2018-06-26 04:30:37

标签: google-earth-engine gee

我需要在356个图像的集合中应用一个函数,并对六个相邻图像在图像中进行插值。但是,我必须包括一个从第7个图像开始直到该集合的最后一个图像的循环。我创建的函数允许我在列表中使用特定数字图像开始和结束循环时使用(例如:151),但是当我希望将其应用到整个集合中时不能使用该函数,因为它会返回列表中的第一个图像集合。

1. Function doesnt work for entire collection
    var list3= maxCollection.toList(maxCollection.size());
    var img3 = list3.get(151);
    var imgsnow3 = ee.Image(img3).reproject('EPSG:32719', null, 500);

    var collectionSize = maxCollection.size().getInfo();

    var temporal = function(image) {
    for (var i = 7; collectionSize; ++i){
     var b0 =  ee.Image(list3.get(i-0)).select('remapped');
     var b1 =  ee.Image(list3.get(i-1)).select('remapped');
     var b2 =  ee.Image(list3.get(i-2)).select('remapped');
     var b3 =  ee.Image(list3.get(i-3)).select('remapped');
     var b4 =  ee.Image(list3.get(i-4)).select('remapped');
     var b5 =  ee.Image(list3.get(i-5)).select('remapped');
     var b6 =  ee.Image(list3.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 = maxCollection.map(temporal);
    var temporalCollection=ee.ImageCollection(filter);

2. Function works for specific image
    var list3= maxCollection.toList(maxCollection.size());
    var img3 = list3.get(151);
    var imgsnow3 = ee.Image(img3).reproject('EPSG:32719', null, 500);

    var collectionSize = maxCollection.size().getInfo();

    var temporal = function(image) {
    for (var i = 151; 151; ++i){
     var b0 =  ee.Image(list3.get(i-0)).select('remapped');
     var b1 =  ee.Image(list3.get(i-1)).select('remapped');
     var b2 =  ee.Image(list3.get(i-2)).select('remapped');
     var b3 =  ee.Image(list3.get(i-3)).select('remapped');
     var b4 =  ee.Image(list3.get(i-4)).select('remapped');
     var b5 =  ee.Image(list3.get(i-5)).select('remapped');
     var b6 =  ee.Image(list3.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 = maxCollection.map(temporal);
    var temporalCollection=ee.ImageCollection(filter);

0 个答案:

没有答案