(1)调用格式:
IDL>print, variabie,format='(格式)'
aN 开始为数据类型,a-字符串,i-整数,f-单精度浮点型,d-双精度浮点型,e-科学计数法
iN(.M) N为输出字符宽度
fN(.M) M为小数点后位数
dN(.M)
eN(.M)
Nx 为输出N个空格
/ 换行
(2)输出默认为右对齐,可加入负号变为左对齐
(3)可控制设置多个输出格式:format='(**,**)'。如果要使用相同格式:format='(ciN.M)',c为使用相同格式代码的变量个数
(4)read默认为浮点型,要读取其他类型数据,必须实现创建该变量。
(1)文件的打开与关闭,需要通过逻辑设备号完成,一个文件对应一个逻辑设备号。IDL可用128个逻辑设备号,1-99可以直接指定使用,100-128号可以通过get_lun和free_lun命令来获取和释放。为了方便使用,通过使用get_lun和free_lun命令来动态设置逻辑设备号
(2)文件操作:IDL>操作,lum,fname,/get_lun。参数lun为逻辑设备号变量,fname为文件名,关键字get_lun分配一个没有使用过的逻辑设备号给lun。操作有openr-读操作,openw-写操作,openu-读写操作
(3)文件的选择
IDL>cd[, directory(字符串)][,current=variable(可获得当前的工作路径名]
result=dialog_pickfile([/directory(加上选择文件夹,不加则选择文件)][,filter=string(如'*txt')][,title=string(对话框标题)][,get_path=variableA(获取路径)][,path=string(设置选择文件的初始所在路径)])
①如加上/directory,则result=variableA;②path=string,这个string是自己设置的,可以设置搜索对话框打开后所处于的文件夹
(4)文件查询
语句:IDL>result=file_search(path(字符串),recur_pattern(文件名查询条件) [,count=variable(查询出的数量赋给variable)] [, /test_directory(如加上则只查出文件夹),/test_regular(如加上则只查出文件)] ) result类型为一个字符串数组
①recur_pattern的几种典型形式
IDL>fns=file_search('*') ;返回全部文件
IDL>fns=file_search('*a*') ;返回所有文件名中带a的文件
IDL>fns=file_search('*.{txt,ppt}') ;返回txt与ppt后缀的文件
IDL>fns=file_search('[a~b]*.txt') ;返回开头为a或b
IDL>fns=file_search('') ;待补充
pro get_envi_tiff_filenames
work_dir=dialog_pickfile(/directory)
cd,work_dir
fns=file_search('*.tif',count=fnums)
ENVI_fns=strarr(fnums)
for i=0,fnums-1 do begin
ENVI_fns[i]=strmid(fns[i],0,strlen(fns[i])-4)
endfor
print,ENVI_fns,format='(a)'
;format使用的一些小发现 1、如果不加则ENVI_fns中的数一个接一个输出,2、如果加了,则一行输出一个
end
(5)其他文件操作
IDL>result=file_lines(fname)
IDL>result=fstat(lun)
;UNIT:文件对应的逻辑设备号
;NAME:绝对路径的文件名
;READ:文件是否为读状态
;CUR_PTR:文件指针指向的位置
;SIZE:文件大小
IDL>point_lun,lun,position;可以修改finfo.cur_ptr所指向的位置
IDL>result=eof(lun)判断文件指针是否已经到了文件的末尾,是为1
(6)ASCII码文件读写
;读取
fn=dialog_pickfile()
openr,lun,fn,/get_lun
data=intarr(2,5)
readf,lun,data ;语法 readf,lun,var1。。。
free_lun,lun
;如果设置的存储读取结果的变量容量超过了文件数据量,会报错
;如果设置的存储读取结果的变量容量小于文件数据量,则只读到存满为止
(7)读写图像文件
①文件查询
result=query_image(fname[,info] [,channels=var] [,dimensions=var] [,pixel_type=var] [,type-var] [,has_palette=var] [,image_index=index] [,num_images=var] )
fname:文件名,字符串
info:返回图像的基本信息,包含后面的那些东西,结构体变量
channels:波段数,整形
dimensions:行列数,2个元素的数组
pixel_type:像素类型,整形指代的数据类型
has_palette:真彩色为0,假彩色为1
image_index:图像在文件中的索引号
type:图像文件类型,字符串
②读取图像文件
img=read_image(fname)返回一个三维数组[波段数,列数,行数]。灰度图像只有行列数,波段顺序有BIP、BSQ两种
result=dialog_read_image([,image=img] [,query=info] [,file=fn] [,filter_type=string] [,get_path=var] [,path=string] [,title=string] )
后面内容与dialog_pickfile相同,差异:img存放图像,info存放图像信息,fn存文件名,result返回1代表成功读取,0为失败
query_image,read_image,write_image都有对应特定格式的read_tiff等