gis二次开发使用mapobjects

上传人:痛*** 文档编号:218408125 上传时间:2023-06-19 格式:PPT 页数:46 大小:805KB
收藏 版权申诉 举报 下载
gis二次开发使用mapobjects_第1页
第1页 / 共46页
gis二次开发使用mapobjects_第2页
第2页 / 共46页
gis二次开发使用mapobjects_第3页
第3页 / 共46页
资源描述:

《gis二次开发使用mapobjects》由会员分享,可在线阅读,更多相关《gis二次开发使用mapobjects(46页珍藏版)》请在装配图网上搜索。

1、GISGIS二次开发使用二次开发使用MapObjectsMapObjects(L1)(L1)2006.2.22第第1 1章章GIS GIS 二次开发概述二次开发概述1.1 GIS 1.1 GIS 开发模式开发模式1.2 1.2 面向对象程序设计面向对象程序设计(OOP)(OOP)1.3 1.3 组件组件GISGIS技术技术GIS GIS 软件类型软件类型GISGIS平台软件平台软件提供全部的地理信息系统处理功能,完成数据提供全部的地理信息系统处理功能,完成数据处理、空间分析、信息查询、专题地图等功能处理、空间分析、信息查询、专题地图等功能如:如:ArcGIS,MapInfo Professio

2、nal,MAPGISArcGIS,MapInfo Professional,MAPGISGISGIS应用软件应用软件针对不同的应用领域和行业,综合电子地图和针对不同的应用领域和行业,综合电子地图和信息管理系统的特点信息管理系统的特点如:昆明市如:昆明市110110警务处理系统,警务处理系统,XXXX市综合管线市综合管线地理信息系统,地理信息系统,XXXX公司物流配送系统公司物流配送系统1.1 GIS1.1 GIS开发模式开发模式独立开发模式独立开发模式宿主型开发模式宿主型开发模式GIS组件开发模式组件开发模式独立开发模式独立开发模式不依赖于任何不依赖于任何GISGIS工具软件,从空间数工具软件

3、,从空间数据的采集、编辑到数据的处理分析及结据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如计,然后选用某种程序设计语言,如Visual C+Visual C+、DelphiDelphi、等,在一定的操等,在一定的操作系统平台上编程实现。作系统平台上编程实现。开发周期长,软件功能相对简单,对开开发周期长,软件功能相对简单,对开发者要求高,用于购买软件的费用相对发者要求高,用于购买软件的费用相对节省节省宿主型开发模式宿主型开发模式基于GIS平台软件,进行应用系统开发多数GIS平台软件都提供了可供用户进行二次开发

4、的脚本语言,用户以原GIS软件为开发平台,利用这些脚本语言,开发出自己的针对不同应用领域的应用程序。如ArcView中的Avenue语言,MapInfo Professional的MapBasic语言开发较为容易;二次开发的脚本语言,功能较弱;所开发的系统不能脱离GIS平台;是解释执行的,运行效率低;用户界面受平台软件的限制GISGIS组件开发模式组件开发模式建立在组件技术基础上的建立在组件技术基础上的GISGIS功能组件,功能组件,实现了地理信息系统的各种功能,这些组实现了地理信息系统的各种功能,这些组件都具备件都具备GISGIS的基本功能。开发人员可以的基本功能。开发人员可以基于通用软件开

5、发工具,尤其是可视化开基于通用软件开发工具,尤其是可视化开发工具,如:发工具,如:DelphiDelphi、Visual C+Visual C+、Visual BasicVisual Basic、Power BuilderPower Builder等等RADRAD工具工具为开发平台,进行二次开发,实现为开发平台,进行二次开发,实现GISGIS功功能。能。大多数大多数GISGIS软件产商都提供商业化的软件产商都提供商业化的GISGIS组件。如组件。如ESRI ESRI 公司的公司的MapObjectsMapObjects、MapInfoMapInfo公司的公司的MapXMapX等等GISGIS开

