ERDAS IMAGINE软件二次开发方法研究

时间:2022-09-16 04:58:47

ERDAS IMAGINE软件二次开发方法研究

摘 要:本文在ERDAS IMAGINE 8.6的基础上研究了ERDAS软件的三种二次开发方法,介绍了研究过程中的一些体会、心得,提出了一些实践过程中遇到的问题。

关键词:ERDAS;IMAGINE

1.前言

随着遥感技术的飞速发展,遥感应用的逐步深入,遥感图像处理系统如雨后春笋般不断涌现。在众多的遥感软件当中,ERDAS(Earth Resource Data Analysis System)以其强大的综合功能,特别是与地理信息系统的有机集成,得到遥感界众多用户的青睐。

ERDAS IMAGINE是美国Leica公司开发的遥感图像处理系统。它以其先进的图像处理技术,友好、灵活的用户界面和操作方式,面向广阔应用领域的产品模块,服务于不同层次用户的模型开发工具以及高度的RS/GIS(遥感图像处理和地理信息系统)集成功能,为遥感及相关应用领域的用户提供了内容丰富而功能强大的图像处理工具,代表了遥感图像处理系统未来的发展趋势。

ERDAS IMAGINE是以模块化的方式提供给用户的,可使用户根据自己的应用要求、资金情况合理地选择不同功能模块及其不同组合,对系统进行剪裁,充分利用软硬件资源,并最大限度地满足用户的专业应用要求。因此越来越多的遥感机构和科技人员加入ERDAS IMAGINE的应用和开发行列中。目前,国内的REDAS软件用户也日益增多,但是对二次开发方法的介绍,中文方面的实在太少,这对国内用户进行该软件的二次开发造成了极大的不便。

2.二次开发的方法

一般软件的二次开发有如下几种基本形式:

(1)组件式二次开发,利用组件式软件提供的大量组件进行软件界面的制定及功能的实现;

(2)纯二次开发,在已有的软件平台上,利用软件本身提供的语言实现应用程序的开发,这种语言是专门用语该软件平台的一种开发语言,它有严格的数据类型定义、语法定义,编译后只能在该软件平台下运行;

(3)集成开发,也是以专业的软件平台为基础,以通用软件开发工具,尤其是可视化开发工具(如C++ Builder、Visual Basic等)为开发平台,进行二者的集成开发。

ERDAS软件的二次开发方法主要有:基于空间建模工具的二次开发方法、基于C Toolkit的二次开发方法和基于EML语言的客户化方法。

2.1基于空间建模工具的二次开发方法

空间建模工具是ERDAS下的一个模块,是一个面向目标的模型语言环境。由空间建模语言(SML)、模型生成器(Model Maker)提供了23类共200多个函数和操作算子,可以操作栅格数据、矢量数据、矩阵、表格及分级数据。用户只需要在窗口中绘出模型的流程图,指定流程的意义和所有参数、矩阵,即可完成模型的设计。

图形模型的形成过程,实质上也就是解决问题的过程,在借助模型生成器形成模型时,通常需要经过六个基本步骤:

(1)明确问题

要使用模型生成器来解决实际应用问题,必须明确问题的实质所在,不仅要明确需要问题是什么,要达到的目标是什么,而且要明确解决问题的具体途径和所需要的数据。

(2)放置对象图形

模型生成器中把各种输入、函数(操作)和输出定义成图形语言,不同的图形代表不同的操作对象和函数操作。需要根据上一步所确定的解决问题的目标和途径、以及数据支持情况,在模型生成器页面中放置意义不同的对象图形。

(3)连接各个对象

上一步所放置的对象图形目前还是相互独立的,是一个一个的空间模型要素,只有将所有对象图形有机地连接起来,才能组成一个完成的图形模型。当然,对象图形之间的连接是有前提的,如果两个图形无法连接,说明不符连接的条件。

(4)定义对象

每个对象图形都必须有确切的定义,应该从满足解决问题的需要出发确定对象图形的含义。只要双击对象图形就可以打开一个对话框,从中输入文件名或数据表及对应的函数参数设置。在模型可以运行之前,每一个对象图形都必须被定义。

(5)定义函数操作

代表函数操作的对象图形是空间图形模型的关键,模型中各个输入和输出对象都必须以函数及操作图形为纽带有机组织在一起。所以,定义函数操作的过程,实质上是确定图形模型如何处理数据、组合功能、完成目标的过程。

