天天看点

遥感IDL二次开发(大气校正)

作者:地理遥感生态网

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.结果

遥感IDL二次开发(大气校正)
遥感IDL二次开发(大气校正)
遥感IDL二次开发(大气校正)
遥感IDL二次开发(大气校正)

来源引用:地理遥感生态网平台

继续阅读