6、发模式的选择开发模式的选择独立开发难度太大独立开发难度太大宿主型二次开发受宿主型二次开发受GISGIS平台所提供的脚本语言的平台所提供的脚本语言的限制限制GISGIS组件开发模式结合了组件开发模式结合了GISGIS平台软件与可视化开平台软件与可视化开发平台的组件开发模式的优点。利用发平台的组件开发模式的优点。利用GISGIS组件实组件实现对空间数据库的管理、分析功能,又可以利用现对空间数据库的管理、分析功能,又可以利用其它可视化开发平台提供的丰富的、功能强大的其它可视化开发平台提供的丰富的、功能强大的编程组件和环境,不仅能大大提高应用系统的开编程组件和环境,不仅能大大提高应用系统的开发效率,而

7、且使用可视化软件开发工具开发出来发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的用户界面,更强大的数据的应用程序具有更好的用户界面,更强大的数据库功能。可靠性好、易于移植、便于维护,学习库功能。可靠性好、易于移植、便于维护,学习周期较短,容易上手。成为周期较短,容易上手。成为GISGIS应用开发的主要应用开发的主要方向。方向。1.2 1.2 面向对象程序设计面向对象程序设计(OOP)(OOP)Object Oriented ProgrammingObject Oriented Programming软件开发模式的演变和发展软件开发模式的演变和发展1.2.11.2.1 面向对象程序

8、设计模式面向对象程序设计模式OOP将问题分解为一系列实体将问题分解为一系列实体这些这些实体被称为对象(实体被称为对象(objectobject),然后围绕这),然后围绕这些实体建立数据和函数些实体建立数据和函数1.2.21.2.2什么是面向对象程序设计?什么是面向对象程序设计?面向对象程序设计(面向对象程序设计(OOPOOP)技术汲取了结构化程序设计)技术汲取了结构化程序设计中好的思想,并将这些思想与一些新的、强大的理念相中好的思想,并将这些思想与一些新的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。结合,从而给你的程序设计工作提供了一种全新的方法。在面向对象的程序设思想中,

