Cloud-free: Layer error: reduce.median: Error in map(ID=20210104T030121_20210104T030120_T50RKU): Image.rename, argument 'input': Invalid type. Expected type: Image<unknown bands>. Actual type: Float. Actual value: 0.0
时间: 2023-12-21 22:04:19 浏览: 204
抱歉,我之前提供的代码有误,出现了上述错误。错误提示是因为在添加 `cloudProb` 波段时,有些图像 `cloudProb` 的值为 0,导致在进行 `reduce.median()` 操作时出现了错误。
下面是已经修正的代码,将在添加 `cloudProb` 波段时,将 0 值的像素设置为 null:
```javascript
// 加载哨兵2数据集
var sentinel2 = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(geometry)
.filterDate('2021-01-01', '2021-06-01')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(function(img){
var ndvi = img.normalizedDifference(['B8','B4']).rename('NDVI');
var cloudProb = ee.Image(img.get('CLOUDY_PIXEL_PERCENTAGE')).rename('cloudProb');
cloudProb = cloudProb.where(cloudProb.eq(0), null); // 将 0 值的像素设置为 null
return img.addBands(ndvi).addBands(cloudProb);
});
// 进行云去除
var cloudFree = sentinel2.map(function(img){
var cloudLikelihood = img.select('cloudProb').divide(100);
var ndvi = img.select('NDVI');
var cloudMask = cloudLikelihood.lt(0.2).and(ndvi.gt(0.2));
return img.updateMask(cloudMask);
});
```
在这里,我们使用了 `where()` 函数将 `cloudProb` 中的 0 值像素设置为 null。这样,在进行 `reduce.median()` 操作时,就可以避免出现错误了。
阅读全文