新浪博客

idl之envi常用函数介绍及多波段读入

2015-09-05 08:41阅读:
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为空间坐标)

载入多波段图像:
方法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

我的更多文章

下载客户端阅读体验更佳

APP专享