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