1 數(shù)據(jù)預(yù)處理
(1)數(shù)據(jù)提取
我們可以選取2018年5月初華東地區(qū)MODIS中的MOD11A2和MOD13A2的16天合成LST和NDVI產(chǎn)品數(shù)據(jù),下載地址:MODIS數(shù)據(jù)下載
網(wǎng)站下載數(shù)據(jù)需要注冊趁舀,在此聲明忍燥,下載數(shù)據(jù)不需要“科學(xué)上網(wǎng)”巷疼,但注冊需要谷歌Gmail郵箱奶浦,注冊Gmail郵箱需要“科學(xué)上網(wǎng)”蜜暑。以下是我們下載數(shù)據(jù)晨川,數(shù)據(jù)下載中可以通過Python腳本的方法對數(shù)據(jù)進(jìn)行批量下載画恰,由于我們只需要少量數(shù)據(jù)彭谁,不必批量下載,所以在此不加贅述允扇。以下是我們的原始數(shù)據(jù)在ENVI中的顯示:
由于MODIS產(chǎn)品數(shù)據(jù)下載之后不能直接使用缠局,因此需要對數(shù)據(jù)進(jìn)行預(yù)處理。
首先EarthData網(wǎng)站上獲取的數(shù)據(jù)為*.hdf格式考润,此時不能直接有ENVI軟件直接處理狭园,需要批量提取,這時就要用到NASA提供的MODIS Reprojection Tool糊治,此工具雖不能實現(xiàn)全自動的批量提取唱矛,但是可以實現(xiàn)按月進(jìn)行數(shù)據(jù)的提取及拼接,以下是利用MRT軟件提取數(shù)據(jù)參數(shù)設(shè)置:
NDVI產(chǎn)品數(shù)據(jù)也用以上同樣的方法輸入MOD11A2數(shù)據(jù)提取井辜,輸出LST和NDVI數(shù)據(jù)绎谦。
(2)數(shù)據(jù)復(fù)原
此時數(shù)據(jù)依然不能直接使用,由于LST數(shù)據(jù)是16bit的粥脚,其顯示范圍是0-65535窃肠,有效范圍則是7500-65535,需要乘以0.02才能得到開爾文溫度刷允。而NDVI數(shù)據(jù)為了減少儲存空間冤留,也是正常值的10000倍,所以應(yīng)該給其乘以0.0001得到正常值树灶,以上都是利用EMVI的Bandmath工具進(jìn)行纤怒,在此不加贅述。
(3)數(shù)據(jù)裁剪
由于涉及范圍比較廣天通,所以我們對數(shù)據(jù)進(jìn)行裁剪處理泊窘,裁取山東地區(qū)的一小部分作為分析樣本進(jìn)行數(shù)據(jù)回歸分析與相關(guān)性分析,具體范圍如下專題圖:
2 代碼與步驟
Pro Regress_ndvi_lst
;input the image
fn_ndvi=**dialog_pickfile**(title='Please Input the NDVI Image:')
fn_lst=**dialog_pickfile**(title='Please Input the LST Image:')
;read the image
ndvi_img=**read_image**(fn_ndvi)
lst_img=**read_image**(fn_lst)
;get the size of image
sz_ndvi=**size**(ndvi_img)
;get the image's numbers of columns and rows
ndvi_columns=sz_ndvi[**1**] & ndvi_rows=sz_ndvi[**2**]
;get the size of image
sz_lst=**size**(lst_img)
;get the image's numbers of columns and rows
lst_columns=sz_lst[**1**] & lst_rows=sz_lst[**2**]
;samples
random_c=**randomu**(seed,ndvi_columns)
random_r=**randomu**(seed,ndvi_rows)
sort_c=**sort**(random_c)
sort_r=**sort**(random_r)
ndvi_samples=ndvi_img[sort_c[**0**:**10**],*]
lst_samples=lst_img[sort_c[**0**:**10**],*]
ndvi_get=**reform**(ndvi_samples,**11***ndvi_rows, **1**)
lst_get=**reform**(lst_samples,**11***ndvi_rows, **1**)
ref_ndvi=**reform**(ndvi_get)
ref_lst=**reform**(lst_get)
;ref_ndvi1=reform(ndvi_img,ndvi_columns*ndvi_rows,1)
;ref_lst1=reform(lst_img,lst_columns*lst_rows,1)
;ref_ndvi=ref_ndvi1[0:100]
;ref_lst=ref_lst1[0:100]
;regress analysis
fit_ndvi_lst=**regress**(ref_ndvi,ref_lst,const=b,correlation=r,yfit=lst_estimated)
;plot points picture
p1=**plot**(ref_ndvi,ref_lst,xtitle='NDVI',ytitle='LST(K)',dimensions=[**600**,**400**], symbol=**1**,color='red',sym_size=**1.0**,linestyle=**6**,$
title='The Regress of NDVI & LST',window_title='NDVI & LST',$
xrange=[**0**,**1**],yrange=[**290**,**310**])
;set the range of x and y axis
x=ref_ndvi
y=fit_ndvi_lst[**0**]*x+b
fit=**plot**(x,y,linestyle=**1**,color='blue',thick=**2**,/current,/overplot)
p2=**plot**([**0**,**1**],[**290**,**310**],linestyle=**6**,/current,/overplot)
str_equation='Y='+**string**(fit_ndvi_lst[**0**],format='(f6.2)')+'*X+'+**string**(b,format='(f6.2)')
str_correlation='R='+**string**(r,format='(f5.2)')
t1=**text**(**0.20**,**0.80**,str_equation,font_size=**12**,target=p1)
t2=**text**(**0.20**,**0.75**,str_correlation,font_size=**12**,target=p1)
;o_fn='Scatter_ndvi_lst.emf'
;p1.save,o_fn,border=40
;p2.save,o_fn,border=40
;**********
;plot points picture
p3=**plot**(ref_lst,lst_estimated,xtitle='LST(K)',ytitle='LST-Estimated(K)',dimensions=[**600**,**400**],$
symbol=**24**,color='red',sym_size=**1.0**,title='LST & LST-Estimated',$
window_title='Cal_LST_Linear',linestyle=**6**,xrange=[**290**,**310**],yrange=[**290**,**310**])
;set the range of x and y axis
p4=**plot**([**290**,**310**],[**290**,**310**],thick=**2**,color='blue',/current,/overplot)
MAE=**mean**(**abs**(ref_lst-lst_estimated))
RMSE=**sqrt**(**mean**((ref_lst-lst_estimated)^**2**))
str_MAE='MAE='+**string**(MAE,format='(f5.2)')
str_RMSE='RMSE='+**string**(RMSE,format='(f5.2)')
t3=**text**(**0.20**,**0.80**,str_MAE,font_size=**12**,target=p3)
t4=**text**(**0.20**,**0.75**,str_RMSE,font_size=**12**,target=p3)
;o_fn='Scatter_lst_lst_estimated.emf'
;p3.save,o_fn,border=40
;p4.save,o_fn,border=40
**End**
3 結(jié)果與分析:
由于代碼中是隨機(jī)數(shù)采樣,每次采樣訓(xùn)練樣本數(shù)據(jù)不同州既,所以每次運(yùn)行代碼可以得到不同的模型谜洽。以下是模型顯示:
模型1:
模型2:
模型3:
也可以修改代碼中的采樣數(shù)目萝映,來改變訓(xùn)練樣本數(shù)目吴叶,模型也會發(fā)生變化。如將其中的[0:10]改為[0:20],對應(yīng)的11修改為21就可增加訓(xùn)練樣本數(shù)目:
代碼:
ndvi_samples=ndvi_img[sort_c[**0**:**20**],*]
lst_samples=lst_img[sort_c[**0**:**20**],*]
ndvi_get=**reform**(ndvi_samples,**21***ndvi_rows, **1**)
lst_get=**reform**(lst_samples,**21***ndvi_rows, **1**)
模型4:
結(jié)論分析:
相關(guān)系數(shù)(R)序臂,是衡量兩個變量之間相關(guān)程度的系數(shù)蚌卤,是判定變量之間線性相關(guān)性的一個相對指標(biāo)。相關(guān)系數(shù)用字母R表示奥秆,相關(guān)系數(shù)R取值在±1之間逊彭,當(dāng)R為0時,表示兩個變量絕對不相關(guān)构订;當(dāng)R大于0時侮叮,兩個變量正相關(guān),即你增加我也增加悼瘾,你減少我也減少囊榜;當(dāng)R小于0時,兩個變量負(fù)相關(guān)亥宿,即你增加我減少卸勺,你減少我增加;當(dāng)R等于1或-1時烫扼,表示兩個變量絕對相關(guān)曙求。
相關(guān)系數(shù)R越接近于±1,兩個變量之間相關(guān)性越強(qiáng)映企。一般認(rèn)為:當(dāng)R的絕對值為0.7或更大時悟狱,兩個變量高度相關(guān),即強(qiáng)相關(guān)堰氓;當(dāng)R的絕對值在0.5-0.7之間時芽淡,兩個變量中度相關(guān);當(dāng)R絕對值在0.3-0.5之間時豆赏,兩個變量弱相關(guān)挣菲;當(dāng)R絕對值低于0.3時,說明兩個變量之間幾乎不存在相關(guān)關(guān)系掷邦。
平均絕對誤差(MAE)白胀,MAE 的值越小,說明預(yù)測模型擁有更好的精確度抚岗。范圍[0,+∞)或杠,當(dāng)預(yù)測值與真實值完全吻合時等于0,即完美模型宣蔚;誤差越大向抢,該值越大认境。
均方根誤差(RMSE),它表示誤差的平方的期望值挟鸠,范圍[0,+∞)叉信,當(dāng)預(yù)測值與真實值完全吻合時等于0,即完美模型艘希;誤差越大硼身,該值越大。
綜上覆享,以上四種模型的相關(guān)系數(shù)R的絕對值值均在0.5-0.7之間佳遂,說同一時間NDVI值與LST中度相關(guān)。其中第四種模型R的絕對值最大撒顿,相關(guān)性更高丑罪,進(jìn)一步說明,采樣數(shù)據(jù)越多模型相關(guān)性越好凤壁;對比四種模型的平均絕對誤差(MAE)和均方根誤差(RMSE)吩屹,第四種模型這兩個量較前三種較小,說明其擁有更好的精確度客扎,且誤差較小祟峦,更進(jìn)一步說明,樣本數(shù)據(jù)越多徙鱼,其擬合度越好宅楞,模型越精確。
簡單書寫袱吆,
希望你十分美好厌衙!