envi idl 二次开发-自定义envi扩展工具

ENVI扩展工具文件夹的在安装目录的Extension下:”C:\Program Files\Exelis\ENVI53\extensions”,自定的的envi扩展工具保存为.sav文件到该路径下后,启动envi就可以使用自定的扩展工具。

参考envi idl二次开发的博客,自定义简单的边缘检测扩展工具
http://blog.sina.com.cn/s/blog_764b1e9d0102v59d.html

1.在IDL 下,新建【ENVI扩展】,其中扩展名称为功能的名称,命名为Canny;程序名称,命名为envi5_canny,也是过程pro的名称。
这里写图片描述

2.新建扩展完成后,会生成定义的代码,在pro envi5_canny_extensions_init 过程中,是用于定义扩展工具的显示的地方,如需要在原始菜单下的【Edit】菜单里的【Redo】下,添加Canny扩展功能,就可以写>>> e.AddExtension, ‘Canny’, ‘envi5_canny’,/menu, PATH=’Edit’,after = ‘Redo’, /SEPARATOR

; Add the extension to the toolbox. Called automatically on ENVI startup.
pro envi5_canny_extensions_init

  ; Set compile options
  compile_opt IDL2

  ; Get ENVI session
  e = ENVI(/CURRENT)

  ; Add the extension to a subfolder
  e.AddExtension, 'Canny', 'envi5_canny', PATH=''
  ;添加到原始菜单下,/Sep表示分割符
  e.AddExtension, 'Canny', 'envi5_canny',/menu,$
    PATH='Edit',after = 'Redo', /SEPARATOR
end

3.在功能过程envi_canny中定义实现的方法,可以直接运行测试,之后进行【重置】,编译该过程,并将该过程保存到扩展工具目录下>>>
IDL> save,filename =”C:\Program Files\Exelis\ENVI53\extensions\envi5_canny.sav”,/routines

; ENVI Extension code. Called when the toolbox item is chosen.
pro envi5_canny

  ; Set compile options
  compile_opt IDL2

  ; General error handler
  CATCH, err
  if (err ne 0) then begin
    CATCH, /CANCEL
    if OBJ_VALID(e) then $
      e.ReportError, 'ERROR: ' + !error_state.msg
    MESSAGE, /RESET
    return
  endif

  ;Get ENVI session
  e = ENVI(/CURRENT)

  ;******************************************
  ; Insert your ENVI Extension code here...
  ;******************************************

  UI = e.ui
  ;选择输入文件
  Raster = UI.SelectInputData(/Raster)
  ;如果用户点返回,判断raster是否可用
  if ~obj_valid(raster) then return
  ;如果可用
  data = Raster.GetData(bands=[0])
  result = canny (data)  
  outfile = e.GetTemporaryFilename()
  ;定义输出栅格的波段,并且保存
  outRaster = ENVIRaster(result, uri  = outfile, nbands =1)
  outRaster.Save
  ;显示边缘检测后的栅格
  View = e.getview()
  Layer = View.Createlayer(outRaster)


end

显示的结果如下:
这里写图片描述

envi idl 在线帮助文档
https://www.harrisgeospatial.com/docs/ToolboxExtensions.html


版权声明:本文为qq_37798011原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。