You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Landsat影像云覆盖并解决simpleComposite映射报错

问题分析与解决方案

错误原因

ee.Algorithms.Landsat.simpleComposite函数的返回值是单张合成影像(ee.Image),而非影像集合(ee.ImageCollection)。你将其赋值给filtered变量后,filtered不再是集合类型,因此调用filtered.map()会报错“map is not a function”。

解决方案

根据你的需求(保留云量低于10%的影像,计算年平均MSAVI2),有两种正确实现方式:


方式一:筛选低云量影像后逐景计算MSAVI2再求平均

此方式严格保留云量<10%的单景影像,分别计算每景的MSAVI2后取中位数(或均值)作为年平均结果。

var LS7 = ee.ImageCollection("LANDSAT/LE07/C02/T1");

// 筛选日期+云量低于10%的影像集合
var filtered = LS7.filterDate('2016-01-01', '2016-12-31')
                  .filter(ee.Filter.lt('CLOUD_COVER', 10)); // 利用影像属性筛选云量

// 遍历集合计算每景影像的MSAVI2
var MSAVI2_collection = filtered.map(function (image) {
  return image.expression(
    '(2 * NIR + 1 - sqrt(pow((2 * NIR + 1), 2) - 8 * (NIR - RED)) ) / 2', 
    {
      'NIR': image.select('B4'), 
      'RED': image.select('B3')
    }
  ).rename('MSAVI2'); // 给结果波段命名,方便后续处理
});

// 计算所有MSAVI2影像的中位数(或用.mean()求均值)
var MSAVI2 = MSAVI2_collection.median();

// 添加图层到地图
Map.addLayer(MSAVI2, {min: -0.15, max: 0.15}, 'MSAVI2 Annual Median');

方式二:使用simpleComposite生成低云合成影像后计算MSAVI2

如果你希望生成一张云量最少的合成影像(而非保留单景),可以直接对合成影像计算MSAVI2:

var LS7 = ee.ImageCollection("LANDSAT/LE07/C02/T1");

// 筛选日期后生成低云合成影像
var composite = LS7.filterDate('2016-01-01', '2016-12-31')
                   .map(function(image) {
                     // 对C02数据应用云掩膜(可选,增强合成效果)
                     var qa = image.select('QA_PIXEL');
                     var cloudMask = qa.bitwiseAnd(1 << 3).eq(0) // 云掩码
                                   .and(qa.bitwiseAnd(1 << 4).eq(0)); // 云阴影掩码
                     return image.updateMask(cloudMask);
                   })
                   .simpleComposite({asFloat: true});

// 对合成影像计算MSAVI2
var MSAVI2 = composite.expression(
  '(2 * NIR + 1 - sqrt(pow((2 * NIR + 1), 2) - 8 * (NIR - RED)) ) / 2', 
  {
    'NIR': composite.select('B4'), 
    'RED': composite.select('B3')
  }
);

// 添加图层到地图
Map.addLayer(MSAVI2, {min: -0.15, max: 0.15}, 'MSAVI2 Composite');

关键说明

  • Landsat C02数据的云量属性为CLOUD_COVER,范围0-100,可直接用于集合筛选。
  • 若使用simpleComposite,建议先对影像进行云掩膜处理,提升合成影像的质量。
  • 年平均可选择median()(中位数,抗异常值能力更强)或mean()(算术均值),根据需求调整。

内容的提问来源于stack exchange,提问作者Jason Edelkind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:27:15