IDL 转载-ENVI 5.1二次开发之——全新图像批处理模式(ENVITask)

转载-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,如下表所示:

表: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

在这里插入图片描述

部分内容没有转载,完整内容请查看原文链接

猜你喜欢

转载自blog.csdn.net/qq_37970770/article/details/107932714