ENVI IDL编译单个pro文件的做法

2025-09-26 10:40:06

1、编写一个简单的IDL程序,保存为pro文件。代码如下:

;重采样执行功能

;输入放缩比例和采样方法

PRO Object_ENVI_Resize::EXECUTEResize,$

    xfactor, yfactor,method

  COMPILE_OPT idl2, hidden

  

  ;打开文件

  ENVI_OPEN_FILE, self.INFILENAME, R_FID=fid

  IF (fid EQ -1) THEN RETURN

  ;查询文件基本信息

  ENVI_FILE_QUERY, fid, dims=dims, nb=nb

  pos  = LINDGEN(nb)

  ;重采样处理

  ENVI_DOIT, 'resize_doit', $

    fid=fid, pos=pos, dims=dims, $

    interp=1, rfact=1./[XFACTOR,YFACTOR], $

    method = METHOD,$

    out_name=self.OUTFILENAME

    

END

;对象的析构函数

PRO Object_ENVI_Resize::CLEANUP

  COMPILE_OPT idl2, hidden  

  ;关闭ENVI二次开发模式

  ;需要注意,COM组件调用该功能的时候,必须设置如下参数:

  ; 在ENVI主菜单的File-Preference-Miscellaneous下

  ; 设置 Exit IDL on Exit from ENVI为'NO'

  ENVI_BATCH_EXIT

END

;ENVI初始化方法

FUNCTION Object_ENVI_Resize::initEnvi

  CATCH, error_status

  IF Error_status NE 0 THEN BEGIN

    RETURN,-1

    CATCH, /CANCEL

  ENDIF

  ;ENVI二次开发模式初始化

  ENVI,/Restore_Base_Save_Files

  ENVI_BATCH_INIT

  RETURN,1

  

END

;对象初始化函数

;包含两个参数:输入和输出文件名。

;

FUNCTION Object_ENVI_Resize::INIT,$

    inFileName ,outFileName

  COMPILE_OPT idl2

  ;文件名参数

  self.INFILENAME = inFileName

  self.OUTFILENAME = outFileName

  ;初始化ENVI

  INITFALG = self->INITENVI()

  RETURN, INITFALG

  

END

;类定义

PRO OBJECT_ENVI_RESIZE__DEFINE

  ;类定义结构体

  void = {Object_ENVI_Resize, $

    inFileName : '', $

    outFileName : '' $

    }

END

2、使用IDL 85集成环境打开pro文件(编译32位的sav使用32位的IDL集成环境,编译32位的sav使用64位的IDL集成环境),如下图:

ENVI IDL编译单个pro文件的做法

3、单击工具栏上的编译按钮对pro文件进行编译,如下图:

ENVI IDL编译单个pro文件的做法

4、在命令栏中输入命令将编译结果生成sav文件,输入命令如下:

save,/routines,file=’E:\Publish\object_envi_resize_define.sav’

其中E:\Publish\object_envi_resize_define.sav为保存的全路径。到这里就生成了sav文件。

ENVI IDL编译单个pro文件的做法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