gis二次开发-使用mapobjects.ppt
《gis二次开发-使用mapobjects.ppt》由会员分享,可在线阅读,更多相关《gis二次开发-使用mapobjects.ppt(46页珍藏版)》请在三一办公上搜索。
1、GIS二次开发使用MapObjects(L1),第1章GIS 二次开发概述,1.1 GIS 开发模式1.2 面向对象程序设计(OOP)1.3 组件GIS技术,GIS 软件类型,GIS平台软件提供全部的地理信息系统处理功能,完成数据处理、空间分析、信息查询、专题地图等功能如:ArcGIS,MapInfo Professional,MAPGISGIS应用软件针对不同的应用领域和行业,综合电子地图和信息管理系统的特点如:昆明市110警务处理系统,XX市综合管线地理信息系统,XX公司物流配送系统,1.1 GIS开发模式,独立开发模式宿主型开发模式GIS组件开发模式,独立开发模式,不依赖于任何GIS工具
2、软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C+、Delphi、等,在一定的操作系统平台上编程实现。开发周期长,软件功能相对简单,对开发者要求高,用于购买软件的费用相对节省,宿主型开发模式,基于GIS平台软件,进行应用系统开发多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,用户以原GIS软件为开发平台,利用这些脚本语言,开发出自己的针对不同应用领域的应用程序。如ArcView中的Avenue语言,MapInfo Professional的MapBasic语言开发较为容易;二次开发的脚本语言,功能较弱;
3、所开发的系统不能脱离GIS平台;是解释执行的,运行效率低;用户界面受平台软件的限制,GIS组件开发模式,建立在组件技术基础上的GIS功能组件,实现了地理信息系统的各种功能,这些组件都具备GIS的基本功能。开发人员可以基于通用软件开发工具,尤其是可视化开发工具,如:Delphi、Visual C+、Visual Basic、Power Builder等RAD工具为开发平台,进行二次开发,实现GIS功能。大多数GIS软件产商都提供商业化的GIS组件。如ESRI 公司的MapObjects、MapInfo公司的MapX等,GIS开发模式的选择,独立开发难度太大宿主型二次开发受GIS平台所提供的脚本语
4、言的限制GIS组件开发模式结合了GIS平台软件与可视化开发平台的组件开发模式的优点。利用GIS组件实现对空间数据库的管理、分析功能,又可以利用其它可视化开发平台提供的丰富的、功能强大的编程组件和环境,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的用户界面,更强大的数据库功能。可靠性好、易于移植、便于维护,学习周期较短,容易上手。成为GIS应用开发的主要方向。,1.2 面向对象程序设计(OOP)Object Oriented Programming,软件开发模式的演变和发展,1.2.1面向对象程序设计模式,OOP将问题分解为一系列实体这些实体被称为对象(
5、object),然后围绕这些实体建立数据和函数,什么是面向对象程序设计?,面向对象程序设计(OOP)技术汲取了结构化程序设计中好的思想,并将这些思想与一些新的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。在面向对象的程序设思想中,将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。一个对象就是已定义的某个类型的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。,1.2.3OOP中的基本概念,对象(Object)类(Class)数据抽象(Data abstraction)继承(Inheritance)动态绑定(Dynamic binding)数据
6、封装(Data encapsulation)多态性(Polymorphism)消息传递(Message passing),对象,在一个面向对象的系统中:对象是运行期的基本实体。它可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。在面向对象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。对象在内存中占有一定空间,并且具有一个与之关联的地址。当一个程序运行时,对象之间通过互发消息来相互作用。例如,程序中包含一个“customer”对象和一个“account”对象,而customer对象可能会向account对象发送一个消息,查询其银行帐目。每个对象都包
7、含数据以及操作这些数据的代码函数或方法。即使不了解彼此的数据和代码的细节,对象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的类型。,类,对象包含数据以及操作这些数据的代码。一个对象所包含的所有数据和代码可以通过类来构成一个用户定义的数据类型。事实上,对象就是类类型(Class Type)的变量。一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。比如创建一个类对象的语法和创建一个整数对象的语法
8、相同的。如果Fruit被定义为一个类,那么语句Fruit apple;就创建了一个Fruit类的对象apple,封装,把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典型特点。数据不能被外界访问,只能被封装在同一个类中的函数访问。这些函数提供了对象数据和程序之间的接口。避免数据被程序直接访问的概念被称为“数据隐藏”。封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同
9、级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。,继承,继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。例如,知更鸟属于飞鸟类,也属于鸟类。就像下图中描绘的那样,这种分类的原则是,每一个子类都具有父类的公共特性。,Class Bird String type;Public move.,Class flyBird inherit from BirdString Name;Publice fly,在OOP中,继承的概念很好的支持了代码的重用性(reusability),也就是说,我们可以向一个已经存在的类中添加新的特性,而不必改变这个类。
10、这可以通过从这个已存在的类派生一个新类来实现。这个新的类将具有原来那个类的特性,以及新的特性。而继承机制的魅力和强大就在于它允许程序员利用已经存在的类(接近需要,而不是完全符合需要的类),并且可以以某种方式修改这个类,而不会影响其它的东西。注意,每个子类只定义那些这个类所特有的特性。而如果没有按级分类,每类都必须显式的定义它所有的特性。,多态,多态是OOP的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。比如说加法操作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字符串。,
11、OOP的优点,通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;我们可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;数据隐藏的概念帮助程序员保护程序免受外部代码的侵袭;允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;,OOP的优点,允许将问题空间中的对象直接映射到程序中;基于对象的工程可以很容易的分割为独立的部分;以数据为中心的设计方法允许我们抓住可实现模型的更多细节;面向对象的系统很容易从小到大逐步升级;对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;更便于控制软件复
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- gis 二次开发 使用 mapobjects
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5431980.html