Sentinel数据S2_SR_HARMONIZED连续云掩膜+中位数合成

在GEE中实现时,发现简单的QA60是无法去云的,最近S2地表反射率数据集又进行了更新,原有的属性集也进行了变化,现在的SR数据集名称是"S2_SR_HARMONIZED"。那么:

要想得到研究区无云的图像,可以参考执行以下几个步骤,

  1. 遥感图像中筛选云占比不超过10%的图像

    // 加载Sentinel-2 L2A图像

    var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')

    .filterDate('2021-09-01', '2021-10-31')

    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',10))

    .filterBounds(basin_shp);

  2. QA60云掩膜

    // 第一次云掩膜:使用QA60

    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);

    }

    var s2_masked = s2.map(maskS2clouds);

  3. SCL在最新的S2_SR_HARMONIZED产品中是存在的,判断云和云阴影

    //SCL Cloud mask

    function maskS2cloudsSCL(image) {

    var scl = image.select('SCL');

    // 去除云(8)和云阴影(9)

    var mask = scl.neq(8).and(scl.neq(9));

    return image.updateMask(mask);

    }

    var s2_masked = s2_masked.map(maskS2cloudsSCL);

  4. 继续用像元云概率进行判断,要求每个像元是云的概率小于10%

    // MSK_CLDPRB Mask(Sen2Cor 云概率),可直接用阈值掩膜,云概率低于 10% 保留:

    function maskCloudProb(image) {

    var prob = image.select('MSK_CLDPRB');

    return image.updateMask(prob.lt(10)); // 云概率低于 20% 保留

    }

    var s2_masked = s2_masked.map(maskCloudProb);

    最后中位数合成,避免反射率高值影响图像像元整体性。

    var s2_max = s2_masked.median();

相关推荐
小罗水2 天前
第14章 Sentinel 限流与 AI 降级
人工智能·sentinel
he___H2 天前
Sentinel使用实操
java·开发语言·sentinel
随风M记忆s3 天前
GEE&Python-demo:利用Sentinel-监测北京奥林匹克森林公园年NDVI变化(附Python版)
开发语言·python·sentinel
X-⃢_⃢-X3 天前
六、Sentinel
网络·数据库·sentinel
YOU OU5 天前
Redis哨兵 & 集群
数据库·redis·sentinel
遥感知识服务17 天前
Sentinel-1 + DEM + FwDET + 随机森林:从快速水深初估到多因子误差修正
算法·随机森林·sentinel
吴声子夜歌18 天前
Redis 3.x——哨兵API
redis·sentinel
振宇i19 天前
Sentinel Dashboard 1.8.9 部署+Systemd 托管完整操作文档
sentinel·cloudalibaba
数聚天成DeepSData19 天前
企业知识库 RAG 数据准备与文档清洗:Dify、RAGFlow、扣子选型指南
开发语言·人工智能·机器学习·自然语言处理·sentinel·cocos2d
ironren19 天前
【Sentinel 熔断降级实战】从踩坑到优雅降级的完整记录
sentinel