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

加载中…