PIE-engine 教程 ——sentinel-2影像数据去云分析(山西省为例)

本文我们将介绍哨兵2数据去云分析,同样是使用QA60去云,我们这里先看一下影像

Sentinel-2号是高分辨率多光谱成像卫星,携带一枚多光谱成像仪(MSI),分为2A和2B两颗卫星,其中一颗卫星的重访周期为10天,两颗互补,重访周期为5天(纬度较高的欧洲地区,仅需3天),常用于陆地监测,可提供植被、土壤和水覆盖、内陆水路及海岸区域等图像,还可用于紧急救援服务。
Sentinel-2数据集中包含的数据为L1C级产品数据,是经正射校正和亚像元级几何精校正后的大气表观反射率产品,包含13个UINT16光谱带,3个QA频段,其中一个(QA60)是具有云掩码信息的位掩码频段。

名称中心波长(nm)分辨率(m)描述信息
AB
B1443.9442.360Aerosols
B2496.6492.110Blue
B356055910Green
B4664.566510Red
B5703.9703.820Red Edge 1
B6740.2739.120Red Edge 2
B7782.5779.720Red Edge 3
B8835.183310NIR
B8A864.886420Red Edge 4
B9945943.260Water vapor
B101373.51376.960Cirrus
B111613.71610.420SWIR 1
B122202.42185.720SWIR 2
QA10443.9442.310--
QA20----20--
QA60----60--
Bitmask for QA60
  • Bits 10: Opaque clouds
    • 0: No opaque clouds
    • 1: Opaque clouds present
  • Bits 11: Cirrus clouds
    • 0: No cirrus clouds
    • 1: Cirrus clouds present

影像属性:

id

string

影像名称

date

string

影像日期

cloudyPixelPercentage

double

云量覆盖百分比

代码:

var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();

/*******************1. Sentinel-2 利用cloudyPixelPercentage属性筛选含云量**************/
var images1 = pie.ImageCollection("S2/L1C")
                .filterDate('2020-07-01', '2020-07-30')
                .filterBounds(geometry0);
print("images1",images1)

var images2 = pie.ImageCollection("S2/L1C")
                .filterDate('2020-07-01', '2020-07-30')
                .filterBounds(geometry0)
                .filter(pie.Filter.lt('cloudyPixelPercentage',5));
print("images2",images2)

//定义显示的样式
var visParam = {
    min:0,
    max:3000,
    bands:["B4","B3","B2"]
};

//分别加载不同影像
//添加云量2.66%的影像
var image = pie.Image("S2/L1C/43SED_20200701")
               .select(["B4","B3","B2"]);
Map.centerObject(image,7)
Map.addLayer(image, visParam, "2.66%Cloud");

//添加云量11.83%的影像
var image = pie.Image("S2/L1C/43SED_20200704")
               .select(["B4","B3","B2"]);
Map.addLayer(image, visParam, "11.83%Cloud");

/**********2. Sentinel-2 利用QA波段实现去云操作***************/
function maskS2clouds(image) {
  var qa = image.select("QA60");
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;
  var mask = qa
    .bitwiseAnd(cloudBitMask)
    .eq(0)
    .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.updateMask(mask);
}
//按数据id加载Sentinel-2 MSI单景影像
var img = pie.Image("S2/L1C/43SED_20200704").select(["B4", "B3", "B2", "QA60"]);
print("img", img);
var rmCloud = maskS2clouds(img);

print("rmCloud", rmCloud);
//定位地图中心
Map.centerObject(img, 8);
//加载显示影像
Map.addLayer(
  img.select(["B4", "B3", "B2"]),
  { min: 0, max: 3000 },
  "Sen-rawImage"
);
Map.addLayer(
  rmCloud.select(["B4", "B3", "B2"]),
  { min: 0, max: 3000 },
  "Sen-rmCloud"
);

原始影像结果:

 去云后影像结果:

影像去云:

 利用算法进行去云后的结果: 

var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();

//************************3. Sentinel-2 算法去云 ******************/
 var S2Image = pie.ImageCollection("S2/L1C")
.filterBounds(geometry0)
.filterDate("2020-06-01","2020-06-09")
.select(["B4", "B3", "B2", "QA60"]).mosaic().clip(geometry0);
//计算云掩膜
var cloudMask = pie.Algorithm.Sentinel2.cloudMask(S2Image,"Sentinel2");
//选择2,3,4波段做掩膜运算
var S2_rm_mask = S2Image.select(["B4","B3","B2"]).updateMask(cloudMask.not());

// Sentinel2数据去云显示
var visParam = {
  min: 0,
  max: 3000
};
Map.centerObject(S2Image,8)
Map.addLayer(S2_rm_mask.select(["B4","B3","B2"]),visParam,"MaskImage");

 

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以通过以下步骤使用Google Earth Engine下载Sentinel-2影像: 1. 打开Google Earth Engine网站(https://earthengine.google.com/)并登录您的账户。 2. 在左上角的搜索框中,搜索Sentinel-2影像数据集名称:“COPERNICUS/S2”。 3. 在弹出的结果框中选择“COPERNICUS/S2_SR”数据集,这是Sentinel-2的地表反射率数据集。 4. 在弹出的数据集预览框中,可以看到该数据集的时间范围、空间范围和波段信息等。 5. 在左上角的时间选择器中,选择您需要的时间范围。 6. 接下来,您可以通过绘制多边形或选择感兴趣区域(ROI)的方式来定义您需要的空间范围。 7. 点击“运行”按钮,在弹出的代码编辑器中输入以下代码: ``` var s2 = ee.ImageCollection('COPERNICUS/S2_SR') .filterBounds(geometry) // 这里的geometry是您定义的ROI .filterDate('2019-01-01', '2019-12-31') .sort('CLOUD_COVER') .first(); var image = ee.Image(s2) .clip(geometry); // 这里的geometry是您定义的ROI var trueColor = { bands: ['B4', 'B3', 'B2'], min: 0, max: 3000 }; Map.addLayer(image, trueColor, 'True Color'); ``` 其中,geometry是您定义的ROI,代码中的“2019-01-01”和“2019-12-31”分别是您选择的时间范围。这段代码将下载Sentinel-2影像,并在地图上显示真彩色图像。 8. 点击“运行”按钮,等待影像下载和地图显示。 注意,如果您的ROI太大,可能需要等待较长时间才能下载完整的影像。同时,Google Earth Engine的数据访问速度也可能会受到网络状况和服务器负载等因素的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值