在Google Earth Engine Developer's Guide中,有一个避免for()
循环的建议。他们建议使用map()
函数作为这个例子:
// to avoid
var clientList = [];
for(var i = 0; i < 8; i++) {
clientList.push(i + 1);
}
print(clientList);
// to use
var serverList = ee.List.sequence(0, 7);
serverList = serverList.map(function(n) {
return ee.Number(n).add(1);
});
print(serverList);
我试图在计算 VCI 之前从每个月/年中选择 MODIS 场景。所以,我采取的方法是双循环:
modis = ee.ImageCollection("MODIS/MYD13A1");
var modis_list = [];
for(var i = 1; i <13; i++) {
for(var j = 2000; j <2018; j++){
modis_list.push(modis.filter(ee.Filter.calendarRange(i, i, 'month'))
.filter(ee.Filter.calendarRange(j, j, 'year')));
}
}
print(modis_list);
有没有一种方法可以复制这样的双循环,并map()
具有达到服务器端方法的功能?