1.去除空格
使用的函数为:STRCOMPRESS(string, /REMOVE_ALL)
例子
ENVI> str="wo shi ge zhong xi"
ENVI> print,strcompress(str,/REMOVE_ALL)
woshigezhongxi
2.批量打开影像
参考代码
PRO ENVIRaster_Study
e = ENVI() ; Launch the application
for i = 2158, 2355 do begin ; 利用for循环实现批量转换
filepath_input = 'E:\input images\prefix_'+strcompress(string(i), /remove)+'.raw' ; 输入文件路径
raster1 = e.OpenRaster(filepath_input) ; 读入文件
filepath_output = 'E:\output images\FN'+strcompress(string(i), /remove)+'.tif' ; 输出文件路径
raster1.Export, filepath_output, 'TIFF' ; 输出为tiff格式
Print,'finished' ;打印finished,提示完成
endfor
end
3.文件名和程序中PRO后面的名称问题
重要!!
错误的例子:
PRO Array;注意:此时的程序名字叫arraytest
compile_opt idl2;更改IDL的编译配置,推荐值为IDL2
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
arr=indgen(20,20)
print,arr
END
然后报错为:
% Compiled module: ARRAY.
% Attempt to call undefined procedure: 'ARRAYTEST'.
% Execution halted at: $MAIN$
正确的例子:
PRO Array;注意:此时程序的名字叫array,和PRO后面的名称是一样的
compile_opt idl2;更改IDL的编译配置,推荐值为IDL2
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
arr=indgen(20,20)
print,arr
END
因此,如果名字不一致就会导致报出undefined procedure的问题出现
4.Size函数对三维数组的信息读取
Matrix_Info=Size(Matrix_Raster)
print,Matrix_Info
结果如下:
MATRIX_RASTER FLOAT = Array[345, 623, 510]
3 345 623 510 4 109616850
3即三维;
345为数据的期数:23期×15年;
623为影像的列数;
510为影像的行数;
4代表的是数据类型:浮点型;
109616850代表这个多个元素;
5.取出所有的元素
*
取出所有的元素
6.IDL数组的行列问题
在IDL的数组a[i,j]
中,i
代表的是数组的列,j
代表的是行
这个规定跟python中是不一样的,特别容易搞混