没有合适的资源?快使用搜索试试~ 我知道了~
首页ENVI二次开发实战手册:遥感处理与IDLextension
ENVI二次开发实战手册:遥感处理与IDLextension
需积分: 10 0 下载量 126 浏览量
更新于2024-07-23
收藏 868KB PDF 举报
ENVI二次开发指南是一份针对遥感图像处理和学习者的专业文档,由航天星图(北京)有限公司编撰。ENVI是由美国RSI公司推出的高级遥感影像处理软件,它具有强大的数据处理能力,支持多种数据格式,操作界面友好且易于上手,广泛应用于地质、环境、农业等多个领域。该指南旨在帮助用户深入了解ENVI软件的二次开发潜力,内容涵盖了ENVI编程的基础概念,如波段和波谱运算函数、用户函数、交互式程序设计、自定义文件格式处理、批处理操作以及菜单文件的利用。 在ENVI的扩展性方面,指南解释了如何可能扩展ENVI的功能,包括通过编写程序来执行特定的波段运算、用户自定义函数和交互式程序。此外,还介绍了ENVI与交互式数据语言IDL的关系,强调了在非交互模式下编写复杂程序的控制技巧,以及两者在文件输入输出上的异同。 章节中详细介绍了ENVI处理程序的关键字,如FID(Feature ID)、R_FID和M_FID,这些关键字在处理遥感数据时具有重要作用。编程部分提供了丰富的示例,以便读者能够实际操作和理解ENVI的二次开发过程。指南还涉及了如何编译程序和使用ToggleCatch等实用工具。 然而,由于编写者的水平和时间限制,书中可能存在一些不足或错误,作者诚挚地邀请读者提出批评和建议。整个指南旨在为ENVI用户社区提供一个全面的开发指南,帮助他们提高工作效率,实现空间信息应用的专业化和定制化。 如果您有任何疑问或需要进一步的帮助,可以联系航天星图科技(北京)有限公司,他们的支持邮箱为support@imagetekinfo.com。这是一份非常有价值的资源,对于希望深化ENVI技能和进行软件定制的遥感专业人士来说,不容错过。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/7475887/bgf.jpg)
;返回结果
return,result
end
下列步骤列出了如何执行该函数:
(1)保存文件为 bm_ratio.pro 并放置到 save_add 目录下
(2)启动或重新启动 ENVI
(3)打开一个文件包含两个波段
(4)选择 Basic Tools -> Band Math
(5)执行两个波段的比值,不检查是否被 0 除,在表达式文本框中输入:
Bm_ratio(b1,b2)
(6)执行两个波段的比值,并检查是否被 0 除,输入下面的式子:
Bm_ratio(b1,b2,/check)
二、波谱运算
1、波谱运算基础
ENVI 的波谱运算功能可以调用用户编写的程序执行自定义处理。波谱运算接口用于定
义波谱或文件用作输入,调用用户函数,并将结果写入到绘图窗口、文件或内存中。用作输
入的波谱必需显示在绘图窗口中。波谱运算通过映射变量到波谱或文件来获取数据。波谱运
算函数使用变量名为 s1(S1),s2 等等。波谱运算函数在波谱运算表达式中被调用。通过波谱
运算对话框确定变量。
下图通过进行三个波谱的相加来说明波谱运算的过程。表达式中的每一个变量都被映射
为一个输入波谱,对这三个波谱求和并将结果输出到绘图窗口。表达式中的变量也可以映射
为文件而不仅是单一波谱,在这种情况下,结果将是一幅新的影像。例如,在表达式 s1+s2+s3
中,如果 s1 映射为一个文件,而 s2 和 s3 映射为单一波谱,那么结果影像将是 s1 代表的影
像加上 s2 和 s3。
航天星图科技(北京)有限公司
10
![](https://csdnimg.cn/release/download_crawler_static/7475887/bg10.jpg)
例如:要执行一个称为 SM_SCALE 的函数,该函数有两个输入波谱,在波谱表达式文
本框中输入:
Sm_scale(s1,s2)
该函数定义为:
Function sm_scale,s1,s2
2、编写波谱运算函数
在波谱运行表达式中执行的波谱函数,编写非常简单。该函数接受输入波谱,处理数据,
并返回结果。函数定义如下:
Function sm_func, s1,[s2,….,sn, parameters and keywords]
Processing steps
Return,result
End
波谱运算函数的输出为单一波谱或和输入具有同样波段的波谱。但一个输入参数被映射
为文件,所有行的波谱将一次进行处理。
3、编译波谱运行函数
一旦完成函数的编写,推荐用户将程序结果.pro 或.sav 文件放置到 ENVI 安装路径下的
save_add 目录下,这样 ENVI 在启动时会自动编译或恢复这些函数。同时,该函数也可以通
过在 ENVI 的主菜单上选择 File-> Compile IDL Module 进行手动的编译。
4、波谱函数的例子
要执行如下的运算:s1 / s2
;执行如下计算
;S1/S2 并检查是否被 0 除
航天星图科技(北京)有限公司
11
![](https://csdnimg.cn/release/download_crawler_static/7475887/bg11.jpg)
;函数定义为两个输入光谱数据,S1 和 S2,以及一个关键字 check
function sm_ration,s1,s2,check=check
;如果定义了 check 关键字就检查被 0 除的情况
;首先找到 S2 中为 0 的数据位置
if(keyword_set(check)) then ptr=where(s2 eq 0.,count) $
else count=0
;将找到的数据位置赋值为 1.0
if(count gt 0) then s2[ptr]=1.0
;执行运算
result=float(s1)/s2
;将 0 值位置重新赋值为 0
if(count gt 0) then result[ptr]=0.0
;返回处理结果
return,result
end
执行下列步骤,来运行本例:
(1)将函数保存为 mfspec.pro 并放置到 save_add 目录下
(2)启动或重起 ENVI
(3)打开一个多波段的文件
(4)显示影像,并通过在影像窗口菜单下选择 Tools-> Profiles->Z Profile 绘制两个波谱
(5)在波谱工具下拉菜单中选择波谱运算
(6)执行两个波谱的比率,而不检查是否被零除,在表达式对话框中输入下面的内容:
Sm_ratio(s1,s2)
(7)执行两个波谱的比率,检查是否被零除,在表达式对话框中输入下面的内容:
Sm_ratio(s1,s2,/check)
航天星图科技(北京)有限公司
12
![](https://csdnimg.cn/release/download_crawler_static/7475887/bg12.jpg)
第三章 批处理模式
许多 ENVI 影像处理程序无需用户交互,它们能够在批处理和交互式环境下运行。执行
批处理在于构建一个程序包含所有的程序调用和合适的参数。批处理程序能够从菜单系统中
以最小 GUI 输入的方式启动,也可通过没有 GUI 输入的方式脱离菜单系统。第一种方式允
许将各种处理程序联系在一起并由简单的菜单选择启动。而第二种方式可以对大量的文件进
行处理。
一、ENVI 的批处理模式
以批处理模式运行 ENVI 能够让用户在命令模式下使用 ENVI。这种能力在以下几种情
况下非常有用:
(1)用户主要使用 IDL 工作但偶尔需要用到 ENVI 的函数;
(2)用户希望创建定制的应用程序其中混合了 IDL 代码和 ENVI 函数;
(3)用户希望进行大量的 ENVI 处理而无需人工干预。
批处理模式的 ENVI 和正常模式下没有什么区别,只是通过一系列特定的函数库来执行
ENVI 的功能。为了使用这些函数,必须首先将它们恢复到 IDL 内存中。因此为了正确获取
ENVI 库函数,有必要了解一下 ENVI 程序的结构。
ENVI 功能函数分散在大约 50 个小的 IDL save 文件中,这些二进制的文件包括数据和
编译后的程序。这些 save 文件存放在 ENVI 安装路径下的 Save 目录下。ENVI 核心 save 文
航天星图科技(北京)有限公司
13
![](https://csdnimg.cn/release/download_crawler_static/7475887/bg13.jpg)
件包括 ENVI 的基本功能函数,动态运行函数以及 ENVI 运行所需的内部变量。在典型的
Windows PC 上这些文件存放在:C:\rsi\idlxx\products\envixx\save 目录下。在典型的 UNIX
系统中,这些文件位于/usr/local/rsi/idl_x.x/products/envi_x.x/save。
在批处理模式下运行 ENVI 需要先恢复核心的 save 文件,而后,一个称为
ENVI_BATCH_INIT 的特定 ENVI 函数被调用,该函数开启批处理模式。该步处理称为初始
化批处理。
二、混合批处理模式
ENVI 始终是一个 IDL 程序,如果用户使用运行 ENVI 的 IDL 时段,用户将能够访问所
有 ENVI 程序和函数。这种状态通常称为混合批处理模式,因为用户能够使用 ENVI 特有的
库函数而无需初始化批处理模式。这种状况既带来了便利,也带来了问题。举例来说,如果
用户在 IDL 命令行下运行的程序产生了新的影像波段,能够通过 ENVI_ENTER_DATA 直接
将这些数据输入到可用波段列表中。但如果 IDL 程序崩溃,那么当前的 ENVI 环境将会整个
崩溃。在编写 ENVI 用户函数的时候混合批处理模式非常有用,因为它模拟了代码执行的最
终环境。但是在真正运行批处理程序时,推荐用户开启一个单独的 IDL 时段,并进行批处
理的初始化。
三、批处理模式初始化
初始化 ENVI 批处理模式需要恢复 ENVI 的二进制 save 文件,并调用 ENVI 的命令
ENVI_BATCH_INIT。
1、启动 ENVI;
2、从 ENVI 的主菜单条上选择 File ->Preferences;
3、点击 Miscellaneous 选单,并确定 Exit IDL on Exit from ENVI 选项设置为 No;
4、退出 ENVI,如果需要退出 IDL。
警告:不要在已经运行交互式 ENVI 的 IDL 时段中启动 ENVI 的批处理模式。重新启动一个
IDL 时段并以批处理模式初始化 ENVI。
5、启动一个新的 IDL 时段,并输入以下命令:
IDL>ENVI, /restore_base_save_files
如果忘了设置关键字 RESTORE_BASE_SAVE_FILES,最终会启动正常的 ENVI 程序;
6、接着,调用 ENVI_BATCH_INIT 程序
调用 ENVI_BATCH_INIT 等于启动了一个没有 GUI 的新 ENVI 时段。如果已经是批处理状
态,后面再调用 ENVI_BATCH_INIT 命令将会被忽略。
下面的是批处理初始化的例子:
pro bt_init
航天星图科技(北京)有限公司
14
剩余90页未读,继续阅读
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/57221dd69cc84b6099b572f34f2f4245_wode9890.jpg!1)
「已注销」
- 粉丝: 2
- 资源: 32
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)