转载-ENVI 5.1二次开发之——全新图像批处理模式(ENVITask)
- 声明
- 正文
声明
本文内容转载自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.1e = 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 ENVITaskTask = ENVITask('RPCOrthorectification'); 设置Task的输入输出参数Task.INPUT_RASTER = RasterTask.DEM_RASTER = DEMTask.DEM_IS_HEIGHT_ABOVE_ELLIPSOID = 0Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename(); 执行TaskTask.Execute, Error=error; 将输出结果添加到Data Manager中DataColl = e.DATA DataColl.Add, Task.OUTPUT_RASTER; 显示结果View1 = e.GetView()Layer1 = View1.CreateLayer(Task.OUTPUT_RASTER)
END
部分内容没有转载,完整内容请查看原文链接!