有时候我们需要用IDL打开遥感图像,然后保存为ENVI的格式方便后期处理。今天给大家写了一个模板。能自动调用envi经典函数借口。来实现图像的读写。欢迎大家交流学习。
;2018-8-6
;Dabiao
;用于读写遥感图像
PRO open_ENVI_IMAGE
COMPILE_OPT idl2
ENVI,/RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT
;******************文件路径****************************************
filename = STRARR(2)
;输入数据路径
filename[0] = FILE_DIRNAME(ROUTINE_FILEPATH('open_ENVI_IMAGE'))+'\tm_data'$
+'\LT51240362007139_JZ.img'
;输出数据路径
filename[1] = 'd:\test_file.img'
;**************************************************
;*************************用envi经典借口打开图像并判断文件是否存在****************
;**************************输入参数filename[0]*******************
ENVI_OPEN_FILE,filename[0],r_fid = fid
IF (fid EQ -1) THEN BEGIN
temp = DIALOG_MESSAGE('the data is wrong!',title = 'warn')
RETURN
ENDIF
ENVI_FILE_QUERY,fid,dims = dims,ns = ns, nl = nl,nb = nb,$
DATA_TYPE= dt;query the data
tm_data = MAKE_ARRAY(ns,nl,nb,TYPE=dt)
FOR i = 0L, nb-1 DO BEGIN
tm_data[*,*,i] = ENVI_GET_DATA(fid=fid,dims = dims,pos = i)
ENDFOR
;********************tm_data*****************************
;**********************输出参数tm_data********************
;
;
;显示图像
; window,0,XSIZE=nl,YSIZE=ns
; TVSCL,tm_data,true = 3
;***************这里大家可以吧读进来的图片随意处理***********************
;**************按照envi格式输出图像************************
;****************输出参数filename[1]******************
ENVI_ENTER_DATA,tm_data,r_fid = out_fid
ENVI_FILE_QUERY,out_fid,dims = out_dims,nb = nb
poso = INDGEN(nb)
ENVI_OUTPUT_TO_EXTERNAL_FORMAT,fid = out_fid,dims = out_dims,$
OUT_NAME=filename[1],POS=poso,/ENVI
temp = DIALOG_MESSAGE('THE CODE END!',/INFORMATION,title = 'message');显示操作完成
END
欢迎私聊、一起学习、一起进步