基于IDL语言和ENVI API的遥感数据批处理快速入门
1 定义一个过程(pro)
“pro”是procedure,意为“程序”,相当于C语言的“main”函数。其定义方法如下:
pro Part_1
;这里面是一个空的主函数,分号是注释符号
;IDL代码变量名不区分字母大小写
;主函数名定义为”Part_1”的过程,必须将代码文档命名为”Part_1.pro”
end
2 定义一个函数
以下是定义一个名为LayerStack、以parameter作为输入参数的函数:
Function LayerStack, parameter
return,parameter_1;返回参数
END
3 搜索文件夹下面的文件,并返回一个字符串数组
语句1,搜索文件夹下面的所有文件,并返回一个数组
filearr = file_search('D:\Lansat_Data_原始数','*',count=num,/test_directory)
语句2,搜索文件夹中名字所有带有”.TIF”的文件
Filearr=file_search(img_dir,"*.TIF",count=fileNum)
4 定义一个数组
array=[4,5,7]
5 创建envi对象,以命令行方式打开envi(缺失图形界面)
pro Part_1
compile_opt idl2
e=envi(/headless)
end
6 执行一个循环语句,控制台打印
num = 100
for i=0,num-1,1 do begin
print,i
endfor
7 由于IDL语言的数字会保留前面的“0”,例如“1”打印结果是“ 1”,给数字转字符串环节带来困难,以下语句可以删除前面的空格
kk=strtrim(string(k),1)
8 IF语句
IF number EQ 1 THEN BEGIN;如果输出路径文件已经存在,则直接返
print,number
ENDIF
9 跳过错误,防止程序报错中断
file_mkdir,"D:\Lansat_Data_分区切割\"+kk+"\"
CATCH, errorStatus
IF (errorStatus NE 0) THEN BEGIN
CATCH, /CANCEL
PRINT, !ERROR_STATE.MSG
CONTINUE
ENDIF