1.程序功能:
用ENVI打开TM数据,将数据传到IDL工作空间,在IDL环境下进行大气校正,并将结果回传给ENVI。
2.程序源代码:
Function AtmoCorr32,test ;**************** 读入数据 *********************; size_image=size(test) samples=size_image[1];TM列数 lines=size_image[2];TM行数 bands=size_image[3];TM波段数 ;读取 TM 的 Gain 和 Offset 值到 data 中 fn_calib='辐射定标参数txt文件存储路径'; openr,lun,fn_calib,/get_lun data=fltarr(2,6) data1=fltarr(3,6) readf,lun,data0 readf,lun,data1 free_lun,lun gain=data0[0,0:5];增益值 offset=data0[1,0:5];偏移值 ;用定标系数将原始DN值转换为大气层顶太阳辐亮度L L=fltarr(size_image[1],size_image[2],size_image[3]);定义辐亮度 for i=0,bands-1 do begin L[*, *, i]=gain[i]*test[*,*,i]+offset[i]; Endfor ;输出辐射定标后文件 envi_write_envi_file,out_name='大气校正参数txt文件路径',L ;读取大气校正参数 a=data1[0,*] b=data1[1,*] c=data1[2,*] ;设置一个数组准备存放大气校正的结果 E=fltarr(size_image[1],size_image[2],size_image[3]) ;大气校正 for i=0,bands-1 do begin y=a[i]*L[*,*,i]-offset[i]; E[*,*,i]=y/(1+c[i]*y); Endfor ;输出大气校正文件 envi_write_envi_file,out_name='输出大气校正结果txt文件路径',E return,E end
**注意:**首先要打开 ENVI+IDL联合程序, 然后用ENVI加载影像,并将需要使用的影像导入到 IDL 中,最后在IDL命令窗口中输入函数:如 E=AtmoCorr32(test)
3.结果