首页 > 其他分享 >PIE-Engine 教程:水稻面积提取3—sentinel2合成月度影像宿迁市)

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

时间:2022-10-03 10:36:02浏览次数:53  
标签:Engine roi map image sentinel2 ImageCollection PIE var select


这里分别获取计算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

代码:

/**
* @Name : 基于 PIE Engine Studio 的水稻自动提取
* @Author : 武汉大学VHR队
* @Desc : 淮安市水稻提取 - 合成sentinel2月度影像
* @Source : 航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品
*/

//3.合成sentinel2月度影像
//选择淮安市矢量
var roi = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY").filter(pie.Filter.eq('name', '淮安市')).first().geometry()
Map.centerObject(roi, 8)
Map.addLayer(roi)

//LSWI
function LSWI(image) {
var swir = image.select("B11")
var nir = image.select("B8")
var lswi = (nir.subtract(swir)).divide(nir.add(swir))
return image.addBands(lswi.rename("LSWI"));
}
//EVI
function EVI(image) {
var red = image.select("B4").divide(10000)
var nir = image.select("B5").divide(10000)
var blue = image.select("B2").divide(10000)
var evi = ((nir.subtract(red)).multiply(2.5))
.divide(nir.add(red.multiply(6)).subtract(blue.multiply(7.5)).add(1))
.multiply(10000)
return image.addBands(evi.rename("EVI"));
}
//去云处理
function maskS2clouds(image) {
//选择有关云掩膜的波段
var qa = image.select('QA60')
//位10和11分别代表云和卷云。
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// 将有关云的像元置为0
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0))
return image.updateMask(mask)
}
var area = pie.Geometry.Polygon([
[
[
118.33558377212347,
32.62288800615681
],
[
119.24768569883133,
32.62288800615681
],
[
119.24768569883133,
31.21438784070145
],
[
118.33558377212347,
31.21438784070145
],
[
118.33558377212347,
32.62288800615681
]
]
], null);
//合成lswi波段的月度影像(做这个实验时由于map函数存在问题不能同时进行两个波段计算,因此分开计算)
var lswi1 = pie.ImageCollection('S2/L1C')
.filterBounds(roi)
.filterDate("2019-12-1", "2019-12-31")
.select(['B2', 'B4', 'B8', 'B11', 'QA60'])
.map(maskS2clouds)
.map(LSWI)
.select(['LSWI'])
.mosaic()
.clip(roi)
var lswi2 = pie.ImageCollection('S2/L1C')
.filterBounds(roi)
.filterDate("2020-12-1", "2020-12-31")
.select(['B2', 'B4', 'B8', 'B11', 'QA60'])
.map(maskS2clouds)
.map(LSWI)
.select(['LSWI'])
.mosaic()
.clip(roi);
//合成evi波段的月度影像
var evi1 = pie.ImageCollection('S2/L1C')
.filterBounds(roi)
.filterDate("2019-12-1", "2019-12-31")
.select(['B2', 'B4', 'B8', 'B11', 'QA60'])
.map(maskS2clouds)
.map(EVI)
.select(['EVI'])
.mosaic()
.clip(roi)
var evi2 = pie.ImageCollection('S2/L1C')
.filterBounds(roi)
.filterDate("2020-12-1", "2020-12-31")
.select(['B2', 'B4', 'B8', 'B11', 'QA60'])
.map(maskS2clouds)
.map(EVI)
.select(['EVI'])
.mosaic()
.clip(roi);
//将2019年和2020年对应月份影像取均值合成
var lswi = pie.ImageCollection.fromImages([lswi1, lswi2]).mean()
var evi = pie.ImageCollection.fromImages([evi1, evi2]).mean()
var jan = lswi.addBands(evi);
//导出月度影像
Export.image({
image: jan,
description: 'jan',
assetId: "jan",
region: area,
scale: 30,
})

标签:Engine,roi,map,image,sentinel2,ImageCollection,PIE,var,select
From: https://blog.51cto.com/u_15654855/5729909

相关文章