搜档网
当前位置:搜档网 › 基于IDL与ENVI二次开发的遥感系统开发方法

基于IDL与ENVI二次开发的遥感系统开发方法

基于IDL与ENVI二次开发的遥感系统开发方法
基于IDL与ENVI二次开发的遥感系统开发方法

收稿日期:2007-09-10;修回日期:2007-10-23。 基金项目:国家973计划项目(2007CB714406);中国科学院知识创新工程重要方

向项目(KZCX22Y W 2313);遥感科学国家重点实验室科研基金资助项目(K Q060006)。 作者简介:汤泉(1983-),男,山东济南人,硕士研究生,主要研究方向:全球变化遥感、遥感系统集成; 牛铮(1965-),男,北京人,研究员,博士生导师,主要研究方向:遥感成像机理、全球变化遥感。

文章编号:1001-9081(2008)S1-0270-03

基于IDL 与E NV I 二次开发的遥感系统开发方法

汤 泉

1,2

,牛 铮

1

(1.中国科学院遥感应用研究所遥感科学国家重点实验室,北京100101; 2.中国科学院研究生院,北京100039)

(tang_quan_1025@hot m ail .com )

摘 要:介绍了几种遥感系统的开发平台及开放方式,对比了它们各自的优缺点,然后采用I D L 和E NV I 二次开

发相结合的平台,并详细介绍了该平台,最终在此平台上编写应用程序,实现科研成果的系统集成。

关键词:E NV I ;ERDAS;G DAL;二次开发;遥感系统中图分类号:TP311.11 文献标志码:A

Approach for rem ote sen si n g system developm en t ba sed on

IDL and ENV I redevelopm en t

T ANG Quan

1,2

,N IU Zheng

1

(1.S tate Key L aboratory of Re m ote Sensing Science,Institute of Re m ote Sensing Applications,Chinese Acade m y of Sciences,B eijing 100101,China;

2.Graduate U niversity of Chinese Acade m y of Science,B eijing 100039,China )

Abstract:Several p latf or m s and app r oaches for re mote sensing app licati on syste m devel opment were intr oduced and compared .The combinati on of I D L and E NV I redevel opment technol ogy was chosen as the final s oluti on,using which the re mote sensing app licati on syste m was devel oped and the task of integrating scientific results was accomp lished .

Key words:E NV I ;ERDAS;G DAL;redevel opment;re mote sensing syste m

0 引言

由于不同科研人员编程实现遥感系统开发成果时,采用

的编程语言及平台的不统一,使成果的通用性和相互之间的耦合性受到了限制,所以亟待一个单一的开发平台和完整系统将这些成果统一集成起来。

相对GI S 系统开发来说,遥感系统的开发更为复杂。1)在GI S 领域有大量可直接调用的第三方组件用以缩短二次开发的时间,降低二次开发的难度,如国际上著名的ESR I 公司的MapObjects 、A rc Objects 以及Map I nfo 公司的MAPX 等,国内也有自主知识产权的软件和相应的二次开发组件,如Super M ap 、MAPGI S 等,利用这些商业软件提供的二次开发组件可以快速搭建一个基于单机或网络的GI S 应用系统,但在遥感领域这样的组件几乎没有;2)遥感系统涉及到很多影像数据格式的读取,除了W indows 系统下常用的b mp 、j pg 、tiff 等格式外,更多的要涉及到遥感卫星接收站提供的专业数据格式如i m g 、geotiff 、dat 、ra w 、p ix 、大气科学研究采用的net CDF 格式以及MOD I S 传感器使用的科学数据存储格式hdf 、hdf 2eos 等几十种格式的读取。不解决各类数据格式的读取问题,遥感系统开发就无从谈起。充分利用一些栅格影像读取库和现有不多的二次开发平台是以科研为目的遥感系统开发的较佳选择。

很多从事遥感行业的研究室都希望将自己的成果在以论文形式发表的同时也以系统和软件的形式得到实际的应用,但是系统平台的选择是一个首要的问题。关于这方面的文章较少,且多只是介绍某一种平台,缺乏横向的对比。本文介绍了几种主要的遥感系统的开发平台,对比了它们各自的优缺

点,最后详细地介绍了对笔者课题组来说最合适的平台。

1 几种开发平台和对比

1.1 G DAL

[1]

G DAL (Geos patial Data Abstracti on L ibrary )是一个免费的

