(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf_第1页
(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf_第2页
(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf_第3页
(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf_第4页
(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(地图学与地理信息系统专业论文)net环境下arcgis+engine的开发技术研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

捅要 随着社会经济和计算机技术的发展,g i s 技术得到了广泛的应用。结合g i s 软件和主流软件开发平台进行集成开发成为g i s 应用中的一项重要技术。 本文选用n e t 作为软件开发平台,结合a r c g i se n g i n e 研究n e t 环境下 a r c g i se n g i n e 的开发技术。n e t 平台代表了当今主流的开发技术,a r c g i s e n g i n e 是a r c g i s9 中推出的新产品,它是基于a r c o b j e c t s 的一套开发组件,用 它开发的软件是可以脱离a r c g i s 环境独立运行的。这两者的结合可以更好的体 现集成二次开发的优势。 本文首先介绍了g i s 软件二次开发的背景和国内外的发展现状,对 a r c o b j e c t s 组件进行了讨论。然后解释了a r c o b j e c t s 的类的种类、接口之间的继 承和调用,说明了如何理解对象模型图,并通过对象模型图来理解a r c o b j c c t s 对象之间的关系以及类和接口的使用。随后又剖析了a r c g i se n g i n e 的类库及其 功能以及类库和文件之间的对应关系。描述了一个简单的c o m 组件的开发过 程,以此来进一步理解c o m 组件技术。重点研究了在n e t 环境下如何使用c o m 组件,介绍了i n t e r o p 程序集的生成方法并进一步剖析了i n t e r o p 程序集的工作原 理。最后,描述了主要互操作集( p 认) 的生成过程。本文所涉及的方面及研究 的方法和技术对于n e t 环境下a r c g i se n g i n e 的开发有着一定的借鉴意义。 关键词:a r c g i se n g i n 6 ;a r c o b j e c t s ;c o m 组件;i n t e r o p 程序集;主要互操 作集( p ia ) a b s t r a c t w i t ht h ed e v e l o p m e n to fs o c i o e c o n o m i ca n dc o m p u t e rt e c h n o l o g y ,g i s t e c h n o l o g yh a sb e e nw i d e l yu s e d g i ss o f t w a r ea n dm a i n s t r e a ms o f t w a r ed e v e l o p m e n t p l a t f o r mf o ri n t e g r a t e dd e v e l o p m e n th a sb e c a m ea ni m p o r t a n tt e c h n o l o g yo fg i s a p p l i c a t i o n t h i sp a p e rs e l e c t e d n e ta sas o f t w a r ed e v e l o p m e n tp l a t f o i t l l ,w i t ha r c g i s e n g i n ei tr e s e a r c h e dt h ed e v e l o p m e n tt e c h n o l o g yo fa r c g i se n g i n eu n d e r n e t e n v i r o n m e n t t o d a y ,n e tp l a t f o r mr e p r e s e n t st h em a i n s t r e a mo fd e v e l o p m e n t m c h n o l o g y ,a r c g i se n g i n ei san e wp r o d u c ti na r c g i s9 ,i ti sas e to fd e v e l o p m e n t c o m p o n e n t sb a s e do nt h ea r c o b j e c t s ,t h es o f t w a r eo fd e v e l o p m e n tb yu s i n gi tc a nb e r u ni n d e p e n d e n t l yf r o mt h ea r c g i se n v i r o n m e n t t h ec o m b i n a t i o no ft h et w oc a n b e t t e rr e f l e c tt h ea d v a n t a g e so ft h ei n t e g r a t e da n ds e c o n d a r yd e v e l o p m e n t f i r s t l y t h i sp a p e ri n t r o d u c e dt h eb a c k g r o u n do ft h es e c o n d a r yd e v e l o p m e n to f g i ss o f t w a r ea n dt h es t a t u sq u oo fd e v e l o p m e n ta th o m ea n da b r o a d a r c o b j e c t s c o m p o n e n t sw e r ed i s c u s s e d t h e ni te x p l a i n e dt h et y p e so fa r c o b j e c t s sc l a s s t h e i n h e r i t a n c ea n dc a l lo ft h ei n t e r f a c e ,e x p l a i n e dh o wt ou n d e r s t a n do b i e c tm o d e l d i a g r a ma n dt h r o u g l lo b i e c tm o d e ld i a g r a mt ou n d e r s t a n dt h er e l a t i o n s h i pa m o n g t h ea r c o b i e c t so b i e c t sa n dt h eu s eo fc l a s sa n di n t e r f a c e a n dt h e ni ta n a l y z e dt h e c l a s sl i b r a r yo fa r c g i s e n g i n e a n dt h ef u n c t i o n so fc l a s s l i b r a r y a n dt h e c o r r e s p o n d i n gr e l a t i o n s h i pb e t w e e nc l a s sl i b r a r ya n dd o c u m e n t a t i o n d e s c r i b e dt h e d e v e l o p m e n tp r o c e s so fas i m p l ec o mc o m p o n e n t i no r d e rt of u r t h e ru n d e r s t a n d c o mc o m p o n e n tt e c h n o l o g y f o c u s e do nt h es t u d yo fh o wt ou s ec o mc o m p o n e n t s u n d e r n e te n v i r o n m e n t ,i ti n t r o d u c e dt h em e t h o do fh o wt og e ti n t e r o pa s s e m b l y a n df u r t h e ra n a l y z e dt h ep r i n c i p l eo fi n t e r o pa s s e m b l y f i n a l l y ,t h i sp a p e rd e s c r i b e d t h eg e n e r a t i o np r o c e s so fp r i m a r yi n t e r o pa s s e m b l y ( p i a ) t h es t u d i e so ft h i sp a p e r a n dt h em e t h o d sa n dt e c h n i q u e si n v o l v e di n t h i sp a p e rh a v eac e r t a i nr e f e r e n c ef o r a r c g i se n g i n ed e v e l o p m e n tu n d e r n e ,re n v i r o n m e n t k e yw o r d s :a r c g i se n g i n e ;a r c o b j e c t s ;c o mc o m p o n e n t ;i n t e r o pa s s e m b l y ;p r i m a r y i n t e r o pa s s e m b l y ( p i a ) 学位论文独创性声明 本人承诺:所呈交的学位论文是本人在导师指导下所取得的研究成果。论文 中除特别加以标注和致谢的地方外,不包含他人和其他机构已经撰写或发表过的 研究成果,其他同志的研究成果对本人的启示和所提供的帮助,均已在论文中做 了明确的声明并表示谢意。 学位论文作者签名:;良孕 日 期:口彬岁;7 学位论文版权的使用授权书 本学位论文作者完全了解辽宁师范大学有关保留、使用学位论文的规定,及 学校有权保留并向国家有关部门或机构送交复印件或磁盘,允许论文被查阅和借 阅。本文授权辽宁师范大学,可以将学位论文的全部或部分内容编入有关数据库 并进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。保密 的学位论文在解密后使用本授权书。 学位论文作者签名:多良孚 指导教师签名: 易冬 日 期:沙莎,弓) n e t 环境下a r c g i se n g i n e 的开发技术研究 第一章绪论 1 1 论文研究的背景及意义 a r c g i s 是e s r i 公司( e n v i r o n m e n ts y s t e mr e s e a r c hi n s t i t u t e ,i n c 美国环境系 统研究所、) 推出的大型地理信息系统软件。该软件经过u n i x 向w i n d o w s 操作系 统的迁移,a r c v i e w ,a r c h n f o ,p ca r c l n f o 等几代产品的更迭,结合最新的 计算机图形学、d b m s 、网络等技术,成为当今g i s 业界的领先者。a r c g i s9 2 是目前的最新版本。 a r c g i s9 主要在两个方面进行了显著的加强和改进,第一个方面是增加了 一个面向开发的新产品,即a r c g i se n g i n e 。a r c g i se n g i n e 是面向开发人员的, 用于搭建及配置a r c g i s 解决方案的产品。通过a r c g i se n g i n e ,可以不需要在 同一机器上安装a r c g i s 桌面应用。 a r c g i s9 显著加强和改进的第二个方面是a r c g i s9 体系结构的改变,即推 出了a r c g i ss e r v e r 。在a r c g i s9 之前,高级的g i s 功能仅仅是在桌面端提供。 在a r c g i s9 中,e s r i 重新构造了a r c g i s 平台的核心,使之适宜运行在服务器 端,运行在主流服务器平台上( w i n d o w s ,u n i x 和l i n u x ) ,支持通用开发环 境。在大型的企业网中,用户在客户端就可拥有在桌面系统中的强大功能。 m i c r o s o f t n e t 是一个平台,它为开发人员提供了新的开发平台( n e t f r a m e w o r k ) ,新的开发语言( c 挣) ,新的开发工具( v i s u a ls t u d i o n e t ) 。 n e tf r a m e w o r k 是在m i c r o s o f t n e t 平台上进行开发的基础,是创建、部 署和运行w e b 服务及其他应用程序的一个环境。n e tf r a m e w o r k 的关键作用在 于,它提供了一个跨编程语言的统一编程环境,开发人员可以随意使用最适合 解决身边问题的编程语言创建应用程序,加快开发速度。 c 聋语言是微软公司针对n e t 平台推出的一种新型编程语言,作为n e t 平 台的首选语言,不但继承了c + + ,j a v a 等面向对象的强大功能特性,同时还继承 了v b ,d e l p h i 等编程语言的可视化快速开发功能。雠减少了c + + 的一些特性, 不再有宏、模板和多重继承。此外,c 拱增加了严格的类型安全、版本控制、垃 圾回收等新功能。c 挣是开发n e tf r a m e w o r k 应用程序的最好语言。 同a r c o b j e c t s 相比,a r c g i se n g i n e 是对a r c o b j e c t s 的提炼和简化,脱离了 a r c g i s 桌面软件的a r c g i se n g i n e 结构更加合理,其提供的功能完全能够满足 各种层次的开发需要,而且保持了开放性和扩展性。 目前市场上流行的g i s 软件能满足一般的需求,面特定领域的需求则需要 n e t 环境下a r c g i se n g i n e 的开发技术研究 有针对性的进行g i s 二次开发。a r c g i se n g i n e 可用来建立广泛的g i s 应用,并 在任何应用中嵌入g i s 功能。结合g i s 工具软件与当今可视化开发语言的集成 二次开发方式是当前g i s 应用开发的主流。其优点是既可以充分利用g i s 工具 软件强大的数据管理和空间分析功能,又可以利用其它可视化开发语言具有的 高效、方便等优点,集二者之所长,不仅能大大提高应用系统的开发效率,而 且使用可视化软件开发工具开发出来的应用程序具有更好的视觉效果,更强大 的数据库功能,更可靠的性能,同时又便于维护和移植。因此,对于n e t 环境 下a r c g i se n g i n e 开发技术的研究是十分必要的。 1 2 国内外相关研究状况 地理信息系统的二次开发工具很多,国外主要有e s r i 公司的m a p o b j e c t s 、 a r c o b j e c t s 、a r c l m s 和a r c g i se n g i n e ,i n t e r g r a p h 公司的g e o m e d i ao b e j e c t ,以 及m a p l n f o 公司的m a p x 和m a p x t r e m e 等,国内主要有武汉大学的g e o m a p , 北京超图公司的s u p e r m a po b j e c t s 等。本节重点介绍a r c g i s 所提供的二次开发 工具。 e s r i 于1 9 9 7 年推出m a p o b j e c t s 之后,开发人员便可利用m a p o b j e c t s 进行 集成二次开发。在标准w i n d o w s 编程环境下,利用m o ,开发人员可以在自己 的应用程序中添加制图和g i s 功能,能够与其他图形、多媒体、数据库开发技 术组合开发出不依赖于a r c g i s 平台的完全独立的综合性应用程序。 在a r c g i s8 中虽然基于a r c o b j e c t s 组件可以二次开发许多应用程序,但不 能脱离a r c m a p 或a r c c a t l o g 等应用环境。到a r c g i s8 3 为止,a r c o b j e c t s 还不 是一个独立的应用产品,而是捆绑在用户购买的a r c g i sd e s k t o p 产品中的软件 开发包。也就是说,只要用户购买了a r c g i sd e s k t o p 的任何一个产品,都将拥 有功能强大的a r c o b j e c t s 组件集,利用a r c o b j e c t s 提供的组件对象可进行应用 开发。 a r c o b j e c t s ,是a r c g i s 产品的核心,它提供了实现a r c g i s 的全部功能,是 开发a r c g i s 应用程序的基础。丌发人员可以利用a r c o b j e c t s 框架进行编程,以 提高a r c g i s 的性能或扩展其应用。 a r c o b j e c t s 是用c + + 语言编写的、建立在微软的c o m 技术基础之上的独立 于平台的一套软件组件。a r c o b j e c t s 包括各种各样的可编程组件,从细粒度的对 象,如i m a p 、i a c t i v e v i e w 等基于标准c o m 的界面接口,到粗粒度的对象,如 m a p c o n t r o l 、g e o p r o c e s s o r 等基于c o m 和n e t 的容器级的控件。这些组件集成 2 n e t 环境下a r c g i se n g i n e 的开发技术研究 了开发人员所需的全部g i s 功能。因此,可以说a r c o b j e c t s 包含了大量的可编 程组件,为开发者集成了全面的g i s 功能。 从a r c g i s9 开始,e s r i 推出了a r c g i se n g i n e ,a r c g i se n g i n e 基于 a r c o b j e c t s 构建,对a r c o b j e c t s 进行了重新封装,并提供跨平台的组件技术框架, 该产品使得a r c o b j e c t s 可以作为独立的产品进行发布和使用。 目前主要有两个网站提供了a r c g i s9 开发信息,a r c g i s 开发在线 h t t p :a r c g i s d e v e l o p e r o n l i n e e s r i c o m ,提供了最新的a r c g i s9 开发信息,包括示 例代码,技术文档,对象模型图和完整的对象库参考,e s r l 支持中心 h t t p :s u p p o r t e s r i t o m ,提供了软件信息、技术文档、范例、用户论坛以及所有 a r c g i s 产品的知识库,尤其是在辅助a r c g i s 应用软件开发方面涉及较多。 1 3 论文主要研究内容 本文主要讨论n e t 环境下a r c g i se n g i n e 开发的技术,论文研究的内容有 以下四个方面: ( 1 ) 介绍了a r c o b j e c t s 组件的类、对象和接口,以及如何读懂对象模型图。 ( 2 ) 研究了a r c g i se n g i n e 的类库及其功能,并介绍了类库和类库文件的 对应关系及a r c g i se n g i n e n e t 的命名空间和类。 ( 3 ) 简单描述了一个c o m 组件的开发过程,可以进一步理解c o m 技术。 ( 4 ) 本文重点研究了在n e t 环境中如何使用c o m 组件,剖析了i n t e r o p 程序集的工作原理,并进一步研究了如何通过c o m 类型库来生成主要互操作集 ( p i a ) 。 3 n e t 环境下a r c g i se n g i n e 的开发技术研究 第二章a r c o b j e c t s 组件 2 1a r c o b j e c t s 的类和接口 a r c o b j e c t s 组件库的每一个组件中定义有不同的类,类中实现了不同接口, 接口中包含不同的属性和方法。类之间有类型继承( t y p ei n h e r i t a n c e ) 关系,接口 之间有互相调用( q u e r yi n t e r f a c e ) 和相互继承( i n t e r f a c ei n h e r i t a n c e ) 关系。 2 1 1 类的种类 a r c o b j e c t s 中的类有三种:a b s t r a c tc l a s s e s ,c o c l a s s e s 和c l a s s e s 。c o c l a s s e s 可在开发环境中直接定义并实例化;c l a s s e s 不能直接实例化,只能从其他类接 口的属性或其他方法的输出参数中获得;而a b s t r a c tc l a s s e s 为抽象类,不能实 例化,只是用来派生其他类。 2 1 2 类的类型继承 i 目e m e n t i b o u n d s p r o p e r t i e s e s d s y s t e m 。i c i o n e i e l e m e n t p r o p e r 6 e s 3o i e l er n e n t p r o p e r t i e s 2 一 i e l e m e r , t p r o p e 撕e , so - l p e r s l s to i p e r s i s t s t t e a m 莎 e s r i g e o m e t r y l p e l e m i 曾n t 1e 嚏 。n 增扫扣j 峙o m 哦,y hl o o s e 毒e o d 嘻a 卜s 刊睁:l h o n t c 协f :i s 寺k d 咖t 雕k r 一 穗尉母,觚d 皓咖y :i d 酵p 暑科i 卜d 翻越v 棚e - o ”w 町阳p 埘:l o 翰p l 雄i nt r a c k c 4 m c e l : 盯,j 馥c a n c e h 一哺盯铖t l r ,d 。出吨e nv :o 砷k i n t 咖f a n c o 钒勃嘻i :8 k o n 卜l 睁圣r ,& 抽蝴各i no i 醇鼯:i 嗽p 硌y 。i n e 张m 嘏逶n , , e t o p e i , 1 t - q 州啦i n 謦椭o n r , l a , :o 怖p b y i n 伽啪垆嘶礴鲫 幢l 哪n i p f 口p n i 簟,:i u n k l o w r l _ - - _ - _ _ _ _ _ _ _ _ _ _ - - - - _ - _ _ _ _ _ _ - _ - _ _ _ _ 一 雠舨j p 姗t 匆摹n 缸k h 甜p o 嚏e 叫蚋 一a 啦t r , m t o r mb o 幽柏 - c q ,l c f n p 托 ”f t ,钓蝴n t h l a 督l 靠s 毗i l 卜r 考l 母倚n 审s c 毒k ,b i b l | - as p a t “d r e f e n c e :脚砒i a 嗣锄“阳憾 1 1 - 4 1t 冲本钿f 蚋嘧 _ l 卜c 3 耐砌馅8 k * 3 n 图2 1e l e m e n t 类弄l l g r a p h i c e l e m e n t 类的对象模型图 类型继承是指类之i 日j 的接口类型的继承,而不是继承其实现。e l e m e n t 类有 4 n e t 环境下a r c g i se n g i n e 的开发技术研究 十个接口,g r a p h i c e l e m e n t 类继承于e l e m e n t 类,它有十二个接口,包括自身 的两个接口和类型继承e l e m e n t 的十个接口。e l e m e n t 和g r a p h i c e l e m e n t 都是抽 象类,继承过来的接口只是名称相同,具体的实现则不同。( 如图2 - 1 ) 类型继承代码示例: a b s t r a c tc l a s se l e m e n t a b s t r a c tc l a s s g r a p h i c e l e m e n t :p u b l i c e l e m e n t ) 2 1 3 接口 类中实现不同接口,如f e a t u r e c l a s s 类包含自有的i f e a t u r e c l a s s 、 i g e o d a t a s e t 、i f e a t u r e c l a s s m a n a g e 等接口,以及继承于d a t a s e t 类的i d a t a s e t 、继 承与t a b l e 类的i t a b l e 等不同接口。不同的c l a s s e s 可有同一个接口,如 f e a t u r e c l a s s 类有i f e a t u r e c l a s s 接口,而r e l q u e r y t a b l e 类也有i f e a t u r e c l a s s 接 口。 ( 如图2 2 ) 2 1 4 接口调用 两个接口之间是否可以相互调用要满足一个条件:它们要同属于一个类, 如类f e a t u r e l a y e r 是一个组件类,它包含i f e a t u r e l a y e r 接口和i d a t a s e t 接1 3 。 但i f e a t u r e l a y e r 接口和i d a t a s e t 接口都不是其自身的接1 3 ,i f e a t u r e l a y e r 接口是 继承于抽象类f e a t u r e b a s e l a y e r 的接口,而i d a t a s e t 接口继承于f e a t u r e b a s e l a y e r 的父类t a b l e l a y e r ( 如图2 3 ) ,如果已知i f e a t u r e l a y e r 的指针,则通过以下语句 就可得到i d a t a s e t 的指针: i p f e a t u r e l a y e r - q u e r y i n t e r f a c e l u u i d o f ( i d a t a s e t ) ,( v o i d 料) & i p d a t a s e t ) ; 5 n e t 环境下a r c g i se n g i n e 的开发技术研究 图2 2d a t a s e t 类、t a b l e 类、f e a t u r e c l a s s 类和r e l q u e r y t a b l e 类的对象模型图 6 n e t 环境下a r c g i se n g i n e 的开发技术研究 e s r i g e o o a t a b a s e 1 t a m e e s r i g e o d a h q b n s e i c l a s s t a b ,e l a y e r - 一一1 7 一j f e a t u r e b a s e l a y e r i f e a t u r _ e l a y 甜生。刊i f e a t u l e l o y o r 2 :i u n k o w n i g e o f e 献u r e l a y e r 卜- d a t a s :, u r c e t y p e :$ l n r 吒l hd 巧p b 泸埒埘s u m o 一。 f e a t u r e l a y e r i g 口o f o - - , l u r o l a y o r :l f a t u r o l 矗y r _ 卜a n n o t a t i c , n p r o p e r t i o o : i a n n o t a t e l a y e r p r o 皂e r t i e s c o l l e c t i o n 口a n n o t o t i o n h d e r t i e s l d :i u i d c u r r e n t m o p l e v e i :l o n g d i s p i a y a n n o t a t i o n :b o o l e - - , n 卜一c 眄5 p l a ;, f e a t u r e c i a s s :i f e a t u r 酬c :l o e 8 口e c c l u s i o n s e t :i f e o t u r e l d s e t 图2 3t a b l e l a y e r 类、f e a t u r e b a s e l a y e r 类和f e a t u r e l a y e r 类的对象模型图 2 1 5 接口继承 接口之间可以继承,如i m a p f r a m e 接口和i m a p s u r r o u n d f r a m e 接口继承于 i f r a m e e l e m e n t 接口,父接口i f r a m e e l e m e n t 所具有的方法和属性对派生接口 i m a p f r a m e 和i m a p s u r r o u n d f r a m e 都有效。( 如图2 4 ) 一业m a p f r a m e 羹 i m a p f r a m e 莎叶遒蘑亘互五嚣萄萝 蓁 叫m a p s ur r o u n d f r a m e 囊 i m a p s u r r o u n d f r a m eo 牺函亟霾亟丑叠霾面歪y 鬈 图2 4m a p f r a m e 类和m a p s u r r o u n d f r a m e 类的对象模型图 2 2 对象模型图 对象模型图是使用a x c o b j e c t s 的基础。通过对象模型图,可以理解a r c o b j c o t s 实现的对象模型的总体结构。进行a r c o b j e c t s 开发,必须进一步深入理解并读 懂对象模型图。a r c o b j e c t s 对象模型图中的糊a 己基于统一建模语言,并专门针对 c o m 进行了一些修改。对象模型图是对用户在对象浏览器中获得的信息的一种 重要补充。 对象模型图主要说明以下问题: 7 n e t 环境下a r c g i se n g i n e 的开发技术研究 ( 1 ) 该类支持哪些接口; ( 2 ) 完成任务需要哪些对象; ( 3 ) 如何使用该类的对象; ( 4 ) 是否可以直接实例化类; ( 5 ) 接口有哪些方法和属性; ( 6 ) 是否有其它类也支持该接口; ( 7 ) 对象间的关系。 s sd i a g r a ma b s l r a c t c l a s s k e y 。o p i i 涮) :勰含茳 l r d e d a c eo fi m e r e s t 。o1 l c c o c l 。s li仙einlinstantiatio ) - - - i n t e r f a c eo fi n t e r e s t 一一一、, c l a s s f h m m 枷l丫 6 , ,:,、一 i n t e r f a c eo fi n t e r e s t w - , i n t e d a c e o 一 ; 图2 5 对象模型图的说明 在图2 5 中,可以看到对象模型图有三种类:抽象类( a b s t r a c tc l a s s ) ,组 件类( c o c l a s s ) ,普通类( c l a s s ) 。抽象类的主要目的是为它的子类定义公共 接口,一个抽象类将把它的部分或全部实现延迟到子类中,因此,一个抽象类 不能创建新的对象( 被实例化) 。一个组件类对象可以被直接创建。普通类对 象虽然不能直接创建,但它可以作为其它类的一个属性或者从其它类的实例化 来仓u 建。 如图2 - 6 ,a r c o b j e c t s 中的g e o m e t r y 类是抽象类的示例,一个g e o m e t r y 类 型对象不能被创建,但是一个p o i n t 类是一个组件类,它可以被创建。在这个p o i n t 类中实现了g e o m e t r y 中定义的接e l ,因此在基类对象中被定义的接口可以从 c o c | a s s 来访问。 8 n e t 环境下a r c g i se n g i n e 的开发技术研究 p o i m 婚钓一竹2 i q i t 鲁s : l m 翩f e p o i n t i p o m t :i g e o m e w i - i ii - il o n g bi bm :d o u b l e i - i b xd c 。b l e 1y ) c 。h i e hz :c o u n e 一c o r r o a r ei o l h e 垆o i m :i p o i m ) :l o n g 图2 - 6g e o m e t r y 类和p o i n t 类的对象模型图 9 n e t 环境下a r c g i se n g i n e 的开发技术研究 第三章时c g i se n g i n e 中类的组织 3 1a r c g i se n g i n e 概述 a r c g i se n g i n e 是基于a r c o b j e c t s 构建的,它由一组核心的a r c o b j e c t s 包 组成,其对象与平台无关,能够在各种编程接口中调用,开发者通过它提供的 强大工具构建定制的g i s 功能。这些对象在w i n d o w s 和u n i x 平台下均可运行, 并具有多个开发应用程序接口,包括c o m ,n e t ,j a v a 和c + + 等。开发人员可 以利用这些应用程序接口和a r c o b j e c t s 功能构建应用程序。 a r c g i se n g i n e 组件开发平台由开发包( d e v e l o p e rl ( i t ) 和运行环境( r u n t i m e ) 两部分组成。第一个部分是开发包,是一套让开发者开发自定义g i s 和制图应 用的工具,包括了支持开发任务所需要的所有开发资源。定制的应用程序可在 脱离a r c g i sd e s k t o p 环境下单独执行。该开发包包含以下3 个关键部分: ( 1 ) 控件:它是a r c g i s 用户界面的组成部分,可以嵌入到应用程序中使 用。例如:开发人员可以在自己的应用程序中加入m a p c o n t r o l 和t o c c o n t r o l 控 件来显示地图,并对其进行交互式运用。a r c g i se n g i n e 的控件包括: p a g e l a y o u t c o n t r o l ,m a p c o n t r o l ,r e a d e r c o n t r o l ,t o c c o n t r o l ,s c e n e c o n t r o l , g l o b e c o n t r o l ,t o o l b a r c o n t r o l 。 ( 2 ) 工具条:它是g i s 工具的集合,实现和地图、地理信息的交互。工具 包括:平移、缩放、点击查询等各种选择工具。通过调用一套丰富的、常规的 工具和工具条,开发者可以很容易地将选择的工具拖放到定制应用中或创建自 己定制的工具来实现与地图的交互。 ( 3 ) 对象库:它是可编程a r c o b j e c t s 组件的集合,包括几何、显示、制图、 g i s 数据源和三维分析等一系列库。这些a r c o b j e c t s 库支持所有的a r c g i s 功 能,都可以通过大多数通用的开发环境来访问,开发者可以开发出从低级到高 级的各种定制的应用程序。 第二部分是运行环境,它是一个使终端用户软件能够运行的核心a r c o b j e c t s 的产品,并且必须随着定制的应用程序一起安装。这样就可以保证a r c g i se n g i n e 开发的产品能脱离a r c g i s 软件环境工作。 3 2a r c g i se n g i n e 的类库 a r c g i s 系统基于一个共享式的g i s 组件库a r c o b j e c t s 。a r c g i se n g i n e 也是 基于a r c o b j e c t s 的一套丌发组件,在这套组件中定义了用于开发g i s 的所有的 类。a r c g i s 是通过类库来组织这些类的,在a r c g i s9 的架构中包含了许多类库, 1 0 n e t 环境卜a r c g i se n g i n e 的开发技术研究 这些类库通过d l l s 文件或者e x e s 文件存储a r c o b j e c t s 组件。这些组件通过内 部的接口来进行相互通信,例如:类库e s r i g e o m e t r y ( 设置了基础地图服务模型) 是一个可持续丌发、升级或继承的类库,是没有界面的组件,可以通过它进行 现实世界的基本定义,这个类库在a r c g i sd e s k t o p ,e n g i n e ,和s e r v e r 都可以使 用。 所有a r c g i s 类库都位于安装目录下的恤c g i s c o m 文件央中,它们执行基 于c o m 机制的a r c o b j e c t s 组件,而这种基于a r c o b j e c t s 组件的d l l 位于安装 目录下的洫c g i s b i n 文件夹中。u m c g i s c o m 文件夹中的类库文件是以o l b 为扩 展名的类型库文件,例如e s r i g e o m e t r y o l b 。k a r c g i s b i n 目录中的a r c o b j e c t 组 件是以d u 为扩展名的动态链接库文件,例如g e o m e t r y d l l 。 a r c g i se n g i n e 的类库架构( 如图3 - 1 和图3 2 ) 。 彳医曼卫l 塞瓣:攀 瓣嗽 ! 照侧嬲! 型竺 警1 1 7 篓到 q ;j ,”o o ”lr t “j i , , 2 d “l i o “l l ,, :a t l o t 。“i ln 咖嘶1 7 自 i 啊 瑟霉画一罱幽 回 国圜 n e t 环境卜a r c g i se n g i n e 的开发技术研究 图3 - 2a r c g i se n g i n e 的类库及其架构 从图3 - 1 和图3 2 中,可以看到a r c g i se n g i n e 包含2 2 个类库,从中也可以 看出这些类库之间的关系。 3 2 1 类库和类库文件的对应关系 恤r c g i s c o m 文件夹中包含有7 5 个类库文件,这其中有a r c g i sd e s k t o p 和 a r c g i ss e r v e r 所要用到的类库,以及a r c g i se n g i n e 的类库( 如图3 3 ) 。 1 2 n e t 环境卜ia r c g i se n g i n e 的开发技术研究 jc :p r o g r a mf i l e s a r c g i s 、c o m 名称大小类型修改日期 鞫爱沣夷疰务 会 、缬e s r i d i s p l a y o l b 3 4 4 髓0 3 文件2 0 0 6 9 2 91 9 :5 0 馥一豫;童二三 訇e z r i d is p l a y u i o l b 1 3 6i ( 3 0 1 3 文件2 0 0 6 9 2 92 3 :11 i 。j :一 鱼e s r i l d i t o r 0 1 b 2 7 6i ( 3 0 1 3 文件 2 0 0 6 9 3 00 :0 3 z f j 7 ,互1 b 莩。绷e s r i l d i t o r e x to i b 2 6 0i ( 30 1 3 文件 2 0 0 6 9 3 00 :1 2 拦毒砖亨跨_ 毫蠲e z r i f r m e w o r k0 1 b1 4 4 硒o i j 8 文件 2 0 0 6 9 2 92 3 :0 6 ”y - ,一r :i 。一 驾e s r i g e o a n a l y s t 。l b 2 0 0 硒o l b 文件2 0 0 6 9 2 92 0 :5 2 碧e s r i g e o d a t a b a z e o l b i ,1 2 4 髓0 1 3 文件 2 0 0 6 - 9 2 91 9 :5 6 霞覆 灸 一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论