基于IDL用户函数的波段运算
分享
ENVI 提供对 IDL 程序的访问的功能,可以使用内置的IDL 函数或者用户自定义IDL函数。这些函数要求它们接受一个或多个图像阵列作为输入,并且输出一个与输入波段具有相同行列的单波段二维数组作为计算结果。如下为一个自定义函数的基本格式:
FUNCTION bm_func, b1, [b2,..., bn, parameters and keywords]
processing steps
RETURN, result
END
下面以一个简单的例子介绍用IDL自定义函数,后在Band Math中使用这个函数,自定义函数实现的功能是计算一个比值(b1+b2)/(b1-b2),并且检查分母为0的情况。
第一步、编写函数
用记事本编写以下代码:
保存文件为bm_ratio.pro。
第二步、编译函数
有两种方式编译这个自定义函数:
1) 将bm_ratio.pro文件拷贝到安装路径的save_add 目录下,启动ENVI + IDL模式,自动将bm_ratio.pro编译。
2) 启动 ENVI + IDL模式, 在主菜单中,选择File->Compile IDL Module,在Enter Module Filename对话框中选择bm_ratio.pro。
第三步、应用函数
(1) 打开一个多波谱的图像文件。
(2) 在ENVI主菜单中,选择Basic Tools->Band Math。在Enter an expression文本框中输入:
bm_ratio(b1, b2) ;不执行检查分母为0的情况
或bm_ratio(b1, b2,/check) ; 执行检查分母为0的情况
(3) 其他操作过程与Band Math工具一样。
如果编写的函数有错误或者没有启动ENVI + IDL模式,一般会出现图15.4情况。
图15.4 自定义函数不能成功加载
如果熟悉IDL的可视化编译环境(IDL Workbench),在第一步编写函数时候可以在IDL Workbench环境中编写,并且可以编译为.sav文件。在第二步编译函数时候可以单独启动ENVI Runtime模式。 用 IDL 编写自定义函数非常灵活,功能也非常强大,前提是需要 IDL 相关知识。
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0101091y.html
FUNCTION bm_func, b1, [b2,..., bn, parameters and keywords]
processing steps
RETURN, result
END
下面以一个简单的例子介绍用IDL自定义函数,后在Band Math中使用这个函数,自定义函数实现的功能是计算一个比值(b1+b2)/(b1-b2),并且检查分母为0的情况。
第一步、编写函数
用记事本编写以下代码:
保存文件为bm_ratio.pro。
第二步、编译函数
有两种方式编译这个自定义函数:
1) 将bm_ratio.pro文件拷贝到安装路径的save_add 目录下,启动ENVI + IDL模式,自动将bm_ratio.pro编译。
2) 启动 ENVI + IDL模式, 在主菜单中,选择File->Compile IDL Module,在Enter Module Filename对话框中选择bm_ratio.pro。
第三步、应用函数
(1) 打开一个多波谱的图像文件。
(2) 在ENVI主菜单中,选择Basic Tools->Band Math。在Enter an expression文本框中输入:
bm_ratio(b1, b2) ;不执行检查分母为0的情况
或bm_ratio(b1, b2,/check) ; 执行检查分母为0的情况
(3) 其他操作过程与Band Math工具一样。
如果编写的函数有错误或者没有启动ENVI + IDL模式,一般会出现图15.4情况。
图15.4 自定义函数不能成功加载
如果熟悉IDL的可视化编译环境(IDL Workbench),在第一步编写函数时候可以在IDL Workbench环境中编写,并且可以编译为.sav文件。在第二步编译函数时候可以单独启动ENVI Runtime模式。 用 IDL 编写自定义函数非常灵活,功能也非常强大,前提是需要 IDL 相关知识。
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0101091y.html
0 个评论
相关问题
- 作为Desktop用户对数据的获取比较乏力,可能缺了哪些知识?
- 请问目前基于Esri哪个平台可以开发出这样的效果?(如3D热力图)
- Arcgis10.4 创建企业级地理数据库 “用户不具有创建数据库对象的必要权限 ”
- 基于ArcGIS的CAD数据向GIS数据转换方法
- JavaScript App 中,是否可以根据用户需求只返回特定要素范围内的切片?
- 用js调用portal中用户所发布的webmap并在该地图上添加点如何用代码实现,我的总是报错。。。。
- ArcMap中提取波段信息的方法
- ArcGIS Runtime SDK for Android加载本地影像时,如何对RGB波段进行调整?
- arcgis api for js基于服务器端创建图层
- 基于ArcGIS Server创建地图缓存,切图进程突然内存暴涨导致服务器挂死
- 在CityEngine的CGA代码中 p() 函数是什么意思?