(6)运行模型

如果前面的定义符合空间模型语言规则,所建立的图形模型就可以运行了。当然,运行结果的正确与否,则取决于输入对象的确定和函数操作的定义,如果结果不理想的话,可以进一步调整对象图形及其定义,修改模型结构,直到满意为止。

在定义好模型后,可以将其转换为脚本形式,就可用下面介绍的EML语言为其编写界面,实现功能客户化。

2.2基于C Toolkit的二次开发方法

C Toolkit是为ERDAS IMAGINE用户提供的一个C函数库和相关文本,以方便用户修改软件的版本或者开发一个完整的应用模块,从而扩展软件功能满足其特定项目需要。它包括了有经验编程者期望的一套C语言应用编程接口API,是软件开发者在ERDAS IMAGINE软件环境中创建客户化应用的一个完整开发包。主要用于高水平用户的软件客户化与功能扩充。

在利用C Toolkit进行开发时必须明确是开发的哪一种程序:

GUI程序―程序使用图形用户界面让用户输入,这些程序开始后,会产生一个界面,并显示给用户并等待用户输入。这种程序为APPLICATION。

非GUI程序―程序将自动取得用户输入的命令参数同时自动开始和结束任务(比如在程序运行过程中程序不会等待用户的输入)。这个程序在执行时会将运行进度同步通知用户。这种程序称为JOB。

明确目标后就可以进行开发了。

2.3基于EML语言的客户化方法。

EML即ERDAS Macro Language是宏语言的一种,随软件本身自带的,可用于定义用户界面的结构和内容及提供某些基本过程编辑能力。它允许用户定制自己的界面,包括修改标准的ERDAS图形拥护界面和定制自己的应用程序界面。

此外,IMAGINE提供Preference Editor面向单个用户或全体用户,设置多数功能模块的系统缺省值。它提供了从用户界面到各个功能模块的设置选项。如:User Interface&Session选项中提供了数据路径(Default Data Directory)、图标面板(Icon Panel)等一些相关选项,用户可根据自己不同的喜好和工作目的来设置自己想要的图形用户界面及一些数据的路径设置。使用Preference Editor只是对系统提供选项的一些简单设置,要想更深层次的对界面及模块功能进行修改开发,这显然是不够的。

3.ERDAS的开发基础

ERDAS软件100%由C语言编写,并可用C++进行编译,另外为了方便用户开发满足自己工作需要的功能,ERDAS公司在推出软件同时还提供了专门的二次开发语言――EML语言和SML语言。

3.1C Developer’s Toolkit――ERDAS IMAGINE的程序员接口

该C语言开发工具包是软件开发者在ERDAS IMAGINE软件环境中创建客户化应用的一个完整开发包。它允许开发者建立新的C程序以便能够操作IMAGINE的数据结构(既可在内存上处理又可在硬盘上处理),用ERDAS EML宏语言为新的程序建立与IMAGINE相同风格的图形界面,而且可以借助于On-line Help产生器为新的应用功能写出上下文相关的在线帮助信息,另外,该开发包随机还提供许多相关的例子。IMAGINE C语言开发包包含了几百个开发者用于建立自己的应用的函数,而且这些函数ERDAS IMAGINE也同样使用,它可以组合成如下几类:EML图形用户接口(GUI)存取函数,它主要提供给编程者应用所有ERDAS宏语言(EML)API函数的一个接口:

(1)以EML文本作模板建立应用程序的用户图形界面;

(2)显示/不显示由EML文本定义的对话框;

(3)增加/消除由EML文本定义的GUI部分的回调函数;

(4)操作GUI上的对象(如get/set值等);

(5)IMAGINE对象操作函数:主要包括对IMAGINE 所有应用的注记层、感兴趣区、彩色库、分类、傅立叶变换、表管理、影像文件存取、栅格输入/输出、地图投影、纠正、栅格GIS 分析、矢量处理、统计、采样、变换等对象的操作函数;

(6)应用环境函数:主要包括变量分析、配置管理、错误注记与报告、磁带存取、参考数据库、安全系统等的设置与管理;

(7)底层文件I/O和系统存取函数:该部分主要包括建立,读取、定位、查找文件和目录的信息、平台无关格式、共享内存等函数;

(8)提取对象操作函数:该部分包括二叉树搜索、动态列表管理、链接列表、基于简单查询语言的条件选择、字符串操作、符号表等函数。

3.2EML语言

