ENVI二次开发技术内幕.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE 12页 前言 ENVI(The Environment for Visualizing Images)遥感影像处理软件是美国ITT公司推出的基于交互式数据语言IDL开发的一套功能强大的遥感影像处理系统,ENVI可以轻松的读取、显示、分析各种类型的遥感数据并提供了从影像预处理、信息提取到与地理信息系统整合的完整处理流程。 但对一些特殊需求,如添加未知格式数据支持、处理流程定制等可能都需要二次开发的模式。ENVI比较方便的进行二次开发,这是由于其底层强大的IDL语言支持,多种开发方式支持及200多个功能函数接口等因素决定的。 ENVI二次开发的层次 ENVI的二次开发包括三个层次,ENVI的功能扩展、独立系统开发和其他语言集成开发。 ENVI的功能扩展是利用ENVI的现有功能及底层IDL语言强大的运算能力实现的功能模块的定制开发,在现有ENVI的主框架上扩展功能模块,添加自系统功能补丁等方式。 独立系统开发是在非交互式ENVI环境下(如IDL构建系统框架),利用ENVI提供的函数接口实现数据处理功能。 其他语言集成开发指的是在其他语言如VC++、Visual Studio.net2005下调用ENVI的功能。 功能扩展 波段、波谱运算与自定义功能 扩展ENVI的功能最简单的方法就是使用波段和波谱运算功能,通过该方式用户可以在波段和波谱运算表达式对话框输入运算函数进行交互运算。 波段、波谱运算功能的实现有两种方式:数学表达式和波段、波谱运算函数。 数学表达式:该方式充分利用IDL的数组处理能力,通过简单表达式输入方式实现复杂的功能。 实例:两图像的波段b1和b2,波段b1中的云部分(认为象元值大于200为云)用波段b2的部分替代。 实现的步骤 在ENVI主菜单下,选择[Basic Tools]→[Band Math],在弹出的BandMath界面中,在[Enter an Expresion]里面输入表达式 点击Add to list按钮,然后在[Previous Band Math Expressions]里面选择输入的表达式点击OK。 在弹出的界面中选择表达式中变量赋需要计算的波段。 波段、波谱运算函数 编写波段运算函数跟数学表达式相比,在操作上更灵活,函数中可以添加更多的控制,如运算中的错误检测等。函数的编写非常简单,接受输入波段,处理数据,并返回结果。 实例:以编写(b1+b2)/ (b1-b2)功能为例,步骤如下 编写函数并保存 ;函数定义为两个输入波段b1和b2以及一个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]=1.0 ;继续计算比率结果 result=(FLOAT(b1)+b2)/den IF(count GT 0) THEN result[ptr]=0.0 ;返回结果 RETURN,result END 加载函数 加载函数的方法有两种。注意的是不同的文件需要注意下使用环境,若是sav文件,启动ENVI或ENVI+IDL都可,但若是pro文件,必须要启动ENVI+IDL。 直接编译文件,在ENVI的主菜单下,选择[File]→[Compile IDL Module],选择pro或sav文件进行编译; 把bm_ratio.pro或sav文件放入ENVI安装目录下的..\ envi46\save_add下,重启ENVI。 执行函数 在ENVI主菜单下,选择[Basic Tools]→[Band Math],在弹出的BandMath界面中,在[Enter an Expresion]里面输入函数调用点击[OK]执行。 用户自定义功能 用户自定义功能允许用户为ENVI添加新功能并通过ENVI菜单进行访问。当用户通过菜单选择该函数对应的菜单项时,将会执行这些函数,就如同ENVI本身自带的功能一样。分为两个步骤,一是编写功能代码,二是修改菜单。 编写功能代码 用户函数可以是pro或sav,如是pro则与普通的IDL程序无任何区别,用户函数必须放入到ENVI安装目录下的Save_add目录中,在ENVI启动时用户函数可以被自动编译或恢复。用户函数pro代码可以随时进行修改,ENVI只需重新编译函数 而不需要重启。 Menu文件修改 ENVI的菜单文件envi.menu在系统中路径为itt\idlxx\products\envixx\menu,使

文档评论(0)

扶摇直上九万里 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档