idl之envi常用函数介绍及多波段读入
(2015-09-05 08:41:21)
标签:
3s |
分类: 遥感 |
ENVI_PICKFILE:
function,带返回值,打开一个对话框,让用户选择本地文件,返回用户选择的文件路径及文件名,具体用法参照ENVI帮助。示例:
path = ENVI_PICKFILE(title='pick
file')
envi_select:
routine,不带返回值,打开一个对话框,选择一个已经打开的文件,在该对话框中也可以打开新的文件,所以基本上可以替代ENVI_PICKFILE,能返回fid,尺寸等属性,具体用法参照envi帮助。示例:
envi_select,fid=fid,
dims=dims,pos=pos
envi_file_query:
routine,不带返回值,对某个已经打开的文件,查询其文件信息。例如大小,波段数等等。示例:
envi_file_query, fid, dims=dims,
nb=nb
envi_get_data:
function,带返回值,对一个已经打开的文件,获取它的值,可以整个获取,也可以按指定的下标范围获取一小块。一次只能读取一个波段的信息,要同时读取多个波段,需要使用循环读取。具体用法参照envi帮助。示例:
for i=0,nb-1 do image[i,*,*]=$
envi_get_data(fid=fid,dims=dims,pos=pos[i])
envi_get_map_info:
function,带返回值,对某个已经打开的文件(ENVI支持的格式并带有头文件),读取其空间信息,例如椭球,坐标系等。示例:
map_info_b =
envi_get_map_info(fid=fid_b)
map_info_w =
envi_get_map_info(fid=fid_w)
if (map_info_b.mc[2] ne 0.0)
and (map_info_w.mc[2] ne 0.0) then begin
envi_convert_file_coordinates:
routine,不带返回值,图上某些点的矩阵坐标与空间坐标之间的转换(在有空间信息的情况下)。示例:
envi_convert_file_coordinates, fid, xf, yf,
xmap, ymap,
/to_map
(xf,yf为矩阵的坐标,xmap,ymap为空间坐标)
function,带返回值,打开一个对话框,让用户选择本地文件,返回用户选择的文件路径及文件名,具体用法参照ENVI帮助。示例:
envi_select:
routine,不带返回值,打开一个对话框,选择一个已经打开的文件,在该对话框中也可以打开新的文件,所以基本上可以替代ENVI_PICKFILE,能返回fid,尺寸等属性,具体用法参照envi帮助。示例:
envi_file_query:
routine,不带返回值,对某个已经打开的文件,查询其文件信息。例如大小,波段数等等。示例:
envi_get_data:
function,带返回值,对一个已经打开的文件,获取它的值,可以整个获取,也可以按指定的下标范围获取一小块。一次只能读取一个波段的信息,要同时读取多个波段,需要使用循环读取。具体用法参照envi帮助。示例:
envi_get_map_info:
function,带返回值,对某个已经打开的文件(ENVI支持的格式并带有头文件),读取其空间信息,例如椭球,坐标系等。示例:
envi_convert_file_coordinates:
routine,不带返回值,图上某些点的矩阵坐标与空间坐标之间的转换(在有空间信息的情况下)。示例:
载入多波段图像:
方法1:
pro testEnviImg,path
; compile_opt idl2
; envi,/restore_base_save_files
; envi_batch_init
path = ENVI_PICKFILE(title='pick
file')
envi_open_file, path,
r_fid=fid
if (fid eq -1) then
return
;ENVI_SELECT, fid=fid ,pos=pos
envi_file_query, fid, dims=dims,
nb=nb
pos =
lindgen(nb)
num_cols = dims[2]-dims[1]+1
num_rows = dims[4]-dims[3]+1
image =
fltarr(nb,num_cols,num_rows)
for i=0,nb-1 do image[i,*,*]=$
envi_get_data(fid=fid,dims=dims,pos=pos[i])
tv,image,/true
end
方法2:
pro testenviselect
envi_select,fid=fid,
dims=dims,pos=pos
num_cols = dims[2]-dims[1]+1
num_rows = dims[4]-dims[3]+1
num_bands = n_elements(pos)
; BIP array
image =
fltarr(num_bands,num_cols,num_rows)
for i=0,num_bands-1 do image[i,*,*] =
envi_get_data(fid=fid,dims=dims,pos=pos[i])
tv,image,/true
end
pro testEnviImg,path
;
;
;
end
方法2:
pro testenviselect
end