贵阳市两湖一库水体区域识别
通过计算归一化水体指数 NDWI 指数提取贵阳市水体区域。
初始化环境
import aie
aie.Authenticate()
aie.Initialize()
Landsat-8 数据检索
使用 aie.mageCollection引用 Landsat-8 数据集,镶嵌后并对数据进行去云处理。
# 指定需要检索的区域
feature_collection = aie.FeatureCollection('China_City') \
.filter(aie.Filter.eq('city', '贵阳市'))
geometry = feature_collection.geometry()
# 指定检索数据集,可设置检索的空间和时间范围,以及属性过滤条件(如云量过滤等)
dataset = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
.filterBounds(geometry) \
.filterDate('2018-6-01', '2020-10-31') \
.filter(aie.Filter.lte('eo:cloud_cover', 10.0)) \
.limit(10)
map = aie.Map(
center=feature_collection.getCenter(),
height=800,
zoom=7
)
vis_params = {
'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
'min': 8000,
'max': 13000,
}
map.addLayer(
dataset,
vis_params,
'True Color (432)',
bounds=dataset.getBounds()
)
map
贵阳市Landsat-8影像
数据镶嵌
使用mosaic方法进行栅格镶嵌
## 镶嵌
mosaic_image = dataset.mosaic()
mosaic_image.getInfo()
去云
使用自定义removeLandsatCloud函数进行去云
## 去云
def removeLandsatCloud(image):
cloudShadowBitMask = (1 << 4)
cloudsBitMask = (1 << 3)
qa = image.select('QA_PIXEL')
mask = qa.bitwiseAnd(aie.Image(cloudShadowBitMask)).eq(aie.Image(0)).And(qa.bitwiseAnd(aie.Image(cloudsBitMask)).eq(aie.Image(0)))
return image.updateMask(mask)
## 去云
img = removeLandsatCloud(mosaic_image)
水体提取
通过aie.Image.normalizedDifference*函数实现归一化水体指数( NDWI )的计算。利用 aie.Image.where 、aie.Image.lte、aie.Image.gt实现水体与非水体的二分类提取。
## 计算ndwi
ndwi = img.normalizedDifference(['SR_B3', 'SR_B5'])
water = ndwi.where(ndwi.lte(aie.Image(0.0)),aie.Image(0)).where(ndwi.gt(aie.Image(0.0)),aie.Image(1))
# 水体区域为蓝色
vis_params = {
'min': 0,
'max': 1,
'palette' : [
'#a1a1a1', '#0000ff'
]
}
map.addLayer(
water,
vis_params,
'water',
bounds=mosaic_image.getBounds()
)
map
提取结果
真实效果
本案例主要引用了AIE官方的案例。
网友评论