我正在尝试在一个有很多云的区域(印度尼西亚云森林)中的谷歌地球引擎中制作一个无云的陆地卫星复合材料。以前,我通过制作最绿色的像素合成成功地实现了这一点,其中我使用具有最高 NDVI 值的像素来确保我在合成图像中使用非云像素。
//Filter landsat 8 image collection by date, area
var collection = landsat
.filterBounds(bounds)
.filterDate(2016-08-01, 2016-10-31);
// Sort from least to most cloudy and get first (least cloudy) image
var sorted = collection.sort('CLOUD_COVER');
var image = ee.Image(sorted.first());
//Function to get NDVI
var addNDVI = function(image) {
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
return image.addBands(ndvi);
};
//Add NDVI bands to image collection
var withNDVI = landsat.map(addNDVI);
// Make a "greenest" pixel composite using NDVI
var greenest = withNDVI.qualityMosaic('NDVI');
Map.addLayer(greenest, {bands: ['B4', 'B3', 'B2'], max: 0.15}, 'greenest');
该代码工作正常,但是,我担心使用最高的 NDVI 像素来使我的合成过度代表森林区域。因此,我正在寻找一种方法来提取具有最高 NDVI 的像素(以摆脱云),然后在我的合成中使用该像素的所有 7 个其他波段(而不是使用 NDVI 波段本身)。我的问题是:这甚至会摆脱森林的过度代表,还是我仍然会遇到同样的问题?其次,如果这种方法看起来确实是一种在制作不会过度代表森林的合成时去除云层的合法方法,那么我如何提取高 NDVI 的像素,然后使用它们的其他波段进行合成?