ENVI二次开发技术黑幕

1
ENVIThe Environment for Visualizing Images)遥感影像处置软件是美国ITT公司推出的基于交互式数据语言IDL开发的一套功能壮大的遥感影像处置系统,ENVI能够轻松的读取、显示、分析各类类型的遥感数据并提供了从影像预处置、信息提取到与地理信息系统整合的完整处置流程。
但对一些特殊需求,如添加未知格式数据支持、处置流程定制等可能都需要二次开发的模式。ENVI比较方便的进行二次开发,这是由于其底层壮大的IDL语言支持,多种开发方式支持及200多个功能函数接口等因素决定的。
长江大学学报2ENVI二次开发的层次
ENVI的二次开发包括三个层次,ENVI的功能扩展、独立系统开发和其他语言集成开发。
ENVI的功能扩展是利用ENVI的现有功能及底层IDL语言壮大的运算能力实现的功能模块的定制开发,在现有ENVI的主框架上扩展功能模块,添加自系统功能补丁等方式。
独立系统开发是在非交互式ENVI环境下(如IDL构建系统框架),利用ENVI提供的函数接话柄现数据处置功能。
其他语言集成开发指的是在其他语言如VC++、Visual 下挪用ENVI的功能。
2.1功能扩展
2.1.1波段、波谱运算与自概念功能
扩展ENVI的功能最简单的方式确实是利用波段和波谱运算功能,通过该方式用户能够在波段和波谱运算表达式对话框输入运算函数进行交互运算。
波段、波谱运算功能的实现有两种方式:数学表达式和波段、波谱运算函数。
数学表达式:该方式充分利用IDL的数组处置能力,通过简单表达式输入方式实现复杂的功能。
实例:两图像的波段b1和b2,波段b1中的云部份(以为象元值大于200为云)用波段b2的部份替代。
实现的步骤
1)在ENVI主菜单下,选择[Basic Tools]→[Band Math],在弹出的BandMath界面中,在[Enter an Expresion]里面输入表达式
2)connie lai点击Add to list按钮,然后在[Previous Band Math Expressions]里面选择输入的表达式点击OK。
3)在弹出的界面当选择表达式中变量赋需要计算的波段。
波段、波谱运算函数
编写波段运算函数跟数学表达式相较,在操作上更灵活,函数中能够添加更多的操纵,如运算中的错误检测等。函数的编写超级简单,同意输入波段,处置数据,并返回结果。
实例:以编写(b1+b2)/ (b1-b2)功能为例,步骤如下
1)编写函数并保留
;函数定义为两个输入波段b1b2以及一个check关键字
FUNCTION Bm_ratio,b1,b2,check=check
  ;计算差值
  den=FLOAT(b1)-b2
汽车电子调节器
  ;如设置check关键字,检查被0除问题
  IF(KEYWORD_SET(check)) THEN ptr=WHERE(den EQ 0.,count) $
  ELSE count=0
  IF (count GT 0) THEN den [ptr]=
孔子和学生
  ;继续计算比率结果
  result=(FLOAT(b1)+b2)/den
  IF(count GT 0) THEN result[ptr]=
  ;返回结果
  RETURN,result
END
2)加载函数
拉丝工艺加载函数的方式有两种。注意的是不同的文件需要注意下利用环境,假设是sav文件,启动ENVI或ENVI+IDL都可,但假设是pro文件,必需要启动ENVI+IDL。
(1)直接编译文件,在ENVI的主菜单下,选择[File]→[Compile IDL Module],选择pro或sav文件进行编译;
(2)把或sav文件放入ENVI安装目录下的..\ envi46\save_add下,重启ENVI。
3)执行函数
在ENVI主菜单下,选择[Basic Tools]→[Band Math],在弹出的BandMath界面中,在[Enter an Expresion]里面输入函数挪用点击[OK]执行。
2.1.2用户自概念功能
用户自概念功能许诺用户为ENVI添加新功能并通过ENVI菜单进行访问。当用户通过菜单项选择择该函数对应的菜单项时,将会执行这些函数,就犹如ENVI本身自带的功能一样。分为两个步骤,一是编写功能代码,二是修改菜单。
1)编写功能代码
用户函数能够是pro或sav,如是pro那么与一般的IDL程序无任何区别,用户函数必需放入到ENVI安装目录下的Save_add目录中,在ENVI启动时用户函数能够被自动编译或恢复。用户函数pro代码能够随时进行修改,ENVI只需从头编译函数    而不需要重启。
2)Menu文件修改
ENVI的菜单文件在系统中途径为itt\idlxx\products\envixx\menu,利用记事本就能够打开。文件顶部有些介绍的注释文本,然后确实是文件的结构:
前面以;开头的是注释文本,后面是菜单概念。
菜单概念每一行开始的数据概念了菜单项的层次。0表示最顶层,1表示一级子菜单,2表示二级子菜单,如此类推。
以1级菜单为例说下内容概念:
{Open Image File}概念了显示在菜单上的内容。
{open envi file}概念了为菜单项所赋给的用户值,在处置多个菜单项时有效。
{envi_menu_event}概念了菜单项事件处置程序的名称。
修改保留该文件然后重启ENVI即可。
3)函数修改
ENVI提供函数ENVI_DEFINE_MENU_BUTTON来实现菜单的程序添加。用法如下:功能函数名称为My_Function,event,成立一进程PRO My_Function_define_buttons, buttonInfo,添加工作在那个进程中完成。
ENVI_DEFINE_MENU_BUTTON的挪用格式如下:
供配电ENVI_DEFINE_MENU_BUTTON, ButtonInfo [, /], =string, /, =string [, =long integer or string] [, =long integer] [, =variable], =string [, ={0 | 1 | -1}] [, /], =string
关键字说明: Display-是创建在主菜单仍是显示菜单;
VALUE -菜单的显示信息

本文发布于:2024-09-23 22:33:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/231536.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   功能   运算   波段   处置   菜单   用户   文件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议