• 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

    云量覆盖百分比

    代码:

    1. var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();
    2. /*******************1. Sentinel-2 利用cloudyPixelPercentage属性筛选含云量**************/
    3. var images1 = pie.ImageCollection("S2/L1C")
    4. .filterDate('2020-07-01', '2020-07-30')
    5. .filterBounds(geometry0);
    6. print("images1",images1)
    7. var images2 = pie.ImageCollection("S2/L1C")
    8. .filterDate('2020-07-01', '2020-07-30')
    9. .filterBounds(geometry0)
    10. .filter(pie.Filter.lt('cloudyPixelPercentage',5));
    11. print("images2",images2)
    12. //定义显示的样式
    13. var visParam = {
    14. min:0,
    15. max:3000,
    16. bands:["B4","B3","B2"]
    17. };
    18. //分别加载不同影像
    19. //添加云量2.66%的影像
    20. var image = pie.Image("S2/L1C/43SED_20200701")
    21. .select(["B4","B3","B2"]);
    22. Map.centerObject(image,7)
    23. Map.addLayer(image, visParam, "2.66%Cloud");
    24. //添加云量11.83%的影像
    25. var image = pie.Image("S2/L1C/43SED_20200704")
    26. .select(["B4","B3","B2"]);
    27. Map.addLayer(image, visParam, "11.83%Cloud");
    28. /**********2. Sentinel-2 利用QA波段实现去云操作***************/
    29. function maskS2clouds(image) {
    30. var qa = image.select("QA60");
    31. var cloudBitMask = 1 << 10;
    32. var cirrusBitMask = 1 << 11;
    33. var mask = qa
    34. .bitwiseAnd(cloudBitMask)
    35. .eq(0)
    36. .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
    37. return image.updateMask(mask);
    38. }
    39. //按数据id加载Sentinel-2 MSI单景影像
    40. var img = pie.Image("S2/L1C/43SED_20200704").select(["B4", "B3", "B2", "QA60"]);
    41. print("img", img);
    42. var rmCloud = maskS2clouds(img);
    43. print("rmCloud", rmCloud);
    44. //定位地图中心
    45. Map.centerObject(img, 8);
    46. //加载显示影像
    47. Map.addLayer(
    48. img.select(["B4", "B3", "B2"]),
    49. { min: 0, max: 3000 },
    50. "Sen-rawImage"
    51. );
    52. Map.addLayer(
    53. rmCloud.select(["B4", "B3", "B2"]),
    54. { min: 0, max: 3000 },
    55. "Sen-rmCloud"
    56. );

    原始影像结果:

     去云后影像结果:

    影像去云:

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

    1. var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();
    2. //************************3. Sentinel-2 算法去云 ******************/
    3. var S2Image = pie.ImageCollection("S2/L1C")
    4. .filterBounds(geometry0)
    5. .filterDate("2020-06-01","2020-06-09")
    6. .select(["B4", "B3", "B2", "QA60"]).mosaic().clip(geometry0);
    7. //计算云掩膜
    8. var cloudMask = pie.Algorithm.Sentinel2.cloudMask(S2Image,"Sentinel2");
    9. //选择2,3,4波段做掩膜运算
    10. var S2_rm_mask = S2Image.select(["B4","B3","B2"]).updateMask(cloudMask.not());
    11. // Sentinel2数据去云显示
    12. var visParam = {
    13. min: 0,
    14. max: 3000
    15. };
    16. Map.centerObject(S2Image,8)
    17. Map.addLayer(S2_rm_mask.select(["B4","B3","B2"]),visParam,"MaskImage");

     

  • 相关阅读:
    浅谈ChatGPT
    基于SSM的汽车租赁管理系统
    安装依赖报错
    iwebsec靶场 SQL注入漏洞通关笔记13-二次注入
    远程方法调用中间件Dubbo在spring项目中的使用
    【C语言必知必会 | 第四篇】一文带你精通顺序结构
    编写一个简单的linux kernel rootkit
    【MindSpore易点通】如何根据profiler数据查看性能瓶颈
    利用QT通过http协议,来实现上传文件功能
    论文笔记:The Impact of AI on Developer Productivity:Evidence from GitHub Copilot
  • 原文地址:https://blog.csdn.net/qq_31988139/article/details/127000367