IDL——ENVI二次开发初始化问题:多过程的二次开发初始化

一、ENVI中多过程的二次开发初始化

(1) ENVI批处理初始化一般包括如下步骤:
1.ENVI的主菜单条上设置File ->Preferences->Miscellaneous->Exit IDL on Exit from ENVI->No
2.compile_opt idl2                         ;严格编译器要求
3.ENVI, /restore_base_save_files           ;加载ENVI的核心save文件
4.ENVI_batch_init                          ;初始化批处理ENVI文件,并且可以设置‘保存日志’等参数

(2)离开ENVI批处理模式:

     使用ENVI_BATCH_EXIT命令即可,ENVI_BATCH_EXIT退出批处理的方式和通过ENVI主菜单上选择File-> Exit退出ENVI的效果一样。同样,使用该命令退出ENVI后,ENVI时段使用的License也被释放。

但是呢,有个问题。ENVI功能调用完之后需要关闭二次开发模式,否则,多次进行初始化而没关闭,可能会出现功能的调用异常。在有多个过程或者函数时,如何避免多次初始化。多次初始化无疑带来时间的消耗,而且,时机的控制不好,可能带来好多bug。我经过反复的测试,终于将这个恼人的问题算是解决了:使用类似于C语言中的声明的方式,不过有点特别。IDL8.0.1验证通过。

见代码:

pro test_batch
  COMPILE_OPT IDL2
  ENVI,/RESTORE_BASE_SAVE_FILES
  ENVI_BATCH_INIT
  path_c='D:\modis2014\M_HKM_mulband.tif'
  ENVI_OPEN_FILE,path_c,r_fid = fid               ;envi函数1
  mapinfo=ENVI_GET_MAP_INFO(fid=fid)              ;envi函数2
  state_1 = ENVI_GET_PROJECTION(fid = fid)        ;envi函数声明1
  state_2 = ENVI_PROJ_CREATE(/geo)                ;envi函数声明2
  aa=prj(fid)
  print,'mapinfo'
  ENVI_BATCH_EXIT
end



function prj,fid
   map=ENVI_GET_MAP_INFO(fid=fid)                 ;envi函数1
   image_proj = ENVI_GET_PROJECTION(fid = fid)    ;envi函数2
   geo_proj = ENVI_PROJ_CREATE(/geo)              ;envi函数3
   print,'image_prj'
end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值