地表温度遥感反演
基于TM数据运用单窗算法和单通道算法反演地表温度
pro
LST
打开TM数据文件并设置相关大气参数
fn=dialog_pickfile(title='选择TM数据',get_path=work_dir)
cd,work_dir
envi_open_file,fn,r_fid=fid
envi_file_query,fid,ns=ns,nl=nl,nb=nb,dims=dims,$
data_type=data_type,interleave=interleave,offset=offset
map_info=envi_get_map_info(fid=fid)
设定大气水汽含量和近地表气温
w=2.49
T0=21
273.15
辐射定标与亮温计算
b6=envi_get_data(fid=fid,dims=dims,pos=5)
L=0.055158*b6
1.2378
TB=1260.56/alog(1
607.76/L)
计算NDVI
b3=envi_get_data(fid=fid,dims=dims,pos=2)
b4=envi_get_data(fid=fid,dims=dims,pos=3)
NDVI=(float(b4)-b3)/(float(b4)
b3)
计算MNDVI
b2=envi_get_data(fid=fid,dims=dims,pos=1)
b5=envi_get_data(fid=fid,dims=dims,pos=4)
MNDWI=(float(b2)-b5)/(float(b2)
b5)
计算比辐射率
Emiss=Cal_emiss(NDVI,MNDWI)
删除中间变量
b2=!null
b3=!null
b4=!null
b5=!null
NDVI=!null
MNDWI=!null
调用cal_LST_sc单通道算法计算地表温度
LST_result=cal_LST_sc(Tb,L,w,Emiss)
o_fn=dialog_pickfile(title='单通道算法的计算结果保存为')
envi_write_envi_file,LST_result,out_name=o_fn,/no_copy,$
ns=ns,nl=nl,nb=1,data_type=4,interleave=interleave,$
offset=offset,map_info=map_info
调用cal_LST_sc
单窗算法计算地表温度
LST_result=cal_LST_mw(Tb,T0,w,Emiss)
o_fn=dialog_pickfile(title='单窗算法计算结果保存为')
envi_write_envi_file,LST_result,out_name=o_fn,/no_copy,$
ns=ns,nl=nl,nb=1,data_type=4,interleave=interleave,$
offset=offset,map_info=map_info
end
cal_Emiss,NDVI,MNDWI
计算比辐射率
result=1.0094
0.047*alog(NDVI)
w=where(NDVI
lt
0.157,count)
if
count
gt
0
thenresult[w]=0.923
w=where(NDVI
gt
0.727,count)
if
count
gt
0
thenresult[w]=0.994
w=where(MNDWI
gt
0,count)
if
count
gt
0
thenresult[w]=0.995
return,result
end
function
cal_LST_sc,Tb,L,w,Emiss
Tb,L,w,Emiss分别为亮温,辐亮度,水汽含量和地表比辐射率
c1=1.19104E8
c2=14387.7
x1=0.14714D*w^2-0.15583*w
1.1234
x2=-1.1836D*w^2-0.37607*w-0.52894
x1=-0.04554D*w^2
1.8719*w-0.39071
Y=(Tb^2)/(c2*L*(11.457^4*L/c1
1/11.457))
Z=-Y*L Tb
Result=Y*((x1*L x2)/(Emiss x3))
Z
return,float(result)
end
function
cal_LST_mw,Tb,T0,w,Emiss
Tb,T0,w,Emiss分别为亮温,近地表气温,水汽含量和地表比辐射率
a=-67.35535
b=0.458608
Trans=1.031412-0.11536D*w
Ta=16.011
0.91118*T0
C=Trans*Emiss
D=(1-Trans)*(1
Trans*(1-Emiss))
result=(a*(1-C-D)
(b*(1-C-D)
C D)*Tb-D*Ta)/C
return,float(result)
end
TM数据
链接:https://pan.baidu.com/s/1-fv9U4vLG6oYwdkA5zV8og
提取码:41ey
IDL代码
链接:https://pan.baidu.com/s/1HOSeg9L1EaDUhTZPBReukQ
提取码:r5m9
加载中,请稍候......