基于AIE平台的决策树算法的贵州省冬小麦的提取

简介: 基于AIE平台的决策树算法的贵州省冬小麦的提取

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

依据作物在不同物候期内卫星影像的光谱存在差异的特征,可建立冬小麦提取算法,进行像元尺度冬小麦提取。

初始化环境

import aie

aie.Authenticate()
aie.Initialize()

指定需要检索的区域

feature_collection = aie.FeatureCollection('China_Province') \
                        .filter(aie.Filter.eq('province', '贵州省'))
region = feature_collection.geometry()

去云

因为SENTINEL_MSIL2A数据集现在AIE还没有去云波段,所以这一步目前还不能做。

影像检索

贵州省冬小麦典型物候期。播种期 10中上旬-11月上旬,旺长期2月上旬-3月,成熟期4月下旬-5月上旬

# 播种期影像
img1 = aie.ImageCollection('SENTINEL_MSIL2A') \
             .filterBounds(region) \
             .filterDate('2021-10-01', '2021-11-11') \
             .filter(aie.Filter.lte('eo:cloud_cover',60.0)) \
             .select(["B11","B8","B4","B3","B2"])\
             .median()
             # .map(removeLandsatCloud)          
# 拔节期影像
img2 = aie.ImageCollection('SENTINEL_MSIL2A')\
    .filterDate("2021-02-01", "2021-03-01")\
    .filterBounds(region)\
    .filter(aie.Filter.lt('eo:cloud_cover', 60))\
    .select(["B11","B8","B4","B3"])\
    .median()
# 成熟收获期影像
img3 = aie.ImageCollection('SENTINEL_MSIL2A')\
    .filterDate("2021-04-20", "2021-05-10")\
    .filterBounds(region)\
    .filter(aie.Filter.lt('eo:cloud_cover', 60))\
    .select(["B11","B8","B4","B3","B2",])\
    .median()

波段提取

red1 = img1.select("B4")
nir1 = img1.select("B8")
swir1 = img1.select("B11")
red2 = img2.select("B4")
nir2 = img2.select("B8")
red3 = img3.select("B4")
nir3 = img3.select("B8")
ndvi1 = (nir1.subtract(red1)).divide(nir1.add(red1)).rename(["NDVI"]).select("NDVI")
nbr1 = (nir1.subtract(swir1)).divide(nir1.add(swir1)).rename(["NBR"]).select("NBR")
ndvi2 = (nir2.subtract(red2)).divide(nir2.add(red2)).rename(["NDVI"]).select("NDVI")
ndvi3 = (nir3.subtract(red3)).divide(nir3.add(red3)).rename(["NDVI"]).select("NDVI")
# 小麦在10月份的近红外波段更大,短波红外波段更小
# 条件1:播种期NDVI小,NBR小
# 条件2:拔节期抽穗期 NDVI大
# 条件3:成熟期NDVI小于拔节期NDVI

wheat = ndvi1.lt(aie.Image.constant(0.3))\
            .And(nbr1.lt(aie.Image.constant(0.07)))\
            .And(ndvi2.gt(aie.Image.constant(0.32)))\
            .And(ndvi3.lt(ndvi2))\
            .clip(region)

数据可视化

之前我运行过了,等一下我们之间看本地效果。

# 结果可视化

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(ndvi1,ndvi_vis, 'ndvi1', bounds=region.getBounds())
map.addLayer(nir1,ndvi_vis, 'nir1', bounds=region.getBounds())
map.addLayer(ndvi2,ndvi_vis, 'ndvi2', bounds=region.getBounds())
map.addLayer(ndvi3,ndvi_vis, 'ndvi3', bounds=region.getBounds())
map.addLayer(wheat,mask_vis, 'wheat', bounds=region.getBounds())    # 绿色区域为小麦

map

重分类

wheat = wheat.where(wheat.eq(aie.Image.constant(0)),aie.Image(0))\
             .where(wheat.eq(aie.Image.constant(1)),aie.Image(1))

导出数据

task = aie.Export.image.toAsset(wheat,'wheat',100)
task.start()

精度评价

由于分类后处理的很多函数,aie都还没有,所以,可以去ArcGIS来看看结果。
贵州省冬小麦提取结果

这里可以计算一下面积,然后和贵州省冬小麦的播种的实际面积进行比较。
属性表

贵州省统计年鉴

PIE提取结果

$$AIE提取面积S1= 257356 * 100 *100 / 10000 =257356 ha = 257 kha$$
$$PIE提取面积S2= 114kha$$
$$统计年鉴播种面积S3= 138.05kha$$
S2为真值,则
$$ \frac{\left | S1-S3 \right |}{S3} = \frac{\left | 257-138 \right |}{138}=86.2\%$$
$$ \frac{\left | S2-S3 \right |}{S3} = \frac{\left | 114-138 \right |}{138}=17.3\%$$

总结一下吧,我也不是比较,完全没有黑的意思,也没有踩和贬的意思。就是一样的数据,差不多的代码,跑下来结果相差有一点点大。原因的话,AIE里面没有去云,没有分类后处理,还有就是AIE里面我运行下来,空值较多,当然这也是和我的搜索条件有关。
本案例主要引用了AIE和PIE里面的案例,然后自己修改的。
阿里云里面的公式我也不太会用。
PS:阿里云的小哥哥真的很用心。

相关文章
|
1月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
49 1
|
9天前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
24 9
|
30天前
|
存储 SQL 消息中间件
B端算法实践问题之设计一套实时平台能力如何解决
B端算法实践问题之设计一套实时平台能力如何解决
27 1
|
1月前
|
机器学习/深度学习 算法 数据可视化
决策树算法介绍:原理与案例实现
决策树算法介绍:原理与案例实现
|
1月前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
1月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
1月前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【8月更文挑战第2天】决策树算法以其直观性和解释性在机器学习领域中独具魅力,尤其擅长处理非线性关系。相较于复杂模型,决策树通过简单的分支逻辑实现数据分类,易于理解和应用。本示例通过Python的scikit-learn库演示了使用决策树对鸢尾花数据集进行分类的过程,并计算了预测准确性。虽然决策树优势明显,但也存在过拟合等问题。即便如此,无论是初学者还是专家都能借助决策树的力量提升数据分析能力。
29 4
|
2月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
【7月更文挑战第19天】Trie树,又称前缀树,是优化字符串搜索的高效数据结构。通过利用公共前缀,Trie树能快速插入、删除和查找字符串。
69 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战