图像读写库,它支持几乎所有在遥感领域中用到的栅格影像格式数据的读取(htt p://www .gdal .org/for mats_list .ht m l )。

G DAL 跨平台并开源,给用户提供很大的利用和扩展空间。G DAL 以动态和静态链接库的形式封装了读取遥感影像波段灰度数据和属性信息(如投影信息、像素坐标等)的类和函

数,并附带范例和说明文档。软件开发人员可以在W indows 程序设计语言中如VC ++、VB 中借助G DAL 进行遥感系统的开发。

G DAL 的功能巨大,很多比较成熟的软件都是在其基础上开发的,如现在互联网上比较热门的Google Earth,GI S 领域中使用最广的软件ESR I A rcGI S 9.2+,遥感处理软件ER Mapper,以及中国科学院遥感应用研究所国家遥感应用工程技术研究中心和北京国遥万维信息技术有限公司联合自主开发的I RS A 遥感图像处理软件系统等都无一例外地使用了G DAL 。但是G DAL 只是一个库,它没有自己的语言,所以使用G DAL 需要开发人员熟练掌握一种语言,如VC ++、VB 或Python 等。也正由于这一点,使用G DAL 开发的程序可以完全的打包和部署,没有任何限制。

类似于G DAL 的图像库还有JA I (Java Advanced I m aging )等[2]。JA I 是一个基于Java 平台的高级图像库,支持的文件格式相对有限。JA I 也是可以扩展的库,它已经封装了如分块、像素插值、仿射变换、边界扩展等图像操作算子,用户可以

第28卷2008年6月

 

计算机应用

Computer App licati ons

 

Vol .28June 2008

自己改写这些在遥感图像处理中的常用操作,也可以设计出

新的操作算子并注册来完成新的功能。目前,基于Java 平台的遥感软件很少,JA I 的使用也不是很广。1.2 ERDAS 二次开发

ERDAS 是遥感工作者常用的软件之一,它在提供了强大的遥感数据处理功能的同时,也提供了二次开发的平台以方便用户定制自己的程序界面和应用功能。ERDAS 采用E ML (ERDAS Macr o Language )语言设计G U I 图形界面,并在C Devel oper πs ToolKit (C Toolkit )中封装了CAP I 供程序员使用[3]

。ERDAS 的界面本身就是由E ML 语言以e m l 文件的形

工作来说是很有实用价值的。空间建模工具本身就是ERDAS 的一个模块。1.3 E NV I 二次开发

E NV I 是遥感领域中很受欢迎的软件,目前最新的版本是E NV I 4.3,它有一套属于自己的开发语言———I D L 语言和二次开发包。I D L 是一个完全面向对象的,支持G U I 开发的4G L 语言,E NV I 软件就是使用I D L 语言开发的。原则上可以说,只要用E NV I 可以实现的,用I D L 也同样可以实现,可见I D L 语言强大的潜力。E NV I 二次开发包对I D L 进行了进一步的封装,如I D L 读取影像的函数和支持的格式有限,但是用E NV I 二次开发的函数可以读写几乎所有格式的影像,并且可以分块读取。

运行和部署E NV I 二次开发的应用程序同样需要E NV I 软件的存在,而使用纯I D L 开发的应用程序则可以脱离E NV I 软件运行。1.4 对比和分析

以上讨论的开发方式和平台的选择,各自具有优缺点。G DAL 是底层的开发库,它可以不借助任何遥感软件平台而开发出独立的应用程序,但是开发周期较长,即使是读取影像,也没有遥感软件提供的二次开发包好。G DAL 本身不是一个语言,需要一个宿主语言才能发挥作用,这对编程人员又提出了高要求。

ERDAS 和E NV I 都是遥感影像处理软件,它们都提供了各自的二次开发平台,但是部署最终应用程序的同时需要原软件的存在,而在GI S 领域,部署时可以不安装任何GI S 软件。如利用A rcGI S 软件提供的A rcEngine 就可以开发出只需要运行时(Runti m e )就能运行的程序,将Runti m e 一起打包,部署时就不再需要安装A rcGI S,这也从另一个方面反映出目前遥感系统开发相对于GI S 系统开发的困难和不足。

表1是几种开发方式的对比。本文采用的平台是I D L 语言和E NV I 二次开发相结合的平台,因为I D L 本身是一个功能强大的语言,它比C 、C ++语言等更容易掌握,适合从事科研而不是程序开发的人员进行使用,加上E NV I 二次开发能

力的配合完全可以开发出功能强大的遥感系统。

表1 四种开发方式的对比

开发方式开发周期读取影像资金

成本

宿主语言

部署要求完全独立开发

很长

很难无需要无G DAL 长一般无需要无ERDAS 二次开发一般简单有需要安装ERDAS I D L +ENV I 一般

简单

不需要

安装E NV I

2 I D L 和ENV I 二次开发

是用到图像处理和可视化的地方,I D L 都是一个很好的帮手。在医学图像成像和处理分析上,I D L 已经成为一个不可或缺的辅助工具[9-10],Los A la mos Nati onal Lab 的生物专家利用

I D L 开发了MR I V ie wer,可以观察人大脑的核磁共振图;NAS A

一直是I D L 的忠实用户,I D L 被它用来作为航空器开发的模拟工具;NAS A 还利用I D L 编写系统来辅助监测海洋和大气,并在互联网上为科学家提供遥感数据共享的平台;宾西法尼亚大学地球科学系使用I D L 开发了World Topography V ie wer,它可以完成DE M 的地形构建、飞行观察等[11]。

I D L 可以独立开发,它也提供了ActiveX 控件将其功能以COM 动态链接库的形式被另一个宿主语言如VC ++、VB 等

调用[12],这又体现了I D L 灵活的拓展性。本系统的开发选择了前者而不使用任何的宿主语言。

2.2 I D L 提供的G U I 和人机交互

I D L 提供了I D LDE 和W idget 来定制用户界面,很适合RA I D (快速应用程序开发)。利用I D L 面向对象语言的特性,

界面可以模块化,以类的形式封装。本文设计了一个用于显示的公共模块,在所有需要显示影像的地方都可以反复使用(如影像纠正、分类等)。

I D L 的人机交互由Xmanager 处理

[7,12]

,每个用户操作都

会产生一个事件交给其处理。每个事件返回一个event 变量,它是一个结构体,包含了事件的全部信息,这些信息包括事件的产生者、产生时鼠标的状态和位置、键盘的状态等。表2是一个对照表,从该表中可以看出,用传统W indows 编程语言能完成的工作用I D L 同样可以完成。

2.3 I D L 的对象图形系统

I D L 提供两种图形系统:直接图形系统和对象图形系统。

其中对象图形系统采用了面向对象的编程技术,它有一组内置的类组成。利用这些类可以生成高质量、交互式、可重用的二维和三维图景。它采用先进的图形生成技术,包括硬件图形加速以及OpenG L 技术[12]。I D L 的对象图形系统可以出色地完成遥感影像的显示。

组成I D L 对象图形系统的类大约30多个,有5种类型:

1726月汤泉等:基于I D L 与ENV I 二次开发的遥感系统开发方法

容器、原子、目标对象、属性和符合体。命名的格式为

I D Lgrxxxxx 。开发最常用的是容器和原子。图1为I D L 对象

图形系统的等级图。

表2 I D L 语言和W indows 事件对照表

I D L 语言

对应W indows 编程

的事件或类(VC ++)

W idget_draw 部件CV ie w 基类(MFC )Event .type =1MOUSE MOVE 事件Event .release =1MOUSE_DOWN 事件Event .p ress =1

MOUSE_UP 事件Event .left =1and Event .release =1LButt onDown 事件Event .right =1and Event .release =1RButt onDown 事件Event .

left =1and Event .p ress =1LButt onUp 事件Event .right =1and Event .p ress =1

RButt onUp 事件

图1 I D L 对象图形系统等级

图1中Scene 是场景的容器,V ie w 是模型的容器,Model 是原子的容器。利用原子组成模型,构建场景,渲染成视图最后显示。典型的显示容器如I D Lgr W indow,模型容器如

I D Lgr V ie w,原子容器如

I D Lgr M odel;原子如

I D Lgr Axis 、

I D LgrI m age 、I D Lgr L ight 、I D LgrPolygon 、I D LgrText 、I D LgrPolyline 、I D LgrPl ot,命名很好地反映了每个图形对象的功能。上层的

容器或原子可以加到下层的容器中,最终构成一级一级的显示场景等级图。图2是利用I D L 对象图形系统渲染的TI N

(不规则三角形网)场景,数据源为一个文本文件,里面记录了33个三角形的顶点和高程,实现的代码简练易懂。

o W indow =obj_ne w (′I D Lgr W indow ′)//构建对象图形系统

ovie w =obj_ne w (′I D Lgr V iew ′)//构建模型容器o Model =obj_ne w (′I D Lgr M odel ′)//构建原子容器

o W indow ->add,o Model

o Model ->add,oV ie w

result =read_ascii (′c:\data .txt ′

)//data 是三角网数据文件

f or i =0L,98,3do begin //构建33个三角形

otrigon =obj_ne w (′I D lgr polygon ′,$

 data =result .field1[3,i:i +2],col or =[255,255,255])//构建原子

ovie w ->add,otrigon //原子加入容器中,准备渲染

end

 o W indow ->D ra w

//渲染场景

任何一个遥感影像的分波段或分波谱的灰度数据都可以构建成一个I D LgrI m age 原子。

2.4 E NV I 二次开发

E NV I 是使用I D L 开发出来的软件,它对I D L 进行了很大

程度的封装,一个通用的函数就可以完成读取影像的任务,还支持分块读取和处理。

E NV I 二次开发的方式有两种,一种简单的方法是修改系

统菜单。和ERDAS 一样,E NV I 软件的系统菜单也是由文本文件(men 文件)来描述的,在“%E NV I Root%\menu \dis p lay .

men ”下,它是一个文本文件,用户可以根据需要进行修改和

定制。一个典型的E NV I 系统菜单描述文件有如下内容:

0{File}

1{Create Ne w Vect or Layer ?}{ne w vect or layer}{dis p_event}1{Save A s D is p lay Gr oup ?}{out put dis p lay gr oup}{dis p_event}{separat or}

1{Rest ore D is p lay Gr oup ?}{rest ore dis p lay gr oup}{dis p_event}1{Save I m age A s}{separat or}

 2{Postscri p t File ?}{out put postscri p t}{dis p_event} 2{I m age File ?}{out put i m age file}{dis p_event}

每一行的菜单有如下的结构:

菜单等级{按钮名称}[{用户名}{处理事件名}][{separat or}]

常用的做法是用I D L 开发小的应用程序模块,然后修改men 文件以扩展系统菜单加以调用,扩展系统菜单可以使E NV I 软件具有自己的特色。使用这种方法还可以汉化E NV I 软件的英文界面。为了节约程序员的工作量,E NV I 提供了一些小部件以完成和用户交互[13],它们非常类似于W indows

程序设计中的公共对话框。开发人员可以自己调用这些小部件,既方便快捷,又可以使程序保持界面风格和E NV I 软件上的一致性。

第二种开发方式,也是本文采用的方式,是用I D L 开发完

整的程序,不需要运行E NV I 软件。

图2 山地地形模拟场景

影像显示、分类、几何精纠正和其他功能都会频繁使用到

显示模块,通过以类的形式进行封装,并在纠正模块中对原有的类进行继承和扩展。程序保持通用性和易扩展性的原则。图3是系统主界面截图。

图3 遥感技术应用系统v1.0

3 结语

采用I D L 语言并借助E NV I 二次开发,可以开发出一个

扩展性强、功能完善的遥感系统。现在这个系统正在进一步地得到扩充,越来越多的已有科研成果正被课题组的科研人员陆续集成进来,正在探索研究的科研人员也在将他们的进展和成果逐步地往系统扩充。I D L 语言和E NV I 二次开发的强大能力使得科研人员能从枯燥的编程中解脱出来,将更多的精力放在实际的科研当中。

(下转第276页) 

01B,物品序列号为:

54565657879454454213265498791245454545454

该物品具有移动性,起点位置码为0434,目的地位置码为1458。另提供起点和目的地点信息传送服务。

3 结语

本文提出一种多信息分段电子编码方法及其系统,与现有编码系统相比,该编码方法信息相关度高,行业特点突出,可根据需求定义编码信息定制信息服务,系统框架统一,可使用统一的编码和解码软件,易于行业应用实施和行业标准制定的推进。编码方法和系统特点总结如下:

1)面向应用设计,信息相关度高。同一行业具有不同信

