由于云雨等影响,使得遥感数据无法有效地观测地面,这种影响在NDVI上表现为低值噪声,为了降低这种影响,通常使用最大值合成的方法,得到相邻时间内最佳观测值作为填充值,从而消除低值噪声。这种方法简单实用,但是无法恢复地表真实情况,且会造成最大值对应的日期发生偏移,通常还要结合各种滤波算法对时间序列数据进行平滑,比如S-G滤波、谐波分析等。
为了实现最大值合成,需要将时间序列数据(ee.Image)转为更易处理的数组(ee.Array)。实现的过程比较简单,使用滑动窗口,在时间序列上取窗口内的最大值作为返回值,具体实现代码:
function MVC(inputNDVIcl , slideWindows)
{
var halfSize = (slideWindows-1)/2;
var imageSize =inputNDVIcl.size();
var list = ee.List.sequence(halfSize, imageSize.subtract(halfSize+1));
//将影像集转为arrayimage
var imagesArray = inputNDVIcl.toArray().arrayProject([0]);
var date_start =ee.Date(inputNDVIcl.first().get('system:time_start'));
var slide =ee.ImageCollection(
list.map(function(index){
var date = ee.Number(index).add(1).multiply(8);
var