基于MODIS数据的秸秆焚烧遥感监测
先利用MOD14A2 v006提取着火点,再利用ESA WorldCover 10m v100提取河南省耕地斑块,两数据相交,可得到秸秆焚烧斑块的位置和面积。
初始化环境
import aie
aie.Authenticate()
aie.Initialize()
选取区域
yu = aie.FeatureCollection('China_Province') \
.filter(aie.Filter.eq('province', '河南省'))
# 提取河南省出来,这是一个例子,所以只做河南就行了
geometry = yu.geometry()
# 利用MOD14数据地理定位,提取着火点
# 指定检索数据集,可设置检索的时间范围,2012年6月11日卫星过境,现在秸秆焚烧已经比较少了,所以用以前的数据。
dataset = aie.ImageCollection('MODIS_MOD14A2_006') \
.filterDate('2012-06-10', '2012-6-12')
imgs = dataset.select(['FireMask'])
imgs = imgs.mosaic().rename(['fire'])
imgs = imgs.clip(geometry)
map = aie.Map(
center=yu.getCenter(),
height=800,
zoom=6
)
vis_params = {
'bands': 'fire',
'min': 1,
'max': 9,
'palette': [
'#000000', '#ffffff'
]
}
map.addLayer(
imgs,
vis_params,
'Fire',
bounds=imgs.getBounds()
)
map
提取着火点
# 根据规则7-9为着火点
fire_image = imgs.gte(aie.Image.constant(7.0)).And(imgs.lte(aie.Image.constant(9.0)))
mask_params = {
'min': 0,
'max': 1,
'palette': ['#ffffff','#fc5531']
}
map.addLayer(
fire_image,
mask_params,
'FireROI',
bounds=fire_image.getBounds()
)
map
提取农用地
#指定检索数据集,可设置检索的时间范围,因为没有2012年的lucc,所以这里用2020年的
lucc = aie.ImageCollection('ESA_WORLD_COVER_V100') \
.filterBounds(geometry) \
.filterDate("2020-01-01", "2022-01-31") \
.mosaic()\
.clip(geometry)
lucc_imgs = lucc.select(['Map']).rename(['lucc'])
lucc_imgs = lucc_imgs.eq(aie.Image(40))
mask_params = {
'min': 0,
'max': 1,
'palette': ['#ffffff','#f096ff']
}
map.addLayer(
lucc_imgs,
mask_params,
'Lucc',
bounds=imgs.getBounds()
)
map
秸秆焚烧点提取
fire_straw = lucc_imgs.And(fire_image)
mask_params = {
'min': 0,
'max': 1,
'palette': ['#ffffff','#fc5531']
}
map.addLayer(
fire_straw,
mask_params,
'FireStraw',
bounds=fire_straw.getBounds()
)
map
# task = aie.Export.image.toAsset(fire_straw,'FireStraw',1000)
# task.start()