gis二次开发使用mapobjects

上传人:gb****c 文档编号:243401592 上传时间:2024-09-22 格式:PPT 页数:46 大小:805KB
返回 下载 相关 举报
gis二次开发使用mapobjects_第1页
第1页 / 共46页
gis二次开发使用mapobjects_第2页
第2页 / 共46页
gis二次开发使用mapobjects_第3页
第3页 / 共46页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,GIS,二次开发使用,MapObjects(L1),2006.2.22,第,1,章,GIS,二次开发概述,1.1 GIS,开发模式,1.2,面向对象程序设计,(OOP),1.3,组件,GIS,技术,GIS,软件类型,GIS,平台软件,提供全部的地理信息系统处理功能,完成数据处理、空间分析、信息查询、专题地图等功能,如:,ArcGIS,MapInfo Professional,MAPGIS,GIS,应用软件,针对不同的应用领域和行业,综合电子地图和信息管理系统的特点,如:昆明市,110,警务处理系统,,XX,市综合管线地理信息系统,,XX,公司物流配送系统,1.1 GIS,开发模式,独立开发模式,宿主型开发模式,GIS,组件开发模式,独立开发模式,不依赖于任何,GIS,工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如,Visual C+,、,Delphi、,等,在一定的操作系统平台上编程实现。,开发周期长,软件功能相对简单,对开发者要求高,用于购买软件的费用相对节省,宿主型开发模式,基于,GIS,平台软件,进行应用系统开发,多数,GIS,平台软件都提供了可供用户进行二次开发的脚本语言,用户以原,GIS,软件为开发平台,利用这些脚本语言,开发出自己的针对不同应用领域的应用程序。,如,ArcView,中的,Avenue,语言,,MapInfo Professional,的,MapBasic,语言,开发较为容易,;,二次开发的脚本语言,功能较弱,;,所开发的系统不能脱离,GIS,平台,;,是解释执行的,运行效率低,;,用户界面受平台软件的限制,GIS,组件开发模式,建立在组件技术基础上的,GIS,功能组件,实现了地理信息系统的各种功能,这些组件都具备,GIS,的基本功能。开发人员可以基于通用软件开发工具,尤其是可视化开发工具,如:,Delphi,、,Visual C+,、,Visual Basic,、,Power Builder,等,RAD,工具为开发平台,进行二次开发,实现,GIS,功能。,大多数,GIS,软件产商都提供商业化的,GIS,组件。如,ESRI,公司的,MapObjects,、,MapInfo,公司的,MapX,等,GIS,开发模式的选择,独立开发难度太大,宿主型二次开发受,GIS,平台所提供的脚本语言的限制,GIS,组件开发模式结合了,GIS,平台软件与可视化开发平台的组件开发模式的优点。利用,GIS,组件实现对空间数据库的管理、分析功能,又可以利用其它可视化开发平台提供的丰富的、功能强大的编程组件和环境,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的用户界面,更强大的数据库功能。可靠性好、易于移植、便于维护,学习周期较短,容易上手。成为,GIS,应用开发的主要方向。,1.2,面向对象程序设计,(OOP),Object Oriented Programming,软件开发模式的演变和发展,1.2.1,面向对象程序设计模式,OOP,将问题分解为一系列实体,这些实体被称为对象(,object,),然后围绕这些实体建立数据和函数,1.2.2,什么是面向对象程序设计?,面向对象程序设计(,OOP,)技术汲取了结构化程序设计中好的思想,并将这些思想与一些新的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。,在面向对象的程序设思想中,将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。,一个对象就是已定义的某个类型的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。,1.2.3,OOP,中的基本概念,对象(,Object,),类(,Class,),数据抽象(,Data abstraction,),继承(,Inheritance,),动态绑定(,Dynamic binding,),数据封装(,Data encapsulation,),多态性(,Polymorphism,),消息传递(,Message passing,),对象,在一个面向对象的系统中:对象是运行期的基本实体。它可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。在面向对象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。对象在内存中占有一定空间,并且具有一个与之关联的地址。,当一个程序运行时,对象之间通过互发消息来相互作用。例如,程序中包含一个“,customer”,对象和一个“,account”,对象,而,customer,对象可能会向,account,对象发送一个消息,查询其银行帐目。每个对象都包含数据以及操作这些数据的代码函数或方法。即使不了解彼此的数据和代码的细节,对象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的类型。,类,对象包含数据以及操作这些数据的代码。一个对象所包含的所有数据和代码可以通过类来构成一个用户定义的数据类型。事实上,对象就是类类型(,Class Type,)的变量。一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。,类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。比如创建一个类对象的语法和创建一个整数对象的语法相同的。如果,Fruit,被定义为一个类,那么语句,Fruit apple;,就创建了一个,Fruit,类的对象,apple,封装,把数据和函数包装在一个单独的单元(称为类)的行为称为,封装,。数据封装是类的最典型特点。数据不能被外界访问,只能被封装在同一个类中的函数访问。这些函数提供了对象数据和程序之间的接口。避免数据被程序直接访问的概念被称为“,数据隐藏,”。,封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。,在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。,继承,继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。例如,知更鸟属于飞鸟类,也属于鸟类。就像下图中描绘的那样,这种分类的原则是,每一个子类都具有父类的公共特性。,Class Bird,String type;,Public move,.,Class flyBird inherit from Bird,String Name;,Publice fly ,在,OOP,中,继承的概念很好的支持了代码的重用性(,reusability,),也就是说,我们可以向一个已经存在的类中添加新的特性,而不必改变这个类。这可以通过从这个已存在的类派生一个新类来实现。这个新的类将具有原来那个类的特性,以及新的特性。而继承机制的魅力和强大就在于它允许程序员利用已经存在的类(接近需要,而不是完全符合需要的类),并且可以以某种方式修改这个类,而不会影响其它的东西。,注意,每个子类只定义那些这个类所特有的特性。而如果没有按级分类,每类都必须显式的定义它所有的特性。,多态,多态是,OOP,的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。比如说加法操作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字符串。,OOP,的优点,通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;,我们可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;,数据隐藏的概念帮助程序员保护程序免受外部代码的侵袭;,允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;,OOP,的优点,允许将问题空间中的对象直接映射到程序中;,基于对象的工程可以很容易的分割为独立的部分;,以数据为中心的设计方法允许我们抓住可实现模型的更多细节;,面向对象的系统很容易从小到大逐步升级;,对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;,更便于控制软件复杂度。,1.3,组件式,GIS,(,ComGIS,),组件技术,组件式,GIS,1.3.1,组件技术,在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。组件间的接口通过一种与平台无关的语言,IDL,(,InterfaceDefineLanguage,)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。早期的类库,提供的是原代码级的重用,只适用于比较小规模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于,C,之类的语言,可以在各种开发语言和开发环境中使用。,软件重用技术,COM,与,DCOM,COM,是组件式对象模型,(Component Object Model),的英文缩写,是组件之间相互接口的规范,是,OLE(Object Linking & Embedding),和,ActiveX,共同的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互。,COM,不是一种面向对象的语言,而是一种与源代码无关的二进制标准。,COM,所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为“接口”的机制来进行通信。,COM,本质上是客户,/,服务器模式。客户(通常是应用程序)请求创建,COM,对象并通过,COM,对象的接口操纵,COM,对象。服务器根据客户的请求创建并管理,COM,对象。客户和服务器这两种角色是相对的。,DCOM,基于分布式环境下的,COM,被称作,DCOM(Distribute COM,,分布式组件对象模型,),。,DCOM,是,ActiveX,的基础,它实现了,COM,对象与远程计算机上的另一个对象之间直接进行交互,。,ActiveX,与,ActiveX,控件,ActiveX,是,Microsoft,提出的一组基于,COM,(,Component Object Model,,组件对象模型)规范使得软件组件在网络环境中进行交互的技术集。它与具体的编程语言无关。,作为针对,Internet,应用开发的技术,,ActiveX,被广泛应用于,WEB,服务器以及客户端的各个方面。同时,,ActiveX,技术也被 用于方便地创建普通的桌面应用程序,ActiveX,的内容,ActiveX,控件(,ActiveX Control,):,用于向,WEB,页面、,Microsoft Word,等支持,ActiveX,技术的容器(,Container,)中插入,COM,对象;,ActiveX,文档(,ActiveX Document,):,用于在,Web Browser,或者其它支持,ActiveX,的容器中浏览复合文档(非,HTML,文档),例如,Microsoft Word,文档、,Microsoft Excel,文档或者用户自定义的文档等,ActiveX,的内容,ActiveX,脚本,(ActiveX Scripting,),用于从客户端或者服务器端操纵,ActiveX,控件和,Java,程序、传递数据以及协调它们之间的操作等;,ActiveX,服务器框架(,ActiveX Server Framework,):,提供了一系列针对,Web,服务器应用程序设计各个方面的函数及其封装类,诸如服务器过滤器、,HTML,数据流控制等;,ActiveX,控件,桌面用的、基于,COM,的组件叫做,ActiveX,控件。所谓,ActiveX,控件不过是遵从一定的标准、与客户端交互的,COM,对象而已,是建立在,COM,标准上的独立的软件元件,提供给用户应用接口,发送相应的事件,开发者则可以截取这些事件,执行相应的功能。,ActiveX,控件开发端和使用端是完全独立的,可以用,Delphi,、,VB,等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境中。,一个或多个,ActiveX,控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展名是,OCX,。,ActiveX,控件的组成,PME,模型,PME,模型,Property,属性,Method,方法,Event,事件,一个,ActiveX,控件由它的一些成员组成:属性,方法以及事件,P,:属性 是用来描述和反映对象特征的参数,用来保存对象的数据,M,:方法是控件内部可调用的用以完成特定操作的过程或函数,E,:事件是,VB,预先定义的,对象能识别的动作。,事件:,Click,DblClick,MouseDown.,属性:,List(Map X, MapObjects ,ArcObjects) ,Visiable,方法:,AddItem,,,Refresh,,,Clear,ListBox,ListBox,控件显示项目列表,从其中可以选择一项或多项。如果项目总数超过了可显示的项目数,就自动在,ListBox,控件上添加滚动条。,ActiveX,与,ActiveX,控件的区别,ActiveX,不等同于,ActiveX,构件,从上面的介绍可知,,ActiveX,是一个很宽的技术家族的标识,而,ActiveX,构件只是那个家族的一个特定产品。,1.3.2,组件式,GIS,组件式软件技术已经成为当今软件技术的潮流之一,为了适应这种技术潮流,,GIS,软件象其他软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来。无疑,组件式,GIS,技术将给整个,GIS,技术体系和应用模式带来巨大影响,组件式,GIS,基本思想是把,GIS,的各大功能模块划分为几个,控件,,每个控件完成不同的功能。各个,GIS,控件之间,以及,GIS,控件与其它非,GIS,控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的,GIS,应用。,控件如同一堆各式各样的积木,他们分别实现不同的功能,(,包括,GIS,和非,GIS,功能,),,根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。,组件式,GIS,系统的特点,小巧灵活、价格便宜,开发简捷,大众化,应用及评价,软件的构件化已成为软件技术发展的潮流。基于,DCOM,的,ActiveX,构件实现,已成为软件工业的一种标准。伴随着未来其它非,Windows,平台对,ActiveX,的支持,,ActiveX,构件化的,GIS,软件系统将对,GIS,的体系结构和,GIS,将来的应用前景产生深远影响。,组件,GIS,的不足,与专业的,GIS,客户端软件相比,采用构件技术不可避免的带来效率上的相对低下,这在访问超大空间数据(如大数据量的遥感图象)的时候表现得尤为明显;,支持的空间数据量有限;,支持的功能有限,由于是构件,只覆盖了,GIS,系统的部分功能,于是对于特殊领域,它就显得无能为力;,组件式,GIS,开发平台的结构,组件式,GIS,开发平台通常可设计为三级结构,基础组件,高级通用组件,行业组件,基础组件,面向空间数据管理,提供基本的交互过程,并能以灵活的方式与数据库系统连接;,高级通用组件,由基础组件构造而成,面向通用功能,简化用户开发过程,如显示工具组件、选择工具组件、编辑工具组件、属性浏览器组件等等。它们之间的协同控制消息都被封装起来。这级组件经过封装后,使二次开发更为简单。如一个编辑查询系统,若用基础平台开发,需要编写大量的代码,而利用高级通用组件,只需几句程序就够了。,行业性组件,抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。以,GPS,监控为例。对于,GPS,应用,除了需要地图显示、信息查询等一般的,GIS,功能外,还需要特定的应用功能,如动态目标显示、目标锁定、轨迹显示等。这些,GPS,行业性应用功能组件被封装起来后,开发者的工作就可简化为设置显示目标的图例、轨迹显示的颜色、锁定的目标,以及调用、接受数据的方法等。,GIS,组件的功能,空间数据获取,坐标转换,图形编辑,数据存储,数据查询,数据分析,制图表示,.,可以想象要把这些所有的功能放在一个控件中几乎是不可能的,即使实现也会带来系统效率方面的低下。一般可以认为,GIS,组件的设计主要遵循应用领域的需求。例如,ESRI,的,MapObjects,就是以空间数据访问、查询、制图为主要目标的,GIS,组件。,GIS,组件产品,GIS,组件的代表作应首推,MapObjects,以及,MapX,。其中,MapObjects,由全球最大的,GIS,厂商,ESRI(,美国环境系统研究所,),推出;,MapX,由著名的桌面,GIS,厂商美国,MapInfo,公司推出。,功能,MapObjects,MapX,显示的地图数据格式,Arcview,的,SHP,、,ARC/INFO,的,coverage,、,SDE,图层,MapInfo,的数据格式,叠加栅格图像,有,对地图的常用操作,放大、缩小、漫游等,图层控制,增加、移除、设置当前层,属性数据绑定,有,地图信息查询方式,1.,通过鼠标选取特征,;2.,通过,SQL,查找特征,;3.,通过空间操作选取要素,专题地图,较弱,有,GPS,集成,有,用户绘图图层,无,有,生成,/,编辑地图对象,较弱,地图标注,有,地图符号化,较弱,较强,分析功能,有,?,地理编码,有,可使用的开发语言,VC,、,VB,、,PowerBuilder,、,Delphi,、,Access,等,VC,、,VB,、,PowerBuilder,、,Delphi,、,LotusNotes,等,本章回顾,GIS,的三种开发模式,基本概念:类与对象,控件对象的属性、方法、事件,什么是组件式,GIS,,其功能及特点,你所了解的组件,GIS,产品有哪些,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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