在GEE上利用哨兵2遥感图像,并采用cloudprobablity、NDVI去云。代码。
时间: 2024-04-04 17:31:54 浏览: 116
好的,以下是利用哨兵2遥感图像,在GEE上采用cloudprobablity、NDVI去云的代码:
```javascript
// 定义区域
var geometry = /* color: #d63000 */ee.Geometry.Polygon(
[[[114.380798742157, 30.474688146635894],
[114.380798742157, 30.14628334146268],
[114.932848899032, 30.14628334146268],
[114.932848899032, 30.474688146635894]]], null, false);
// 加载哨兵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');
return img.addBands(ndvi).addBands(cloudProb);
});
// 定义可视化参数
var visParams = {bands: ['B4', 'B3', 'B2'], min: 0, max: 3000};
// 显示图像
Map.centerObject(geometry, 10);
Map.addLayer(sentinel2.median(), visParams, 'Sentinel2');
// 进行云去除
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);
});
// 显示云去除后的图像
Map.addLayer(cloudFree.median(), visParams, 'Cloud-free');
```
其中,`geometry` 定义了我们感兴趣的区域,可以根据实际情况进行修改。`sentinel2` 是加载的哨兵2数据集,筛选了感兴趣的区域、时间段和云覆盖度小于20%的影像,并且添加了 NDVI 和 cloudProb 两个波段。`visParams` 定义了可视化参数,可以根据实际情况进行修改。`cloudFree` 则是进行云去除的结果,其中 `cloudLikelihood` 是云概率图像,`ndvi` 是 NDVI 图像,`cloudMask` 是由云概率图像和 NDVI 图像计算得到的云掩膜。最后,我们将原始图像和云去除后的图像在地图上进行了展示。
阅读全文