在Google Earth Engine中将图像结果剪辑为ROI

时间:2018-07-24 14:02:00

标签: mapping clip google-earth-engine

我为Google Earth Engine中特定的感兴趣区域开发了海面温度的时间序列。运行下面的代码,可以显示整个数据集中的海面温度

Map.addLayer(BIOT)

// Load an image.
var sst = ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI').select('sst')
  .filterDate('2013-01-01', '2018-01-01')
  .filterBounds(BIOT);

print('sst', sst)

var TS1 = Chart.image.series(sst, BIOT,  ee.Reducer.mean(),
1000, 'system:time_start').setOptions({title: 'BIOT SST',vAxis: {title: 'SST 
Celsius'},
});
print(TS1);

Map.setCenter(72.25, -6.8, 7); //lat, long, zoom
Map.addLayer (sst, {'min': 23, 'max': 34, 'palette':"0000ff,32cd32,ffff00,ff8c00,ff0000"});

我尝试添加代码:

Map.addLayer(sst.clip(BIOT))

要将数据剪切到我已经定义的区域(BIOT),但是图像仍显示所有区域的所有数据,而不是我指定的区域。有任何想法吗?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

sstImageCollection,无法以这种方式进行裁剪。这也意味着,在执行Map.addLayer(sst)时,您正在映射集合中的所有图像,如果它们在空间上重叠,则它们将相互覆盖。

如果您仍然希望这样做,并且无论如何仅需要来自AOI BIOT的数据,则可以在创建.map(function(image){return image.clip(BIOT)})时添加ImageCollection

// Load an image **collection**.
var sst = ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI').select('sst')
  .filterDate('2013-01-01', '2018-01-01')
  .filterBounds(BIOT)
  .map(function(image){return image.clip(BIOT)}) ;

这将遍历集合中的每个图像并将其裁剪到BIOT