ENVI5.0 Beta体验-二次开发
ENVI5.0Beta提供了全新的界面,拥有了良好的操作体验效果,见https://www.cnblogs.com/enviidl/p/16521796.html。ENVI的二次开发方式在保留原来的功能强大、方便调用的二次开发模式(ENVI Batch mode)基础上,对界面控制和扩展方面进行了更新:
1、 命令行下灵活的界面控制
在IDL的命令行下对ENVI的数据加载和界面功能控制函数进行了封装和简化,使得用户利用命令控制ENVI显示更加方便。
例如打开一个多波段影像进行两个窗口关联显示的示例代码(“;”后面为额外注释)如下:
|
;启动ENVI IDL> e = envi() ;定义输入影像文件完整路径名称 ENVI> file = FILEPATH('qb_boulder_msi', SUBDIR = ['products', 'envidata']) ;打开影像文件 ENVI> image = e.OpenRaster(file) ;获取当前显示窗体 ENVI> view1 = e.GetView() ;显示窗体中真彩色合成显示图像,见图1 ENVI> rgb = view1.CreateLayer(image) ;添加第二个显示窗体 ENVI> view2 = e.CreateView() ;第二个显示窗体中假彩色合成显示图像 ENVI> cir = view2.CreateLayer(image, /CIR) ;地理关联两个显示窗体,见图1 ENVI> view1.GeoLink, view2 ;关闭显示窗体1 ENVI> view1.Close ;退出ENVI ENVI> e.close |
图1 命令行下显示真彩色合成图像
图2 命令行下地理关联显示真彩色合成和假彩色合成图像
2、 方便易用的ENVI工具箱扩展
自ENVI5.0中提供了更加直观的工具箱和快捷的功能调用,利用IDL编写功能扩展也非常的容易。下面以编写生成自动闪烁透视图扩展工具为例,步骤如下:
1) 新建ENVI工具扩展工程
启动IDL,点击菜单“New ENVI Extension…”,见图3.
图3 IDL工作台中新建ENVI功能扩展
在工具扩展项目属性中输入扩展名称与功能函数等参数,如图4

图4 扩展工具参数设置
2) 编写功能代码
点击按钮“完成”,IDL会自动创建工程“MyExtension”和源码文件“emboss_band1.pro”,并在源码文件中提供代码框架,见图5。

图5 自动生成的扩展工具代码框架
编写工具扩展功能代码,打开影像文件并对比闪烁显示的代码如下:
|
… ;****************************************** ; Insert your ENVI Extension code here... ;****************************************** ;对话框选择待显示影像文件 inFile=DIALOG_PICKFILE(DIALOG_PARENT=e.WIDGET_ID, $ TITLE='Please select input file',$ /MUST_EXIST) ;对话框交互选择输出结果文件 outFile=DIALOG_PICKFILE(DIALOG_PARENT=e.WIDGET_ID, $ TITLE='Please select output file')
;打开输入影像文件并显示 raster = e.OpenRaster(inFile) view=e.GetView() layer1=view.CreateLayer(raster, BANDS=[0]) ;创建输出结果文件 rasterNew = e.CreateRaster(outFile, INHERITS_FROM=raster) ; 基于文件分块创建闪烁区域图像块 tiles = raster.CreateTileIterator(BANDS=[0]) FOREACH tile, Tiles DO BEGIN data = EMBOSS(tile, /EDGE_WRAP) rasterNew.SetTile, Data, Tiles ENDFOREACH
;保存文件并加载到显示窗体 rasterNew.Save layer2 = view.CreateLayer(rasterNew) ;加载透视窗口并对比闪烁显示 portal = view.CreatePortal() portal.Animate end |
3) sav文件生成
可以通过工程构建方式生成或命令行下生成,如命令行下生成代码:
|
IDL> .RESET_SESSION IDL> .COMPILE emboss_band1.pro IDL> RESOLVE_ALL, /CONTINUE_ON_ERROR, SKIP_ROUTINES='ENVI' IDL> SAVE, FILENAME='emboss_band1.sav', /routines |
4) 扩展使用
将生成的sav文件拷贝到ENVI5.0安装目录下enviextensions子目录,重启ENVI。在ENVI的ToolBox下Extensions下发现新编写的工具,双击执行后效果见图6。
图6 扩展工具调用

本文来自地理遥感生态网平台www.gisrs.cn,作者:地理遥感生态网平台,转载请注明原文链接:https://www.cnblogs.com/gisrs365/articles/18221996
浙公网安备 33010602011771号