EML(ERDAS Macro Language)语言,是在ERDAS平台上开发用户定制的应用程序的理想的编辑语言,通过EML语言进行二次开发,能够扩展ERDAS的功能,实现程序的自动重复操作并使ERDAS与其他应用软件集成。此外,EML和C语言开发包的应用使得解决应用问题的客户化更加容易与简单。用户可以对IMAGINE本身应用的功能进行客户化的编辑,满足自己专业的独特需求。还可以将自己多年探索、研究的成果及工作流程以模型的形式表现出来。模型既可以单独运行也可以和界面结合像其它功能一样运行。更可以利用C Toolkit进行新型算法及功能的开发。

3.3空间建模工具(Spatial Modeler)

ERDAS IMAGINE空间建模工具(Spatial Modeler)是一个面向目标的模型语言环境,在这个环境中,你可以应用直观的图形语言在一个页面上绘制流程图,并定义图形分别代表输入数据、操作函数、运算规则和输出数据,一个空间模型就生成了。一个空间模型是由ERDAS IMAGINE空间模型组建构成的一组指令集,这些指令可以完成地理信息和图像处理的操作功能。

ERDAS IMAGINE空间建模工具由空间建模语言(SML)、模型生成器(Model Maker)和空间模型库(Model Library)组成,3个部分既互相关联,又相对独立。

4.三种方法的比较

ERDAS IMAGINE提供了功能强大的二次开发和客户化工具。Spatial Modeler和C Developers` Toolkit都是给用户开发新的应用程序的工具。其中Spatial Modeler的优点是图形编程这个概念,利用它可以按自己的需求进行很简单的图形应用编程,还可以将用户多年积累的经验运用该工具提供的模型表现出来。但缺点也是显然的,由于提供的图像处理函数过于复杂,使用者很难确定自己的需要,而且由于它对一些需要阈值的设定需要实时修改,在使用中比较麻烦;在这些方面C Developers Toolkit的客户化应用开发就比Spatial Modeler做的要好得多,它毕竟是集中了EML、SML、C Toolkit和DLL的工具集,在对软件进行客户化的时候能很好的满足用户的需求。只是它提供的一些图像处理算法比较落后,而且不允许用户将自己开发的新的数据结构加入其中,只能使用它自带的功能函数。EML语言的功能主要是用户对图形界面的客户化,该工具的优点是作为宏语言,可对软件界面进行实时的编辑无须重新启动软件,用户进行界面客户化的时候十分方便。缺点是需要用户对它的控件属性掌握的很好,不然在编辑调试时很容易出错。

5.结论

在研究ERDAS二次开发过程中遇到了不少问题,有一些已经初步解决了,但是仍然有尚待解决的问题,这里我就把这些问题列出来,希望以后可以解决:

(1)EML语言的语法不是很容易掌握,专门的中文教程很难找,编写完成后调试比较麻烦。

(2)C Developers Toolkit提供的一些图像处理算法比较落后,而且不允许用户将自己开发的新的数据结构加入其中,只能使用它自带的功能函数。

(3)空间建模工具提供的图像处理函数过于复杂,使用者很难确定自己的需要,而且由于它对一些需要阈值的设定需要实时修改,在使用中比较麻烦,没有太大的实用性。

(4)暂时还没有找到将空间模型转化为EML文件格式的方法,如果可以转化,那么空间建模工具将更加实用。

(5)如果能将批处理应用到各个模块中,再将模块添加到用户界面上,就可以更大程度的减轻图像处理人员的负担,大大提高软件的自动化程度。

参考文献:

[1]党安荣,王晓栋,陈晓峰等.ERDAS IMAGINE 遥感图像处理方法[M].北京:清华大学出版社,2003.

[2]刘光.地理信息系统二次开发教程――语言篇[M].北京:清华大学出版社,2003.

[3]刘俊杰,贾永红,柯美忠.ERDAS IMAGINE二次开发与客户化方法研究[J].地理空间信息,2003,12,01(4):22-25.

[4]ERDAS Developers` Toolkit White Paper.

[5]孙家柄等.遥感原理方法与应用[M].北京:测绘出版社,2000.

[6]Programming Reference guide---Erdas Macro Language.

[7]ERDAS IMAGINE 8.6Tour Guides. Atlanta,Georgia, 2003.

上一篇:混凝土膨胀剂的实验研究及施工注意事项 下一篇:义利冲突视阈中的军人“三种”人性假说及其利...