ENVI 5.2二次开发更加智能、全面
分享
大家所熟悉的ENVI二次开发方式是调用*_doit函数,这种传统的开发方式在函数调用时参数设置复杂,开发不够智能。从ENVI 5.0版本开始,便加入了许多全新的二次开发函数接口,这些全新的函数接口采用面向对象的开发方式,使得ENVI二次开发变得更加轻松、智能。
最新发布的ENVI5.2版本在保留传统的ENVI二次开发方式(*_DOIT)的基础上,新增了更多全新的函数接口及58个即拿即用的图像处理任务(ENVI Task),使得ENVI二次开发功能更加全面。详细介绍请参考ENVI Help->Programming->Routines及Programming Guide(二次开发手册)。
1. 智能的二次开发方式
面向对象(Object-Oriented,简称OO)开发方式主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物。全新的ENVI 二次开发方式不需要用户拥有强大的面向对象技能,只需理解对象概念即可。对象是一个程序的基石,但对象具体是什么呢?这里举个例子:当你第一眼看到下图的藏獒时,你看到了它的毛色为黄色,鼻子大,眼睛小等特性,如果你拿棍子打它,它会立马起来咬你,这是它的行为。因此,我们说这里的藏獒就是一个对象,每个对象都有它的属性(特性)和方法(行为)。
理解了对象的概念,ENVI5.2二次开发方式将变的非常简单、智能。
图:藏獒->对象
ENVI新的二次开发中,通过e=ENVI()方式启动ENVI,这里返回的e就是一个对象,将e的信息打印出来:
ENVI> print,e
ENVI <274465>
DATA =
LANGUAGE = 'eng'
LAYOUT = 1, 1
LOG_FILE = ''
PREFERENCES =
ROOT_DIR = 'C:\Program Files\Exelis\envi52\'
UI =
UVALUE = !NULL
VERSION = '5.2'
WIDGET_ID = 897
可以看到e中包含了许多信息,包括语言(Language)、视图布局(layout)、日志文件(log_fid)、安装目录(root_dir)、UI对象、UVALUE、版本(Version)和Widget_ID,这些都是e这个对象的属性。
我们说每个对象除了属性之外还有方法,例如:通过e对象的Openraster方法打开一个栅格数据。
我们通过查看Openraster方法的帮助,可以知道该方法的返回值raster也是一个对象,那对象raster又有自己的属性和方法,例如:利用raster对象的Export方法将数据导出为TIF格式。
至此,大家应该理解对象的概念了!
2. 全新的二次开发接口
ENVI5.2提供了功能更加全面的函数接口,根据函数调用方式的不同分为两类:ENVI函数接口调用、ENVI Tasks调用。
2.1ENVI函数接口调用
ENVI5.2提供了更多的程序控制、数据控制以及显示控制相关的函数接口,功能更加全面,例如:使用ENVIMosaicRaster函数对输入栅格做镶嵌,函数调用方法如下:
ENVI5.2包含的程序控制、数据控制以及显示控制相关的函数接口总结如下,
程序控制包含的方法及功能如下表所示:
数据控制中包含的函数如下表所示:
显示控制包含的函数如下表所示:
2.2ENVI Task调用
ENVI5.2新增了58个即拿即用的图像处理任务,几乎包括了所有基本的ENVI图像处理,用户可以利用ENVITask和ENVITaskParameter两个函数调用任何一个任务,可以说ENVI Task调用是一种特殊的函数接口调用。这里我们对58种任务做了总结和说明如下表所示:
以ENVI5.2新增的NNDiffuse融合方法为例,介绍如何调用ENVI Task,其他Task调用方法类似,IDL代码如下所示:
执行的结果如下图所示:
图:NND融合前后对比
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0102vakm.html
最新发布的ENVI5.2版本在保留传统的ENVI二次开发方式(*_DOIT)的基础上,新增了更多全新的函数接口及58个即拿即用的图像处理任务(ENVI Task),使得ENVI二次开发功能更加全面。详细介绍请参考ENVI Help->Programming->Routines及Programming Guide(二次开发手册)。
1. 智能的二次开发方式
面向对象(Object-Oriented,简称OO)开发方式主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物。全新的ENVI 二次开发方式不需要用户拥有强大的面向对象技能,只需理解对象概念即可。对象是一个程序的基石,但对象具体是什么呢?这里举个例子:当你第一眼看到下图的藏獒时,你看到了它的毛色为黄色,鼻子大,眼睛小等特性,如果你拿棍子打它,它会立马起来咬你,这是它的行为。因此,我们说这里的藏獒就是一个对象,每个对象都有它的属性(特性)和方法(行为)。
理解了对象的概念,ENVI5.2二次开发方式将变的非常简单、智能。
图:藏獒->对象
ENVI新的二次开发中,通过e=ENVI()方式启动ENVI,这里返回的e就是一个对象,将e的信息打印出来:
ENVI> print,e
ENVI <274465>
DATA =
LANGUAGE = 'eng'
LAYOUT = 1, 1
LOG_FILE = ''
PREFERENCES =
ROOT_DIR = 'C:\Program Files\Exelis\envi52\'
UI =
UVALUE = !NULL
VERSION = '5.2'
WIDGET_ID = 897
可以看到e中包含了许多信息,包括语言(Language)、视图布局(layout)、日志文件(log_fid)、安装目录(root_dir)、UI对象、UVALUE、版本(Version)和Widget_ID,这些都是e这个对象的属性。
我们说每个对象除了属性之外还有方法,例如:通过e对象的Openraster方法打开一个栅格数据。
我们通过查看Openraster方法的帮助,可以知道该方法的返回值raster也是一个对象,那对象raster又有自己的属性和方法,例如:利用raster对象的Export方法将数据导出为TIF格式。
至此,大家应该理解对象的概念了!
2. 全新的二次开发接口
ENVI5.2提供了功能更加全面的函数接口,根据函数调用方式的不同分为两类:ENVI函数接口调用、ENVI Tasks调用。
2.1ENVI函数接口调用
ENVI5.2提供了更多的程序控制、数据控制以及显示控制相关的函数接口,功能更加全面,例如:使用ENVIMosaicRaster函数对输入栅格做镶嵌,函数调用方法如下:
ENVI5.2包含的程序控制、数据控制以及显示控制相关的函数接口总结如下,
程序控制包含的方法及功能如下表所示:
数据控制中包含的函数如下表所示:
显示控制包含的函数如下表所示:
2.2ENVI Task调用
ENVI5.2新增了58个即拿即用的图像处理任务,几乎包括了所有基本的ENVI图像处理,用户可以利用ENVITask和ENVITaskParameter两个函数调用任何一个任务,可以说ENVI Task调用是一种特殊的函数接口调用。这里我们对58种任务做了总结和说明如下表所示:
以ENVI5.2新增的NNDiffuse融合方法为例,介绍如何调用ENVI Task,其他Task调用方法类似,IDL代码如下所示:
执行的结果如下图所示:
图:NND融合前后对比
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0102vakm.html
0 个评论
相关问题
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- 安装完arcgis10.3后,为何没有Envi tools这个工具箱?
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?
- ENVI中Image to Map中X/Y Pixel Size的参数如何设置?
- 如何学好二次开发?
- envi安装
- 按照Engine+开发手册ArcEngine_10.0_C#二次开发编写的鹰眼的代码,运行时鹰眼不显示!
- 零基础进行二次开发可行吗?
- ENVI植被覆盖度计算大于1
- arcgis 线要素的平行复制在AE二次开发中如何实现,使用哪些接口
- envi 两幅图像图像镶嵌后有明显的色差及接缝线,该怎么解决?