作者:朱金灿
来源:http://blog.csdn.net/clever101
前言:前天我听了一个ERDAS Imagine销售人员对ERDAS Imagine新版本的介绍,得知ERDAS也准备做软件增值服务。由此引发了我对几大遥感软件的二次开发方式的了解和一些思考。
目前GIS软件的二次开发技术发展得如火如荼,从提供传统的C语言API接口到组件、插件、构件的开发方式,从传统的C/S系统到SOA架构,流行的软件开发技术在GIS软件的二次开发基本上都可以看到身影。反观遥感软件的二次开发,我不由得感叹:和流行的开发方式距离颇大!下面我简单介绍一下ERDAS、PCI和ENVI三大遥感软件的二次开发方式及由此我得出的结论。
一.ERDAS的二次开发简介
ERDAS的二次开发方式采用提供一系列的客户化工具,具体是基于SPATIAL MODELER(空间建模工具)和C Developer’s Toolkit(简称C Toolkit)的EML语言客户化Erdas Image图形用户界面。
空间建模工具是ERDAS下的一个模块,是一个面向目标的模型语言环境。由空间建模语言(SML)、模型生成器(Model Maker)提供了23类共200多个函数和操作算子,可以操作栅格数据、矢量数据、矩阵、表格及分级数据。用户只需要在窗口中绘出模型的流程图,指定流程的意义和所有参数、矩阵,即可完成模型的设计。
在定义好模型后,可以将其转换为脚本形式,就可用下面介绍的EML语言为其编写界面,实现功能客户化。
C Toolkit是为ERDAS IMAGINE用户提供的一个C函数库和相关文本,以方便用户修改软件的版本或者开发一个完整的应用模块,从而扩展软件功能满足其特定项目需要。它包括了有经验编程者期望的一套C语言应用编程接口API,是软件开发者在ERDAS IMAGINE软件环境中创建客户化应用的一个完整开发包,主要用于高水平的软件客户化与功能库扩充。
上面的文件是引自论文《ERDAS Imageine二次开发与客户化方法》,在这里你可以看到ERDAS的二次开发的一些劣势:进行它的二次开发,你需要学习它的空间建模语言SML和宏语言EML,增加了二次开发难度;其次不支持流行语言的开发,如Java、C#;三是据我所知运行二次开发程序需要同时运行Erdas imagine。
另外我在网上也没搜到基于Erdas Imageine的二次开发的应用系统,只搜到一些相关论文。
二.PCI的二次开发简介
关于Erdas Imageine二次开发的资料本来就少,没想到PCI的二次开发的资料网上更少。
实际上PCI之前的二次开发方式和Erdas Imageine的二次开发方式颇为类似,提供一个C/C++ SDK来提供底层接口,使用自身的EASI脚本语言来让用户可以方便的创造、编辑和运行用户定制的所有SPANS和EASI/PACE所提供功能的图形程序。
在最新的PCI的二次开发包ProSDK中我们见到了一些新东西:ProSDK为用户提供了用C++、Java及Python等编程语言对Geomatica软件组件以应用程序的方式进行应用或扩展的能力。ProSDK V1.2进一步提供了拥有更多功能的灵活开发环境。ProSDK V 1.2发布了Windows XP和Linux(Red Hat企业工作站5和SUSE Linux 10.1),并兼容 Microsoft Visual Studio .NET/C++ 2003、gcc3.3、Python 2.4,以及Java 1.5。Python和Java开始支持了。
但是和Erdas Imageine类似,我同样在网上没有找到基于ProSDK的二次开发的应用系统
三.ENVI的二次开发
ENVI是一个另类的遥感平台,因为它不是由传统的开发语言如C/C++开发的,而是由它的二次开发语言IDL开发的。以至于我的一个同事在一次会上对我们说:“我们要纠正这样一个认识,IDL不是ENVI的IDL,IDL和ENVI是不同的两样东西!”这个有点像我们不能把VC和C++对等起来一样。
但是IDL并不等同于ERDAS Imageine的EML和PCI的EASI脚本语言。有人在网上列出了IDL的种种优点:
IDL语言的英文全称是Interactive Data Language。
简单的说,IDL是VC、VB、JAVA、FORTRAN、MATLAB、OPENGL等语言的集成。
1、IDL =VC
从菜单的定制、消息的传递、类的定义与继承等方面来说,IDL如同VC一样具备了强大的功能。
2、IDL=VB
从可视化界面的设计、语言的通俗易懂、编程的入门等方面来说,IDL如同VB一样,让初学者心旷神怡。
3、IDL=JAVA
从跨平台的移植来说,IDL的功能与JAVA一样强大。应用IDL开发的产品,只要微不足道的工作就可以在各平台之间任逍遥。
4、IDL=FORTRAN
FORTRAN语言是科学计算领域一门最普遍的语言,是科学家最为广泛应用的语言。从函数、子程序的调用、数据传递、语言风格、语言组织等来说,IDL语言与FORTRAN则是如此的相像,见到了IDL,你就会想起FORTRAN语言。
5、IDL=MATLAB
IDL语言象MATLAB一样,提供了大量封装和参数化了的数学函数,为科学计算插上了强大的翅膀。
6、IDL=OPENGL
IDL的提供了丰富的二维、三维图形图像类,其功能可与OPENGL媲美,而且其封装好的图形函数类的编程功能远超过OPENGL函数库。
另外IDL的一个突出优点是能以ActiveX控件和COM组件的方式嵌入到C++、C#等常规语言开发的系统。
目前应用IDL语言,已经开发出了ENVI、IMAGIS、RiverTools、医学等成熟产品。
由于IDL的优点,使得ENVI二次开发变得颇为流行,网上的资料也颇为丰富。但是我们也应看到,尽管IDL具备许多优点,毕竟也不能将其用于大型应用系统的开发。
四.结论
即使ENVI的基于IDL二次开发在业内小有名气,相对GIS软件的大众,小众的RS软件似乎不太重视二次开发,觉得用户只需要使用软件就行。但是我们应该看到3S行业的一个发展趋势是行业软件,就是3S软件必须允许用户定制系统,必须满足用户工作流程的需要。这就是俗语所说的:过去用户需要的是毛坯房,现在用户需要的精装房。通过了解业界的几大厂商的大动作:Leica收购ERDAS,ESRI倡导的ENVI/IDL与ArcGIS为遥感和GIS的一体化集成提供了一个最佳的解决方案,超图软件正式成为PCI以影像为核心的解决方案产品ProSDK & ProPack在中国地区的代理商,我们可以清晰看到:GIS和RS结合的趋势越来越明显,3S软件商正从单一的提供软件到为用户提供整套解决方案和软件服务。也因为如此,遥感软件惟有学习GIS软件,采用更加灵活的架构,支持主流的开发方式,才能满足用户的个性化需要。
参考文献:
<1> 《ERDAS Imageine二次开发与客户化方法》,作者刘俊杰,贾永红,柯美忠。
<2> PCI Geomatics ProSDK (V 1.2) 技术说明书。
<3> 《IDL语言简介》,(一堂之见/陈树铭)。