PIE-Engine 教程:水稻面积提取3—sentinel2合成月度影像宿迁市)

举报
此星光明 发表于 2022/09/25 22:26:25 2022/09/25
【摘要】 这里分别获取计算2019年和2020年LSWI、EVI两期影像的分析,这里我们有几个常用的函数其中过一个是构建影像集合的一个函数: fromImages(images) 根据Image列表构建ImageCollection对象。 方法参数: - imageCollection(ImageCollection) ImageCol...

这里分别获取计算2019年和2020年LSWI、EVI两期影像的分析,这里我们有几个常用的函数其中过一个是构建影像集合的一个函数:

fromImages(images)

根据Image列表构建ImageCollection对象。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

- images(Array)

影像数据列表

返回值:ImageCollection

大家这里可能有点疑问关于代码中的分析,EVI影像的波段代码要divide(1000),因为这里的sentinel2的波段中每一个波长

名称 中心波长(nm) 分辨率(m) 描述信息
A B
B1 443.9 442.3 60 Aerosols
B2 496.6 492.1 10 Blue
B3 560 559 10 Green
B4 664.5 665 10 Red
B5 703.9 703.8 20 Red Edge 1
B6 740.2 739.1 20 Red Edge 2
B7 782.5 779.7 20 Red Edge 3
B8 835.1 833 10 NIR
B8A 864.8 864 20 Red Edge 4
B9 945 943.2 60 Water vapor
B10 1373.5 1376.9 60 Cirrus
B11 1613.7 1610.4 20 SWIR 1
B12 2202.4 2185.7 20 SWIR 2
QA10 443.9 442.3 10 --
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

代码:


  
  1. /**
  2. * @Name : 基于 PIE Engine Studio 的水稻自动提取
  3. * @Author : 武汉大学VHR队
  4. * @Desc : 淮安市水稻提取 - 合成sentinel2月度影像
  5. * @Source : 航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品
  6. */
  7. //3.合成sentinel2月度影像
  8. //选择淮安市矢量
  9. var roi = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY").filter(pie.Filter.eq('name', '淮安市')).first().geometry()
  10. Map.centerObject(roi, 8)
  11. Map.addLayer(roi)
  12. //LSWI
  13. function LSWI(image) {
  14. var swir = image.select("B11")
  15. var nir = image.select("B8")
  16. var lswi = (nir.subtract(swir)).divide(nir.add(swir))
  17. return image.addBands(lswi.rename("LSWI"));
  18. }
  19. //EVI
  20. function EVI(image) {
  21. var red = image.select("B4").divide(10000)
  22. var nir = image.select("B5").divide(10000)
  23. var blue = image.select("B2").divide(10000)
  24. var evi = ((nir.subtract(red)).multiply(2.5))
  25. .divide(nir.add(red.multiply(6)).subtract(blue.multiply(7.5)).add(1))
  26. .multiply(10000)
  27. return image.addBands(evi.rename("EVI"));
  28. }
  29. //去云处理
  30. function maskS2clouds(image) {
  31. //选择有关云掩膜的波段
  32. var qa = image.select('QA60')
  33. //位10和11分别代表云和卷云。
  34. var cloudBitMask = 1 << 10;
  35. var cirrusBitMask = 1 << 11;
  36. // 将有关云的像元置为0
  37. var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
  38. .and(qa.bitwiseAnd(cirrusBitMask).eq(0))
  39. return image.updateMask(mask)
  40. }
  41. var area = pie.Geometry.Polygon([
  42. [
  43. [
  44. 118.33558377212347,
  45. 32.62288800615681
  46. ],
  47. [
  48. 119.24768569883133,
  49. 32.62288800615681
  50. ],
  51. [
  52. 119.24768569883133,
  53. 31.21438784070145
  54. ],
  55. [
  56. 118.33558377212347,
  57. 31.21438784070145
  58. ],
  59. [
  60. 118.33558377212347,
  61. 32.62288800615681
  62. ]
  63. ]
  64. ], null);
  65. //合成lswi波段的月度影像(做这个实验时由于map函数存在问题不能同时进行两个波段计算,因此分开计算)
  66. var lswi1 = pie.ImageCollection('S2/L1C')
  67. .filterBounds(roi)
  68. .filterDate("2019-12-1", "2019-12-31")
  69. .select(['B2', 'B4', 'B8', 'B11', 'QA60'])
  70. .map(maskS2clouds)
  71. .map(LSWI)
  72. .select(['LSWI'])
  73. .mosaic()
  74. .clip(roi)
  75. var lswi2 = pie.ImageCollection('S2/L1C')
  76. .filterBounds(roi)
  77. .filterDate("2020-12-1", "2020-12-31")
  78. .select(['B2', 'B4', 'B8', 'B11', 'QA60'])
  79. .map(maskS2clouds)
  80. .map(LSWI)
  81. .select(['LSWI'])
  82. .mosaic()
  83. .clip(roi);
  84. //合成evi波段的月度影像
  85. var evi1 = pie.ImageCollection('S2/L1C')
  86. .filterBounds(roi)
  87. .filterDate("2019-12-1", "2019-12-31")
  88. .select(['B2', 'B4', 'B8', 'B11', 'QA60'])
  89. .map(maskS2clouds)
  90. .map(EVI)
  91. .select(['EVI'])
  92. .mosaic()
  93. .clip(roi)
  94. var evi2 = pie.ImageCollection('S2/L1C')
  95. .filterBounds(roi)
  96. .filterDate("2020-12-1", "2020-12-31")
  97. .select(['B2', 'B4', 'B8', 'B11', 'QA60'])
  98. .map(maskS2clouds)
  99. .map(EVI)
  100. .select(['EVI'])
  101. .mosaic()
  102. .clip(roi);
  103. //将2019年和2020年对应月份影像取均值合成
  104. var lswi = pie.ImageCollection.fromImages([lswi1, lswi2]).mean()
  105. var evi = pie.ImageCollection.fromImages([evi1, evi2]).mean()
  106. var jan = lswi.addBands(evi);
  107. //导出月度影像
  108. Export.image({
  109. image: jan,
  110. description: 'jan',
  111. assetId: "jan",
  112. region: area,
  113. scale: 30,
  114. })

文章来源: blog.csdn.net,作者:此星光明,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31988139/article/details/127038999

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。