地表温度反演IDL程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PRO LST

; 从文件夹中读取输入数据的文件名,数据顺序为2、4、6..... imagenames=findfile('E:\rs\ld2\热岛\*', count=count)

outpath = 'E:\rs\ld2\200802\sz_lst\'

for k =3,count-1,2 do begin

print,imagenames[k]

; 得到图像的行列数目及投影信息

envi_open_file,imagenames[k],R_FID=image_fid, /no_realize

if (image_fid eq -1) then return

envi_file_query, image_fid, ns=ns, nl=nl

map_info = envi_get_map_info(fid=image_fid)

dims = [-1, 0, ns-1, 0, nl-1]

;1,2,19波段的反射率

data_1 = envi_get_data(fid=image_fid,dims=dims,pos=0)

data_2 = envi_get_data(fid=image_fid,dims=dims,pos=1)

data_19 = envi_get_data(fid=image_fid,dims=dims,pos=20)

;31,32波段的亮温

data_31 = envi_get_data(fid=image_fid,dims=dims,pos=32)

data_32 = envi_get_data(fid=image_fid,dims=dims,pos=33)

index_bad1= where((data_1 eq 65534) or (data_2 eq 65534) or (data_19 eq 65534) or $

(data_31 eq 65534) or (data_32 eq 65534))

envi_file_mng, id=image_fid, /remove

;计算大气水含量

;w=((alfa-ln(ref19/ref2))/beta)2 2次幂

;alfa=0.02 beta=0.651

a=data_19*1.0/data_2

b=ALOG(a)

w=((0.02-b)/0.651)^2

;计算大气透过率

;传感器视角为10度的星下大气透过率,在水汽含量为0.4-2.0,2.0-4.0,4.0-6.0的计算方程

index_w1 = where((w ge 0.4) and (w lt 2.0))

index_w2 = where((w ge 2.0) and (w lt 4.0))

index_w3 = where((w ge 4.0) and (w le 6.0))

index_bad2 = where((w lt 0.4) or (w gt 6.0))

t10_31 = fltarr(ns,nl)

t10_32 = fltarr(ns,nl)

if index_w1[0] ne -1 then begin

t10_31[index_w1] = 0.99513-0.08082*w[index_w1]

t10_32[index_w1] = 0.99376-0.11369*w[index_w1]

endif

if index_w2[0] ne -1 then begin

t10_31[index_w2] = 1.08692-0.12759*w[index_w2]

t10_32[index_w2] = 1.07900-0.15925*w[index_w2]

endif

if index_w3[0] ne -1 then begin

t10_31[index_w3] = 1.07268-0.12571*w[index_w3]

t10_32[index_w3] = 0.93821-0.12613*w[index_w3]

endif

;大气透过率温度校正函数

;因数据中亮温为实际亮温的10倍,阈值都乘以10倍,如318k在计算中用3180 index_31_t1 = where(data_31 gt 3180)

index_31_t2 = where((data_31 le 3180) and (data_31 ge 2780))

index_31_t3 = where(data_31 lt 2780)

dt_31 = fltarr(ns,nl)

if index_31_t1[0] ne -1 then begin

dt_31[index_31_t1] = 0.08

endif

if index_31_t2[0] ne -1 then begin

;下面的公式中的0.000325原公式中为0.00325,因本计算数据中亮温为实际值的10倍,所以多乘一个0.1

dt_31[index_31_t2] = -0.05+0.000325*(data_31[index_31_t2]-2780)

endif

if index_31_t3[0] ne -1 then begin

dt_31[index_31_t3] = -0.05

endif

index_32_t1 = where(data_32 gt 3180)

index_32_t2 = where((data_32 le 3180) and (data_31 ge 2780))

index_32_t3 = where(data_32 lt 2780)

dt_32 = fltarr(ns,nl)

if index_32_t1[0] ne -1 then begin

dt_32[index_32_t1] = 0.095

endif

if index_32_t2[0] ne -1 then begin

;下面的公式中的0.0004原公式中为0.004,因本计算数据中亮温为实际值的10倍,所以多乘一个0.1

dt_32[index_32_t2] = -0.065+0.0004*(data_32[index_32_t2]-2780)

endif

if index_32_t3[0] ne -1 then begin

dt_32[index_32_t3] = -0.065

endif

;大气透过率的传感器视角校正函数

angle = 20

dt = -0.00322+(3.0967*(10.0^(-5))*(angle^2))

;大气透过率

t_31 = t10_31+dt_31-dt

t_32 = t10_32+dt_32-dt

相关文档
最新文档