当前位置: 代码迷 >> 综合 >> envi idl 二次开发-自定义envi扩展工具
  详细解决方案

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

热度:47   发布时间:2023-11-25 11:16:30.0

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 optionscompile_opt IDL2; Get ENVI sessione = ENVI(/CURRENT); Add the extension to a subfoldere.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 optionscompile_opt IDL2; General error handlerCATCH, errif (err ne 0) then begin
 CATCH, /CANCEL
 if OBJ_VALID(e) then $
 e.ReportError, 'ERROR: ' + !error_state.msg
 MESSAGE, /RESET
 returnendif;Get ENVI sessione = 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

  相关解决方案