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
end3.在功能过程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版权协议,转载请附上原文出处链接和本声明。