决策树模型实现冬小麦提取​​¶​

依据作物在不同物候期内卫星影像的光谱存在差异的特征,可建立冬小麦提取算法,进行像元尺度冬小麦提取。这里同样是使用的NDVI作为阈值提取条件,分别使用不同的聚合方式完成对影像的筛选,从而得出冬小麦种植面积的提取。

初始化环境​​¶​

import aie

aie.Authenticate()
aie.Initialize()

指定需要检索的区域​​¶​

feature_collection = aie.FeatureCollection('China_City') \
.filter(aie.Filter.eq('city', '亳州市'))
region = feature_collection.geometry()

影像检索​​¶​

# 指定检索数据集,可设置检索的空间和时间范围,以及属性过滤条件(如云量过滤等)
def getl8_ndvi(startdate,enddate):
dataset = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
.filterBounds(region) \
.filterDate(startdate, enddate)
# .filter(aie.Filter.lte('eo:cloud_cover', 20.0))
ndvi = dataset.map(get_ndvi)
return ndvi

def get_ndvi(image):
ndvi = image.normalizedDifference(['SR_B5', 'SR_B4'])
return ndvi

# 黄淮海地区冬小麦典型物候期。播种期 10-11月,旺长期3-4月,成熟期5-6月
NDVI_median = getl8_ndvi('2017-10-11', '2017-11-10').median().clip(region)
NDVI_max = getl8_ndvi('2018-03-20', '2018-04-20').max().clip(region)
NDVI_min = getl8_ndvi('2018-05-20', '2018-06-30').min().clip(region)

# 冬小麦提取规则集
mask1 = NDVI_max.gt(aie.Image.constant(0.33)) # 过滤水体、不透水面、裸地等非植被区域
mask2 = NDVI_median.lt(aie.Image.constant(0.50)) # 过滤森林、春播作物

mask3 = NDVI_max.lte(aie.Image.constant(0.48)) # < 0.48存在
mask4 = NDVI_max.gt(aie.Image.constant(0.48)) # 区分植被区域和非植被区域,> 0.48 为植被区域


mask5 = NDVI_min.gt(aie.Image.constant(-0.12)) # 筛选冬小麦区域,成熟/收获期冬小麦植被指数下降
mask6 = NDVI_min.lt(aie.Image.constant(0.17))
mask7 = NDVI_min.lt(NDVI_max.add(aie.Image.constant(0.5)))

wheat1 = mask1.And(mask2).And(mask3).And(mask5).And(mask6)
wheat2 = mask1.And(mask2).And(mask4).And(mask5).And(mask7)
wheat = wheat1.add(wheat2).where((wheat1.add(wheat2)).gt(aie.Image.constant(0)),aie.Image.constant(1))

数据可视化​​¶​

map = aie.Map(
center=region.getCenter(),
height=800,
zoom=7
)

vis_params = {
'color': '#00FF00'
}

map.addLayer(
region,
vis_params,
'region',
bounds=region.getBounds()
)

mask_vis = {
'min': 0,
'max': 1,
'palette': ['#ffffff', '#008000'] # 0:白色, 1:绿色
}

ndvi_vis = {
'min': -0.2,
'max': 0.6,
'palette': ['#d7191c', '#fdae61', '#ffffc0', '#a6d96a', '#1a9641']
}

map.addLayer(NDVI_median,ndvi_vis, 'NDVI_median', bounds=region.getBounds())
map.addLayer(NDVI_max,ndvi_vis, 'NDVI_max', bounds=region.getBounds())
map.addLayer(NDVI_min,ndvi_vis, 'NDVI_min', bounds=region.getBounds())
map.addLayer(wheat,mask_vis, 'wheat', bounds=region.getBounds()) # 绿色区域为小麦

map

参考文献​​¶​

潘力,夏浩铭,王瑞萌,等. 基于Google Earth Engine 的淮河流域越冬作物种植面积制图[J]. 农业工程学报,2021,37(18):211-218. doi:10.11975/j.issn.1002-6819.2021.18.025 http://www.tcsae.org

备注:案例以建立规则集提取冬小麦为主,主要借鉴参考文献中部分分类参数和指标用做流程测试,另仅使用 Landsat-8 数据,因此与参考文献中的成果有一定差异敬请谅解。

AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取_ai

  

AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取_ai_02

 

AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取_python_03

 

AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取_决策树_04