息需求的物品或在业务流程中的不同信息服务要求均可使用该套编码,编码结构可配置,信息服务可定制;而且编码长度可变,节省存储空间。

2)注重兼容。

在分段定义体制下,定义需兼容信息的相

应描述分段,可实现编码兼容,完成编码之间的转换;编码和解码过程较程式化,且编码形式固定,可使用统一的编码和解码软件,打破行业壁垒。

3)用版本号控制编码系统的扩展,灵活方便。版本号段

段首4位,可供24=16个行业组建自己的分段编码规则体系;根据式(1)版本号段值4位,即在每个行业里,可有24=

16个分段定义表,系统最多可容纳(216

-1)个信息分段。如

果某一现存版本不够用,可按照1.3.1节说明升级编码规则,且这一改动不影响物品的现有编码和解码过程。

4)效率问题,在解码过程中增加分段分割步骤,增加了

编码解析时间,但现今应用中高速的处理器可降低此影响,而且针对特定离线应用,本编码方案的信息优势可得到很好体现。

目前多信息分段电子编码方法处于研究阶段,并已初步完成实验系统,申请了相关专利和软件著作权,软件系统的主要操作界面如图4。

图4 软件主要模块操作

参考文献:

[1] Tag Data Standard Work Gr oup.EPCgl obal tag data standards ver 2

