基于AIE平臺的決策樹算法的黔東南州水稻提取

決策樹模型實現(xiàn)黔東南州水稻提取

依據(jù)作物在不同物候期內(nèi)衛(wèi)星影像的光譜存在差異的特征和地形因子,可建立水稻提取算法揩懒,進行水稻提取。

初始化環(huán)境

import aie

aie.Authenticate()
aie.Initialize()

指定需要檢索的區(qū)域

feature_collection = aie.FeatureCollection('China_City') \
                        .filter(aie.Filter.eq('city', '黔東南苗族侗族自治州'))
region = feature_collection.geometry()

DEM處理


# 指定檢索數(shù)據(jù)集,可設置檢索的空間范圍
elevation = aie.ImageCollection('JAXA_ALOS_AW3D30_V3_2') \
             .filterBounds(region)\
             .select(['DSM'])\
             .mosaic()\
             .clip(region)



map = aie.Map(
    center=feature_collection.getCenter(),
    height=800,
    zoom=7
)
vis_params = {
    'bands': 'DSM',
    'min': 100,
    'max': 2200,
    'palette': [
        '#0000ff', '#00ffff', '#ffff00', '#ff0000', '#ffffff'
    ]
}
map.addLayer(
    elevation,
    vis_params,
    'Elevation',
    bounds=elevation.getBounds()
)
map
黔東南州高程分布圖
task = aie.Export.image.toAsset(elevation,'dem_qdn',30)
task.start()
## 坡度贤重,下載aie還不能計算涤垫,我這里使用ArcGIS運算

slope = aie.Image('user/c7ec068793e54fccb9ba8692ed9d0b91').clip(region)


vis_params = {
    'min': 0,
    'max': 80,
    'palette': [
        '#0000ff', '#00ffff', '#ffff00', '#ff0000', '#ffffff'
    ]
}
map.addLayer(
    slope,
    vis_params,
    'slope',
    bounds=slope.getBounds()
)
map
黔東南州坡度分布圖

這里說一下姑尺,我的谷歌瀏覽器上傳影像數(shù)據(jù),不知道為什么失敗蝠猬,我是用edge瀏覽器上傳的切蟋,我把我的谷歌瀏覽器版本上傳給了官方。

Landsat 8 數(shù)據(jù)處理

# 插秧期影像

# 指定檢索數(shù)據(jù)集榆芦,可設置檢索的空間和時間范圍柄粹,以及屬性過濾條件(如云量過濾等)
img1 = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
             .filterBounds(region) \
             .filterDate('2021-4-01', '2021-6-10') \
             .filter(aie.Filter.lte('eo:cloud_cover', 20.0))\
             .median()\
             .clip(region)
# print(img1.size().getInfo())

vis_params = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 8000,
    'max': 13000,
}
map.addLayer(
    img1,
    vis_params,
    'img1',
    bounds=img1.getBounds()
)
map
# 生長期影像


img2 = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
             .filterBounds(region) \
             .filterDate('2021-6-20', '2021-8-30') \
             .filter(aie.Filter.lte('eo:cloud_cover', 45.0))\


print(img2.size().getInfo())

img2 = img2.median().clip(region)


vis_params = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 8000,
    'max': 13000,
}
map.addLayer(
    img2,
    vis_params,
    'img2',
    bounds=img2.getBounds()
)
map

NDVI 計算

# NDVI擴大10,好比較
NDVI1 = img1.normalizedDifference(['SR_B5', 'SR_B4'])\
            .multiply(aie.Image.constant(10)).rename(['NDVI'])
NDVI2 = img2.normalizedDifference(['SR_B5', 'SR_B4'])\
            .multiply(aie.Image.constant(10)).rename(['NDVI'])
NDVI_diff = NDVI2.subtract(NDVI1).rename(['Diff'])
import numpy as np

scale = 1000

histogram = NDVI1.reduceRegion(aie.Reducer.histogram(2000), None, scale)
histogram_info = histogram.getInfo()
# print(histogram_info)


bucketKey = histogram_info['NDVI_range']
bucketValue = histogram_info['NDVI_counts']

