IDL调用ENVI经典接口实现遥感图像的读写功能(模板详细)

有时候我们需要用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

欢迎私聊、一起学习、一起进步

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值