9、将一个问题分解为一些相在面向对象的程序设思想中,将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函互关联的子集,每个子集内部都包含了相关的数据和函数。数。一个对象就是已定义的某个类型的变量。当你定义了一一个对象就是已定义的某个类型的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。个对象,你就隐含的创建了一个新的数据类型。1.2.3OOPOOP中的基本概念中的基本概念对象(对象(ObjectObject)类(类(ClassClass)数据抽象(数据抽象(Data abstractionData abstraction)继承(继承(InheritanceInheri

10、tance)动态绑定(动态绑定(Dynamic bindingDynamic binding)数据封装(数据封装(Data encapsulationData encapsulation)多态性(多态性(PolymorphismPolymorphism)消息传递(消息传递(Message passingMessage passing)对象对象在一个面向对象的系统中:对象是运行期的基本实体。在一个面向对象的系统中:对象是运行期的基本实体。它可以用来表示一个人或者说一个银行帐户,一张数据它可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。在面向对表格,或者其它什

11、么需要被程序处理的东西。在面向对象程序设计中,问题的分析一般以对象及对象间的自然象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。对象在内存中占有一定空间,并且具有一联系为依据。对象在内存中占有一定空间,并且具有一个与之关联的地址。个与之关联的地址。当一个程序运行时,对象之间通过互发消息来相互作用。当一个程序运行时,对象之间通过互发消息来相互作用。例如,程序中包含一个例如,程序中包含一个“customer”customer”对象和一个对象和一个“account”account”对象,而对象,而customercustomer对象可能会向对象可能会向accountaccount对对象发

12、送一个消息,查询其银行帐目。每个对象都包含数象发送一个消息,查询其银行帐目。每个对象都包含数据以及操作这些数据的代码函数或方法。即使不了解据以及操作这些数据的代码函数或方法。即使不了解彼此的数据和代码的细节,对象之间依然可以相互作用,彼此的数据和代码的细节,对象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的类型。返回的响应的类型。类类对象包含数据以及操作这些数据的代码。一个对象对象包含数据以及操作这些数据的代码。一个对象所包含的所有数据和代码可以通过类来构成一个用所包含的所有数据和代码可以通过类来构成一个用户定

13、义的数据类型。事实上,对象就是类类型户定义的数据类型。事实上,对象就是类类型(Class TypeClass Type)的变量。一旦定义了一个类,我们)的变量。一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。个类就是具有相同类型的对象的抽象。类是用户定义的数据类型,但在一个程序设计语言类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。比如创建一个中,它和内建的数据类型行为相同。比如创建一

14、个类对象的语法和创建一个整数对象的语法相同的。类对象的语法和创建一个整数对象的语法相同的。如果如果FruitFruit被定义为一个类,那么语句被定义为一个类,那么语句Fruit apple;Fruit apple;就创建了一个就创建了一个FruitFruit类的对象类的对象appleapple封装封装把数据和函数包装在一个单独的单元(称为类)的行把数据和函数包装在一个单独的单元(称为类)的行为称为为称为封装封装。数据封装是类的最典型特点。数据不能。数据封装是类的最典型特点。数据不能被外界访问,只能被封装在同一个类中的函数访问。被外界访问,只能被封装在同一个类中的函数访问。这些函数提供了对象数据

15、和程序之间的接口。避免数这些函数提供了对象数据和程序之间的接口。避免数据被程序直接访问的概念被称为据被程序直接访问的概念被称为“数据隐藏数据隐藏”。封装机制将数据和代码捆绑到一起,避免了外界的干封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。逻辑实体。在一个对象内部,某些代码和(或)某些数据可以是在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内私有的,不能被外界

16、访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。部分意外的改变或错误的使用了对象的私有部分。继承继承继承是可以让某个类型的对象获得另一个继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类型的对象的属性的方法。它支持按级分类的概念。例如,知更鸟属于飞鸟类,也类的概念。例如,知更鸟属于飞鸟类,也属于鸟类。就像下图中描绘的那样,这种属于鸟类。就像下图中描绘的那样,这种分类的原则是,每一个子类都具有父类的分类的原则是,每一个子类都具有父类的公共特性。公共特性。Cl

17、ass Bird String type;Public move .Class flyBird inherit from BirdString Name;Publice fly 在在OOPOOP中,继承的概念很好的支持了代码的重用中,继承的概念很好的支持了代码的重用性(性(reusabilityreusability),也就是说,我们可以向一),也就是说,我们可以向一个已经存在的类中添加新的特性,而不必改变个已经存在的类中添加新的特性,而不必改变这个类。这可以通过从这个已存在的类派生一这个类。这可以通过从这个已存在的类派生一个新类来实现。这个新的类将具有原来那个类个新类来实现。这个新的类将具有

18、原来那个类的特性,以及新的特性。而继承机制的魅力和的特性,以及新的特性。而继承机制的魅力和强大就在于它允许程序员利用已经存在的类强大就在于它允许程序员利用已经存在的类(接近需要,而不是完全符合需要的类),并(接近需要,而不是完全符合需要的类),并且可以以某种方式修改这个类,而不会影响其且可以以某种方式修改这个类,而不会影响其它的东西。它的东西。注意,每个子类只定义那些这个类所特有的特注意,每个子类只定义那些这个类所特有的特性。而如果没有按级分类,每类都必须显式的性。而如果没有按级分类,每类都必须显式的定义它所有的特性。定义它所有的特性。多态多态多态是多态是OOPOOP的另一个重要概念。多态的意

19、思是事的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不同物具有不同形式的能力。举个例子,对于不同的实例,某个操作可能会有不同的行为。这个的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。比如说加法行为依赖于所要操作数据的类型。比如说加法操作,如果操作的数据是数,它对两个数求和。操作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字如果操作的数据是字符串,则它将连接两个字符串。符串。OOPOOP的优点的优点通过继承,我们可以大幅减少多余的代通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;码,并扩展现有代码的用途;我

20、们可以在标准的模块上(这里所谓的我们可以在标准的模块上(这里所谓的“标准标准”指程序员之间彼此达成的协议)指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效这可以减少软件开发时间并提高生产效率;率;数据隐藏的概念帮助程序员保护程序免数据隐藏的概念帮助程序员保护程序免受外部代码的侵袭;受外部代码的侵袭;允许一个对象的多个实例同时存在,而允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;且彼此之间不会相互干扰;OOPOOP的优点的优点允许将问题空间中的对象直接映射到程序中;允许将问题空间中的对象直接映射到程

21、序中;基于对象的工程可以很容易的分割为独立的部基于对象的工程可以很容易的分割为独立的部分;分;以数据为中心的设计方法允许我们抓住可实现以数据为中心的设计方法允许我们抓住可实现模型的更多细节;模型的更多细节;面向对象的系统很容易从小到大逐步升级;面向对象的系统很容易从小到大逐步升级;对象间通讯所使用的消息传递技术与外部系统对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;接口部分的描述更简单;更便于控制软件复杂度。更便于控制软件复杂度。1.31.3组件式组件式GISGIS(ComGISComGIS)组件技术组件技术组件式组件式GIS GIS 1.3.1 1.3.1 组件技术组件技术在

22、组件技术的概念模式下,软件系统可以被视为相互协在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。组件间的接口通过一种与平台无关的对象了解和调用。组件间的接口通过一种与平台无关的语言语言IDLIDL(InterfaceDefineLanguageInterfaceDefineLanguage)来定义,而且是)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对二进制兼容的,使用者

23、可以直接调用执行模块来获得对象提供的服务。早期的类库,提供的是原代码级的重用,象提供的服务。早期的类库,提供的是原代码级的重用,只适用于比较小规模的开发形式;而组件则封装得更加只适用于比较小规模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于彻底,更易于使用,并且不限于C C之类的语言,可之类的语言,可以在各种开发语言和开发环境中使用。以在各种开发语言和开发环境中使用。软件重用技术软件重用技术COM与与DCOMCOMCOM是组件式对象模型是组件式对象模型(Component Object Model)(Component Object Model)的英文缩写,是组件之间相互接口的规范

24、,是的英文缩写,是组件之间相互接口的规范,是OLE(Object Linking&Embedding)OLE(Object Linking&Embedding)和和ActiveXActiveX共同共同的基础,其作用是使各种软件构件和应用软件能够的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互。用一种统一的标准方式进行交互。COMCOM不是一种面向对象的语言,而是一种与源代码不是一种面向对象的语言,而是一种与源代码无关的二进制标准。无关的二进制标准。COMCOM所建立的是一个软件模块所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之与另一个软件模块之间的链

25、接,当这种链接建立之后,模块之间就可以通过称之为后,模块之间就可以通过称之为“接口接口”的机制来的机制来进行通信。进行通信。COMCOM本质上是客户本质上是客户/服务器模式。客户(通常是应用服务器模式。客户(通常是应用程序)请求创建程序)请求创建COMCOM对象并通过对象并通过COMCOM对象的接口操纵对象的接口操纵COMCOM对象。服务器根据客户的请求创建并管理对象。服务器根据客户的请求创建并管理COMCOM对对象。客户和服务器这两种角色是相对的。象。客户和服务器这两种角色是相对的。DCOM基于分布式环境下的基于分布式环境下的COMCOM被称作被称作DCOM(Distribute COMDC

26、OM(Distribute COM,分布式组件对象,分布式组件对象模型模型)。DCOMDCOM是是ActiveXActiveX的基础,它实现了的基础,它实现了COMCOM对象对象与远程计算机上的另一个对象之间直接进与远程计算机上的另一个对象之间直接进行交互行交互。ActiveXActiveX与与ActiveXActiveX控件控件 ActiveXActiveX是是MicrosoftMicrosoft提出的一组基于提出的一组基于COMCOM(Component Object ModelComponent Object Model,组件对象模型),组件对象模型)规范使得软件组件在网络环境中进行交互

27、的技规范使得软件组件在网络环境中进行交互的技术集。它与具体的编程语言无关。术集。它与具体的编程语言无关。作为针对作为针对InternetInternet应用开发的技术,应用开发的技术,ActiveXActiveX被被广泛应用于广泛应用于WEBWEB服务器以及客户端的各个方面。服务器以及客户端的各个方面。同时,同时,ActiveXActiveX技术也被技术也被 用于方便地创建普通用于方便地创建普通的桌面应用程序的桌面应用程序ActiveXActiveX的内容的内容 ActiveXActiveX控件(控件(ActiveX ControlActiveX Control):):用于向用于向WEBWEB

28、页面、页面、Microsoft WordMicrosoft Word等支持等支持ActiveX ActiveX 技术的容器(技术的容器(ContainerContainer)中插入)中插入COMCOM对象;对象;ActiveXActiveX文档(文档(ActiveX DocumentActiveX Document):):用于在用于在Web BrowserWeb Browser或者其它支持或者其它支持ActiveXActiveX的容器中浏览复合文档(非的容器中浏览复合文档(非HTMLHTML文档),例文档),例如如Microsoft WordMicrosoft Word文档、文档、Micros

29、oft ExcelMicrosoft Excel文档或者用户自定义的文档等文档或者用户自定义的文档等ActiveXActiveX的内容的内容ActiveXActiveX脚本脚本(ActiveX ScriptingActiveX Scripting)用于从客户端或者服务器端操纵用于从客户端或者服务器端操纵ActiveXActiveX控件控件和和JavaJava程序、传递数据以及协调它们之间的程序、传递数据以及协调它们之间的操作等;操作等;ActiveXActiveX服务器框架(服务器框架(ActiveX Server ActiveX Server FrameworkFramework):):提供

30、了一系列针对提供了一系列针对WebWeb服务器应用程序设计各服务器应用程序设计各个方面的函数及其封装类,诸如服务器过滤个方面的函数及其封装类,诸如服务器过滤器、器、HTMLHTML数据流控制等;数据流控制等;ActiveXActiveX控件控件桌面用的、基于桌面用的、基于COMCOM的组件叫做的组件叫做ActiveXActiveX控件。控件。所谓所谓ActiveXActiveX控件不过是遵从一定的标准、与客控件不过是遵从一定的标准、与客户端交互的户端交互的COMCOM对象而已对象而已是建立在是建立在COMCOM标准上的独立的软件元件,提供给标准上的独立的软件元件,提供给用户应用接口,发送相应的

31、事件,开发者则可用户应用接口,发送相应的事件,开发者则可以截取这些事件,执行相应的功能。以截取这些事件,执行相应的功能。ActiveXActiveX控件开发端和使用端是完全独立的,可控件开发端和使用端是完全独立的,可以用以用DelphiDelphi、VBVB等各种语言来开发,又可以用等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境于不同语言、不同开发平台、不同的系统环境中。中。一个或多个一个或多个ActiveXActiveX控件会保存在一个动态链接控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展库中,但它是一种特殊的动态链接库,其扩展名是名是OCXOCX。Ac

32、tiveXActiveX控件的组成控件的组成PMEPME模型模型 PME PME 模型模型Property Property 属性属性MethodMethod方法方法Event Event 事件事件 一个一个ActiveXActiveX控件由它的一些成员组成:属性,方法以及事件控件由它的一些成员组成:属性,方法以及事件P P:属性:属性 是用来描述和反是用来描述和反映对象特征的参数,用来保映对象特征的参数,用来保存对象的数据存对象的数据M M:方法是控件内部可调用:方法是控件内部可调用的用以完成特定操作的过程的用以完成特定操作的过程或函数或函数E E:事件是:事件是VBVB预先定义的预先定义的

33、,对象能识别的动作。对象能识别的动作。事件:事件:Click,DblClick,MouseDown.属性:属性:List(Map X,MapObjects,ArcObjects),Visiable方法:方法:AddItem,Refresh,ClearListBoxListBox 控件显示项目列表,从其中可以选择控件显示项目列表,从其中可以选择一项或多项。如果项目总数超过了可显示的项一项或多项。如果项目总数超过了可显示的项目数,就自动在目数,就自动在 ListBox 控件上添加滚动条。控件上添加滚动条。ActiveXActiveX与与ActiveXActiveX控件的区别控件的区别ActiveX

34、ActiveX不等同于不等同于ActiveXActiveX构件,从上面的构件,从上面的介绍可知,介绍可知,ActiveXActiveX是一个很宽的技术家是一个很宽的技术家族的标识,而族的标识,而ActiveXActiveX构件只是那个家族构件只是那个家族的一个特定产品。的一个特定产品。1.3.21.3.2组件式组件式GISGIS 组件式软件技术已经成为当今软件技术的组件式软件技术已经成为当今软件技术的潮流之一,为了适应这种技术潮流,潮流之一,为了适应这种技术潮流,GISGIS软件象其他软件一样,已经或正在发生着软件象其他软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部革命性的变化

35、,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来。到提供组件由用户自己再开发的方向上来。无疑,组件式无疑,组件式GISGIS技术将给整个技术将给整个GISGIS技术体技术体系和应用模式带来巨大影响系和应用模式带来巨大影响组件式组件式GISGIS 基本思想是把基本思想是把GISGIS的各大功能模块划分为的各大功能模块划分为几个几个控件控件,每个控件完成不同的功能。各,每个控件完成不同的功能。各个个GISGIS控件之间,以及控件之间,以及GISGIS控件与其它非控件与其它非GISGIS控件之间,可以方便地通过可视化

36、的控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的软件开发工具集成起来,形成最终的GISGIS应用。应用。控件如同一堆各式各样的积木,他们分别控件如同一堆各式各样的积木,他们分别实现不同的功能实现不同的功能(包括包括GISGIS和非和非GISGIS功能功能),根据需要把实现各种功能的根据需要把实现各种功能的“积木积木”搭搭建起来,就构成应用系统。建起来,就构成应用系统。组件式组件式GISGIS系统的特点系统的特点小巧灵活、价格便宜小巧灵活、价格便宜开发简捷开发简捷大众化大众化应用及评价应用及评价软件的构件化已成为软件技术发展的潮流。软件的构件化已成为软件技术发展的潮流。基于基于

37、DCOMDCOM的的ActiveXActiveX构件实现,已成为软构件实现,已成为软件工业的一种标准。伴随着未来其它非件工业的一种标准。伴随着未来其它非WindowsWindows平台对平台对ActiveXActiveX的支持,的支持,ActiveXActiveX构件化的构件化的GISGIS软件系统将对软件系统将对GISGIS的体系结构的体系结构和和GISGIS将来的应用前景产生深远影响。将来的应用前景产生深远影响。组件组件GISGIS的不足的不足与专业的与专业的GISGIS客户端软件相比,采用构件客户端软件相比,采用构件技术不可避免的带来效率上的相对低下,技术不可避免的带来效率上的相对低下,

38、这在访问超大空间数据(如大数据量的遥这在访问超大空间数据(如大数据量的遥感图象)的时候表现得尤为明显;感图象)的时候表现得尤为明显;支持的空间数据量有限;支持的空间数据量有限;支持的功能有限,由于是构件,只覆盖了支持的功能有限,由于是构件,只覆盖了GISGIS系统的部分功能,于是对于特殊领域,系统的部分功能,于是对于特殊领域,它就显得无能为力;它就显得无能为力;组件式组件式GISGIS开发平台的结构开发平台的结构 组件式组件式GISGIS开发平台通常可设计为三级结构开发平台通常可设计为三级结构基础组件基础组件高级通用组件高级通用组件行业组件行业组件基础组件基础组件面向空间数据管理,提供基本的交

39、互过程,并面向空间数据管理,提供基本的交互过程,并能以灵活的方式与数据库系统连接;能以灵活的方式与数据库系统连接;高级通用组件高级通用组件由基础组件构造而成,面向通用功能,简化用由基础组件构造而成,面向通用功能,简化用户开发过程,如显示工具组件、选择工具组件、户开发过程,如显示工具组件、选择工具组件、编辑工具组件、属性浏览器组件等等。它们之编辑工具组件、属性浏览器组件等等。它们之间的协同控制消息都被封装起来。这级组件经间的协同控制消息都被封装起来。这级组件经过封装后,使二次开发更为简单。如一个编辑过封装后,使二次开发更为简单。如一个编辑查询系统,若用基础平台开发,需要编写大量查询系统,若用基础

40、平台开发,需要编写大量的代码,而利用高级通用组件,只需几句程序的代码,而利用高级通用组件,只需几句程序就够了。就够了。行业性组件行业性组件抽象出行业应用的特定算法,固化到组件中,抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。以进一步加速开发过程。以GPSGPS监控为例。对于监控为例。对于GPSGPS应用,除了需要地图显示、信息查询等一般应用,除了需要地图显示、信息查询等一般的的GISGIS功能外,还需要特定的应用功能,如动态功能外,还需要特定的应用功能,如动态目标显示、目标锁定、轨迹显示等。这些目标显示、目标锁定、轨迹显示等。这些GPSGPS行行业性应用功能组件被封装起来后,开发

41、者的工业性应用功能组件被封装起来后,开发者的工作就可简化为设置显示目标的图例、轨迹显示作就可简化为设置显示目标的图例、轨迹显示的颜色、锁定的目标,以及调用、接受数据的的颜色、锁定的目标,以及调用、接受数据的方法等。方法等。GIS组件的功能组件的功能空间数据获取空间数据获取坐标转换坐标转换图形编辑图形编辑数据存储数据存储数据查询数据查询数据分析数据分析制图表示制图表示.可以想象要把这些所有的功可以想象要把这些所有的功能放在一个控件中几乎是不能放在一个控件中几乎是不可能的,即使实现也会带来可能的,即使实现也会带来系统效率方面的低下。一般系统效率方面的低下。一般可以认为可以认为GISGIS组件的设计

42、主组件的设计主要遵循应用领域的需求。例要遵循应用领域的需求。例如如ESRIESRI的的MapObjectsMapObjects就是以就是以空间数据访问、查询、制图空间数据访问、查询、制图为主要目标的为主要目标的GISGIS组件。组件。GISGIS组件产品组件产品GISGIS组件的代表作应首推组件的代表作应首推MapObjectsMapObjects以及以及MapXMapX。其中。其中MapObjectsMapObjects由全球最大的由全球最大的GISGIS厂商厂商ESRI(ESRI(美国环境系统研究所美国环境系统研究所)推出;推出;MapXMapX由著名的桌面由著名的桌面GISGIS厂商美国

43、厂商美国MapInfoMapInfo公公司推出。司推出。功能MapObjectsMapX显示的地图数据格式Arcview的SHP、ARC/INFO的coverage、SDE图层MapInfo的数据格式叠加栅格图像有对地图的常用操作放大、缩小、漫游等图层控制增加、移除、设置当前层属性数据绑定有地图信息查询方式1.通过鼠标选取特征;2.通过SQL查找特征;3.通过空间操作选取要素专题地图较弱有GPS集成有用户绘图图层无有生成/编辑地图对象较弱地图标注有地图符号化较弱较强分析功能有?地理编码有可使用的开发语言VC、VB、PowerBuilder、Delphi、Access等VC、VB、PowerBuilder、Delphi、LotusNotes等本章回顾本章回顾GISGIS的三种开发模式的三种开发模式基本概念:类与对象,控件对象的属性、基本概念:类与对象,控件对象的属性、方法、事件方法、事件什么是组件式什么是组件式GISGIS,其功能及特点,其功能及特点你所了解的组件你所了解的组件GISGIS产品有哪些产品有哪些

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!