声明
本文内容转载自ENVI-IDL技术殿堂博客,点此进入文章链接!
正文
之前做过ENVI二次开发的都知道,ENVI提供了一些列的DOIT函数,几乎包含了ENVI的所有图像处理功能,可以方便地被用户调用从而实现批处理,这些DOIT函数都是面向过程的。从ENVI 5.1版本开始,开始提供一种全新的图像处理API模式(ENVITask),即面向对象。本文就带大家来认识一下这些API。
从5.1版本开始,我们可以使用ENVITask和ENVITaskParameter两个对象组合使用进行各种各样的图像处理操作,ENVI 5.1目前只提供了四个ENVITask,如下表所示:
这些Tasks与ENVI界面中对应工具支持的参数是一样的。所以想要快速调用这些Tasks,最好首先熟悉ENVI对应工具的使用与参数设定。
1.ENVITask与ENVITaskParameter对象
先来学习下这两个基础对象。简单来说,ENVITask就是用来新建Task的,而ENVITaskParameter可以返回当前Task的属性列表。
1.1 ENVITask
调用格式:
Result = ENVITask(‘TaskName’ [, ERROR=variable])
ENVI> Task = ENVITask(‘QUAC’)
ENVI> Task.DESCRIPTION
This task performs the QUick Atmospheric Correction workflow on an image
ENVI> Task.NAME
QUAC
ENVI> Task.IGNORE_VALIDATE
0
1.2 ENVITaskParameter
每一个ENVITask都有自己的参数设定。使用此方法可以返回查看每一个参数的所有属性,如下表所示。ENVITaskParameter的调用非常简单(查看上文示例代码),格式如下:
Result = ENVITask.Parameter(‘TaskProperty’ [, ERROR=variable])
其中,‘TaskProperty’为要查看的参数名,如上文的’input_raster’。
2.调用方法示例
以ENVIRPCOrthorectificationTask为例,介绍如何使用ENVITask进行图像处理。ENVIRPCOrthorectificationTask具有很多属性,属性列表如下所示。
下面的示例代码:
PRO Example_RPCOrthorectification
; 启动ENVI5.1
e = ENVI()
; 选择输入文件
ImageFile = DIALOG_PICKFILE(TITLE='Select an input image')
Raster = e.OpenRaster(ImageFile)
; 选择DEM文件,这里使用ENVI5.1自带的DEM数据
DEMFile = 'C:\Program Files\Exelis\ENVI51\data\GMTED2010.jp2'
DEM = e.OpenRaster(DEMFile)
; 新建RPCOrthorectification ENVITask
Task = ENVITask('RPCOrthorectification')
; 设置Task的输入输出参数
Task.INPUT_RASTER = Raster
Task.DEM_RASTER = DEM
Task.DEM_IS_HEIGHT_ABOVE_ELLIPSOID = 0
Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
; 执行Task
Task.Execute, Error=error
; 将输出结果添加到Data Manager中
DataColl = e.DATA
DataColl.Add, Task.OUTPUT_RASTER
; 显示结果
View1 = e.GetView()
Layer1 = View1.CreateLayer(Task.OUTPUT_RASTER)
END
部分内容没有转载,完整内容请查看原文链接!