key = np.array(bucketValue)
accSum = np.cumsum(key)
# print(accSum[20])
# print(accSum[-1])
accPercent = accSum / accSum[-1]
    
p2 = np.searchsorted(accPercent, 0.2)

min_ndvi = bucketKey[p2 + 1]
print('min_ndvi1:%f' % min_ndvi)

p98 = np.searchsorted(accPercent, 0.98)
max_ndvi = bucketKey[p98]
print('max_ndvi1:%f' % max_ndvi)
查看NDVI

提取規(guī)則

# 水稻提取規(guī)則集

## 水稻一般生長在海拔900m以下匆绣,坡度在20度以下
mask1 = elevation.lt(aie.Image.constant(900)).clip(region) 
mask2 = slope.lt(aie.Image.constant(20)).clip(region) 

## 水稻播種期NDVI一般在0.32至0.38驻右,每個地方可能有差異
mask3 = NDVI1.gt(aie.Image.constant(3.2)).And(NDVI1.lt(aie.Image.constant(3.8)))

## 水稻生長期NDVI和播種期NDVI一般在-0.9至0.6,每個地方可能有差異
mask4 = NDVI_diff.gt(aie.Image.constant(-0.9)).And(NDVI_diff.lt(aie.Image.constant(0.6)))
rice = mask1.And(mask2).And(mask3).And(mask4)
mask_vis  = {
    'min': 0,
    'max': 1,
    'palette': ['#ffffff', '#008000']    # 0:白色, 1:綠色
}



map.addLayer(rice,mask_vis, 'wheat', bounds=region.getBounds())    # 綠色區(qū)域為水稻

水稻提取結果
task = aie.Export.image.toAsset(rice,'rice_extract',30)
task.start()

精度評價

這一部分在ArcGIS和Excel里面完成崎淳,查找統(tǒng)計年鑒可知黔東南州水稻種植面積S1=233 萬畝,提取出來的面積S2= 252萬畝旺入,提取下來結果如表所示,總的來說還是比較粗糙,希望大家有更好的算法茵瘾。
總體誤差= \frac{\left | S2-S1 \right |}{S1} = \frac{\left | 252-233 \right |}{233}=8.1\%

模型構建器

提取結果
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末礼华,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拗秘,更是在濱河造成了極大的恐慌圣絮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雕旨,死亡現(xiàn)場離奇詭異扮匠,居然都是意外死亡,警方通過查閱死者的電腦和手機凡涩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門棒搜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人活箕,你說我怎么就攤上這事力麸。” “怎么了育韩?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵克蚂,是天一觀的道長。 經(jīng)常有香客問我筋讨,道長埃叭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任悉罕,我火速辦了婚禮癣朗,結果婚禮上兑巾,老公的妹妹穿的比我還像新娘浅浮。我一直安慰自己谎砾,他們只是感情好蟆沫,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布兰珍。 她就那樣靜靜地躺著捶牢,像睡著了一般崖叫。 火紅的嫁衣襯著肌膚如雪欣范。 梳的紋絲不亂的頭發(fā)上变泄,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音恼琼,去河邊找鬼妨蛹。 笑死,一個胖子當著我的面吹牛晴竞,可吹牛的內(nèi)容都是我干的蛙卤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颤难!你這毒婦竟也來了神年?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤行嗤,失蹤者是張志新(化名)和其女友劉穎已日,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栅屏,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡飘千,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了栈雳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护奈。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哥纫,靈堂內(nèi)的尸體忽然破棺而出霉旗,到底是詐尸還是另有隱情,我是刑警寧澤磺箕,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布奖慌,位于F島的核電站,受9級特大地震影響松靡,放射性物質(zhì)發(fā)生泄漏简僧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一雕欺、第九天 我趴在偏房一處隱蔽的房頂上張望岛马。 院中可真熱鬧,春花似錦屠列、人聲如沸啦逆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夏志。三九已至,卻和暖如春苛让,著一層夾襖步出監(jiān)牢的瞬間沟蔑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工狱杰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘦材,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓仿畸,卻偏偏與公主長得像食棕,于是被迫代替她去往敵國和親朗和。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容