si on 1.3,ratified s pecificati on,EPCgl obal white paper[S].2006.[2] BROCK D L.The Electr onic Pr oduct Code (EPC )a na m ing sche me

for physical objects,aut o 2I D center white paper[S].2001.[3] Ubiquit ous I D Center .U I D Center:The intr oducti on t o UCode [S/

OL ].[2007-12-09].htt p://www .uidcenter .org/index 2en .ht 2m l .

[4] BROCK D L.The virtual electr onic p r oduct code [S].2002.[5] BROCK D L.M I T 2AUT O I D 2WH 2008,The compact electr onic p r od 2

uct Code 2A 642bit rep resentati on (T M )of the electr onic p r oduct code[S].2001.

[6] ENGELS D.M I T 2S UT O I D 2WH 2010,EPC 2256:The 2562bit elec 2

tr onic p r oduct code rep resentati on[S].2003.

[7] BRAY T,P AOL I J,SPERBERG 2MCQUEEN C M ,et al .Extensi 2

ble Markup Language (X ML )1.0(Fourth Editi on )[S/OL ].(2006-08-16)[2007-11-25].htt p://www https://www.sodocs.net/doc/bf8427225.html,/T R /2006/REC 2x m l 220060816/.

[8] F LOERKE ME I ER,ANARK AT D,OSI N SKI T,HARR I S ON M.

P ML core s pecificati on 1.0[S].2003.

[9] N I ST I EEE 1451,The intr oducti on t o TEDS [S/OL ].[2007-12

-09].htt p://ieee1451.nist .gov/.

[10] RAY MOND B.Stillmore than one way t o πp lug 2and p lay π,sepe Jr .

contr ol engineering [Z].2006.

[11] BROCK D L.The compact electr onic p r oduct code 2A 962bit rep re 2

sentati on of the electr onic p r oduct code [S].2001.

[12] ENGELS D.The U se of the Electr onic Pr oduct Code (T M )[S ].

2003.(上接第272页)

参考文献:

[1] Geos patial Data Abstracti on L ibrary[EB /OL ].[2007-03-20].ht 2

t p://www .gdal .org .

[2] JA I[E B /OL ].[2007-03-21].htt p://java .sun .com /p r oducts/

java 2media /jai/RE ADME 21_1_1.ht m l

[3] 刘俊杰,贾永红,柯美忠.Erdas I m agine 二次开发与客户化方法

研究[J ].地理空间信息,2003,1(4):237.

[4] ERDAS Macr o Language Reference Manual[Z].2005.[5] I M AGI N E Devel opers πToolkitW hite Paper[S].2006.

[6] 党安荣,王晓栋,陈晓峰,等.ERDAS I M AGI N E 遥感图像处理方

法[M ].北京:清华大学出版社,2002.

[7] 阎殿武.I D L 可视化入门与提高[M ].北京:机械工业出版社,

2003:40-41.

[8] 何全军,程彬,许惠平.基于I D L 的地形三维可视化实现[J ].世

界地质,2004,23(1):85-89.

[9] 聂斌,胡东梅,张琳,等.I D L 及其在医学图像处理中的应用[J ].

中国中西医结合影像学杂志,2005,6(2):445.

[10] 赵志强,郑小林,王星,等.基于I D L 的医学数字影像处理技术

初探[J ].中国医学影像技术,2005,21(11):1755.

[11] 航天星图[E B /OL ].[2007-03-23].htt p://www .i m agetekin 2

f o .com /index_idl .as p?str =I D L_who .

[12] I D L 中高级进阶———I D L 高级培训教材[M ].北京:航天星图

(北京)有限公司,2000.

[13] ENV I 二次开发指南[M ].北京:航天星图(北京)有限公司,

2006.

相关主题