为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

gis二次开发概述

2014-01-17 15页 pdf 97KB 40阅读

用户头像

is_285327

暂无简介

举报
gis二次开发概述 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 1 Chapter 1. GIS 二次开发概述 地理信息系统根据其内容可分为两大基本类型:一是应用型地理信息系统,以某一专业、领 域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统;二是工具型地理信息系 统,也就是 GIS工具软件包,如 ARC/INFO等,具有空间数据输入、存储、处理、分析和输出等 GIS基本功能。随着地理信息系统应用领域的扩展,应用型 GIS的开发工作日显重要。如何针对 不同的应用目标,高效地开发出...
gis二次开发概述
第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 1 Chapter 1. GIS 二次开发概述 地理信息系统根据其内容可分为两大基本类型:一是应用型地理信息系统,以某一专业、领 域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统;二是工具型地理信息系 统,也就是 GIS工具软件包,如 ARC/INFO等,具有空间数据输入、存储、处理、和输出等 GIS基本功能。随着地理信息系统应用领域的扩展,应用型 GIS的开发工作日显重要。如何针对 不同的应用目标,高效地开发出既合乎需要又具有方便美观丰富的界面形式的地理信息系统,是 GIS开发者非常关心的问题。 1.1 GIS开发模式 z 独立开发 指不依赖于任何 GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所 有的算法都由开发者独立,然后选用某种程序设计语言,如 Visual C++、Delphi等,在一定 的操作系统平台上编程实现。这种方式的好处在于无须依赖任何商业 GIS工具软件,减少了开发 成本,但一方面对于大多数开发者来说,能力、时间、财力方面的限制使其开发出来的产品很难 在功能上与商业化 GIS工具软件相比,而且在购买 GIS工具软件上省下的钱可能还抵不上开发者 在开发过程中绞尽脑汁所花的代价。 z 宿主型二次开发 指基于 GIS平台软件上进行应用系统开发。大多数 GIS平台软件都提供了可供用户进行二次 开发的脚本语言,如 ESRI的 ArcView提供了 Avenue语言,MapInfo公司的MapInfo Professional 提供了 MapBasic 语言等等。用户可以利用这些脚本语言,以原 GIS 软件为开发平台,开发出自 己的针对不同应用对象的应用程序。这种方式省时省心,但进行二次开发的脚本语言,作为编程 语言,功能极弱,用它们来开发应用程序仍然不尽如人意,并且所开发的系统不能脱离 GIS平台 软件,是解释执行的,效率不高。 z 基于 GIS组件的二次开发 大多数 GIS软件产商都提供商业化的 GIS组件,如 ESRI 公司的MapObjects、MapInfo公司 的MapX等,这些组件都具备 GIS的基本功能,开发人员可以基于通用软件开发工具尤其是可视 化开发工具,如 Delphi、Visual C++、Visual Basic、Power Builder等为开发平台,进行二次开发。 利用 GIS 工具软件生产厂家提供的建立在 OCX 技术基础上的 GIS 功能控件,如 ESRI 的 MapObjects、MapInfo公司的MapX等,在 Delphi等编程工具编制的应用程序中,直接将 GIS功 能嵌入其中,实现地理信息系统的各种功能 z 三种实现方式的分析与比较 由于独立开发难度太大,单纯二次开发受 GIS工具提供的编程语言的限制差强人意,因此结 合 GIS工具软件与当今可视化开发语言的集成二次开发方式就成为 GIS应用开发的主流。它的优 点是既可以充分利用 GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发 语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且 使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 2 可靠性好、易于移植、便于维护。尤其是使用 OCX 技术利用 GIS 功能组件进行集成开发,更能 表现出这些优势。 由于上述优点,集成二次开发正成为应用 GIS开发的主流方向。这种方法唯一的缺点是前期 投入比较大,需要同时购买 GIS工具软件和可视化编程软件,但“工欲善其事,必先利其器”,这 种投资值得。 目前许多软件公司都开发了很多 ActiveX 控件,合理选择和运用现成的控件,减少了开发者 的编程工作量,使开发者避开某些应用的具体编程,直接调用控件,实现这些具体应用,不仅可 以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵活、简便。 1.2 面向对象的开发 (OOP: Object Oriented Programmin- g) 1.2.1 面向对象程序设计模式 发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点。OOP把数 据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。它将数据和操作这些数据的 函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。OOP允许我们将问题分解为 一系列实体——这些实体被称为对象(object),然后围绕这些实体建立数据和函数。面向对象程 序设计中的数据和函数的组织结构如图 4所示。 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 3 1.2.2 什么是面向对象程序设计? 面向对象程序设计(OOP)技术汲取了结构化程序设计中好的思想,并将这些思想与一些新 的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。通常,在面向对象的 程序设计风格中,你会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数 据和函数。同时,你会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型 的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。 1.2.3 面向对象程序设计中的基本概念 “面向对象”作为一个术语,在不同的人群中有着不同的解释。因此,了解一些在面向对象 程序设计中广泛应用的概念是必须的。本节我们讨论以下这些内容: 1、对象(Object) 2、类(Class) 3、数据抽象(Data abstraction) 4、继承(Inheritance) 5、动态绑定(Dynamic binding) 6、数据封装(Data encapsulation) 7、多态性(Polymorphism) 8、消息传递(Message passing) z 对象 在一个面向对象的系统中,对象是运行期的基本实体。它可以用来表示一个人或者说一个银 行帐户,一张数据表格,或者其它什么需要被程序处理的东西。它也可以用来表示用户定义的数 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 4 据,例如一个向量,时间或者列表。在面向对象程序设计中,问题的分析一般以对象及对象间的 自然联系为依据。如前所述,对象在内存中占有一定空间,并且具有一个与之关联的地址,就像 Pascal中的 record和 C中的结构一样。 当一个程序运行时,对象之间通过互发消息来相互作用。例如,程序中包含一个“customer” 对象和一个“account”对象,而 customer 对象可能会向 account 对象发送一个消息,查询其银行 帐目。每个对象都包含数据以及操作这些数据的代码。即使不了解彼此的数据和代码的细节,对 象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的 类型,虽然不同的人会以不同的方法实现它们。 z 类 我们刚才提到,对象包含数据以及操作这些数据的代码。一个对象所包含的所有数据和代码 可以通过类来构成一个用户定义的数据类型。事实上,对象就是类类型(class type)的变量。一 旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的 类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。例如,芒果、苹果和桔子都是 fruit 类的对象。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为 相同。比如创建一个类对象的语法和创建一个整数对象的语法一模一样。如果 fruit被定义为一个 类,那么语句 fruit mango; 就创建了一个 fruit类的对象 mango。 z 数据抽象和封装 把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典型特 点。数据不能被外界访问,只能被封装在同一个类中的函数访问。这些函数提供了对象数据和程 序之间的接口。避免数据被程序直接访问的概念被称为“数据隐藏”。 抽象指仅表现核心的特性而不描述背景细节的行为。类使用了抽象的概念,并且被定义为一 系列抽象的属性如尺寸、重量和价格,以及操作这些属性的函数。类封装了将要被创建的对象的 所有核心属性。因为类使用了数据抽象的概念,所以它们被称为抽象数据类型(ADT)。 z 封装 封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。 简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。 在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方 式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用 了对象的私有部分。 z 继承 继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。 例如,知更鸟属于飞鸟类,也属于鸟类。就像图 5中描绘的那样,这种分类的原则是,每一个子 类都具有父类的公共特性。 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 5 在 OOP中,继承的概念很好的支持了代码的重用性(reusability),也就是说,我们可以向一 个已经存在的类中添加新的特性,而不必改变这个类。这可以通过从这个已存在的类派生一个新 类来实现。这个新的类将具有原来那个类的特性,以及新的特性。而继承机制的魅力和强大就在 于它允许程序员利用已经存在的类(接近需要,而不是完全符合需要的类),并且可以以某种方式 修改这个类,而不会影响其它的东西。 注意,每个子类只定义那些这个类所特有的特性。而如果没有按级分类,每类都必须显式的 定义它所有的特性。 z 多态 多态是 OOP的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不 同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。比如说加法操 作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字符串。 图 6 演示了一个函数处理不同数量、不同类型的参数。就像某个单词在不同的上下文中具有 不同的含义 多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对 象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。多 态在实现继承的过程中被广泛应用。 面向对象程序设计语言支持多态,术语称之为“one interface multiple method(一个接口,多 个实现)”。简单来说,多态机制允许通过相同的接口引发一组相关但不相同的动作,通过这种方 式,可以减少代码的复杂度。在某个特定的情况下应该作出怎样的动作,这由编译器决定,而不 需要程序员手工干预。 在多函数程序中,许多重要的数据被声明为全局变量,这样它们才可以被所有的函数访问。 每个函数又可以具有它自己的局部变量。全局变量很容易被某个函数不经意之间改变。而在一个 大程序中,很难分辨每个函数都使用了哪些变量。如果我们需要修改某个外部数据的结构,我们 就要修改所有访问这个数据的函数。这很容易导致 bug的产生。 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 6 在结构化程序设计中,另一个严重的缺陷是不能很好的模拟真实世界的问题。这是因为函数 都是面向过程的,而不是真正的对应于问题中的各个元素。 面向过程的程序设计的一些特点如下: ·强调做(算法); ·大程序被分隔为许多小程序,这些小程序称为函数; ·大多数函数共享全局数据; ·数据开放的由一个函数流向另一个函数。函数把数据从一种形式转换为另一种形式。 采用由上至下的程序设计方法。 z 动态绑定 绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定的意思是,与给定的过程 调用相关联的代码只有在运行期才可知。它与多态和继承的联系极为紧密。一个多态引用的函数 调用决定于这个引用的动态类型。 考虑图 6中的“draw”方法。通过继承,每个对象都具备了这个过程。但是,对于不同的对 象它的算法是不同的,因此,draw过程必须在每一个类中重新定义。在运行期,当前引用对象所 对应的代码将被调用。 z 消息传递 一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。因此,在面向对象程序 设计语言中,程序设计的主要如下: 1、创建类,这些类定义了对象及其行为; 2、由类定义创建对象; 3、建立对象之间的通讯。 对象之间通过收发信息相互沟通,这一点类似于人与人之间的信息传递。信息传递的概念使 得真实世界的直接模拟更易于和建立系统交流。 对于某个特定对象来说,消息就是请求执行某个过程,因此,消息的接收对象会调用一个函 数(过程),以产生预期的结果。传递的消息的内容包括接收消息的对象的名字,需要调用的函数 的名字,以及必要的信息。 对象就有一个生命周期。它们可以被创建和销毁。只要对象正处于其生存期,就可以与其进 行通讯。 1.2.4 OOP的优点 OOP具有许多优点,无论是对于程序设计者或者用户来说都是如此。面向对象为软件产品扩 展和质量保证中的许多问题提供了解决办法。这项技术能够大大提高程序员的生产力,并可提高 软件的质量以及降低其维护费用。其主要的优点陈列于下: 1、 通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途; 2、 我们可以在的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建 我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率; 3、 数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭; 4、 允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰; 5、 允许将问题空间中的对象直接映射到程序中; 6、 基于对象的工程可以很容易的分割为独立的部分; 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 7 7、 以数据为中心的设计方法允许我们抓住可实现模型的更多细节; 8、 面向对象的系统很容易从小到大逐步升级; 9、 对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单; 10、 更便于控制软件复杂度。 当需要将以上所说的所有特性有机的结合于一个面向对象系统中,它们之间的相对重要性就 取决于工程的类型和程序员的喜好。为了获得上述的某些优势,必须考虑很多事情。例如,对象 库必须可以被重用。技术还在不停的发展,现有的产品也会很快的更新换代。如果重用没有能够 实现,那么就需要进行严格的控制和管理。 易于使用的开发软件往往难以编写。面向对象程序设计工具有望解决这个问题。 1.3 组件式 GIS(ComGIS) 1.3.1 组件技术 组件技术的兴起 目前,在软件开发领域,一场新的革命正在悄悄兴起,这是由日趋成熟的组件技术引发的。 几年以前,当微软公司首先使用 OLE的时候,其初衷是为了增强软件的互操作性。然而在使用过 程中,人们逐渐认识到这一技术背后的实质性内容和它在软件开发中所扮演的重要角色。组件技 术以前所未有的方式提高了软件产业的生产效率,这一点已逐步成为软件开发人员的共识。传统 的 C/S结构、群件、中间件等大型软件系统的构成形式,都将在组件的基础上重新构造。 组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。在组件技术的概念模 式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出 特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。组件间的接口通过一种与平 台无关的语言 IDL(InterfaceDefineLanguage)来定义,而且是二进制兼容的,使用者可以直接调 用执行模块来获得对象提供的服务。早期的类库,提供的是原代码级的重用,只适用于比较小规 模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于 C++之类的语言,可以在 各种开发语言和开发环境中使用。 由于组件技术的出现,软件产业的形式也随之发生了很大的变化。大量组件生产商涌现出来, 并推出各具特色的组件产品;软件集成商则利用适当的组件快速生产出用户需要的某些应用系统; 大而全的通用产品逐步减少;很多相对较为专业,但用途广泛的软件,如 GIS、语音识别系统等, 都以组件的形式组装和扩散到一般的软件产品中。 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 8 0.1.1.1 COM与 DCOM COM是组件式对象模型(Component Object Model)的英文缩写,是组件之间相互接口的规范, 是 OLE(Object Linking & Embedding)和 ActiveX共同的基础,其作用是使各种软件构件和应用软 件能够用一种统一的标准方式进行交互。COM不是一种面向对象的语言,而是一种与源代码无关 的二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之 后,模块之间就可以通过称之为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整 的安全机制,并扩展到分布式环境。它定义了软件组件的接口 COM 本质上仍然是客户/服务器模式。客户(通常是应用程序)请求创建 COM 对象并通过 COM对象的接口操纵 COM对象。服务器根据客户的请求创建并管理 COM对象。客户和服务器 这两种角色并不是绝对的。 基于分布式环境下的 COM被称作 DCOM(Distribute COM,分布式构件对象模型)。 DCOM是 ActiveX的基础,它实现了 COM对象与远程计算机上的另一个对象之间直接进行 交互。DCOM规范定义了分散对象创建和对象间通信的机制,规范本身并不依赖于任何特定的编 程语言和操作系统,但目前该标准只在Microsoft Windows平台实现,这就意味着其它的操作系统 平台(如 UNIX)目前还不支持 ActiveX。 DCOM的实现采用了 DCOM库的形式,当 DCOM客户对象需要 DCOM服务器对象的服务时, DCOM 库负责生成 DCOM 服务器对象并在客户对象和服务器对象之间建立初始连接,一旦返回 服务器对象指针,DCOM库就不再参与客户对象与服务器对象之间的工作,两个对象之间可以自 由地进行通信。 DCOM 接口实际上时逻辑上和语义上相关联的函数集。服务器对象通过 DCOM 接口为客户对象 提供服务,客户对象不需了解服务器对象的内部数据表示。接口可以看成两个软件构件之间的一 种协议,协议表明服务器对象为客户对象提供一种且仅此一种服务。接口采用全局唯一标识符 (GUID)来保证服务的唯一性。通常的 DCOM 构件提供多种服务,那么服务器对象为每一种服 务实现一个接口。当客户对象指针指向相应的服务器对象时,它就激活服务器对象接口的相应函 数。具体过程是:客户对象通过 DCOM对象必须支持的 IunKnown接口获得其它接口的指针。客 户对象也许并不知道服务器对象的每个接口,但这并不妨碍客户对象对服务器对象的使用,它只 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 9 用它知道的接口。当客户对象用完服务器对象的服务时,它会通知服务器对象,服务器对象就释 放它所占有的内存。 DCOM的好处是显而易见的。由于接口的定义和功能保持不变,DCOM构件开发者可以改变接口 功能、为对象增加新功能、用更好的对象来代替原有对象,而建立在构件基础上的应用程序几乎 不用修改,大大提高了代码的重用性。 0.1.1.2 ActiveX与 ActiveX控件 ActiveX z ActiveX是Microsoft提出的一组基于 COM(Component Object Model,部件对象模型)规范 使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对 Internet 应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX 技术也被 用于方便地创建普通的桌面应用程序 z ActiveX的内容: ‹ ActiveX控制(ActiveX Control):用于向WEB页面、Microsoft Word等支持 ActiveX 的容器(Container)中插入 COM对象; ‹ ActiveX文档(ActiveX Document):用于在Web Browser或者其它支持 ActiveX 的容器中浏览复合文档(非 HTML 文档),例如 Microsoft Word 文档、Microsoft Excel 文档或者用户自定义的文档等; ‹ ActiveX脚本描述(ActiveX Scripting):用于从客户端或者服务器端操纵 ActiveX 控件和 Java程序、传递数据以及协调它们之间的操作等; ‹ ActiveX服务器框架(ActiveX Server Framework):提供了一系列针对Web服务器应用 程序设计各个方面的函数及其封装类,诸如服务器过滤器、HTML数据流控制等; ‹ 在 Internet Explorer中内置 Java虚拟机(Java Virtual Machine),从而使 Java Applet能够 在 Internet Explorer上运行,并可以与 ActiveX控制通过脚本描述语言进行通信。 桌面用的、基于 COM的组件叫做 ActiveX控件。所谓 ActiveX控件不过是遵从一定的标 准、与客户端交互的 COM 对象而已。基于组件的应用开发,其方法和组装电子装置一样,可以用 已制作好的组件部件来构筑应用。这确实是一项很令人神往的技术。虽然说起来高深,但随着 ActiveX的广泛应用,越来越多的编程工具都支持创建 ActiveX控件了。这其中就包括了 VB。 ActiveX控件 ActiveX控件是充分利用 ActiveX(基于 COM)技术的自定义控件,是基于与应用程序无关的思想 而设计的,其目标是提供一种面向对象、与编程语言无关、可以在应用程序之间互相访问对象地 机制。 ActiveX控件是建立在 COM标准上的独立的软件元件,提供给用户应用接口,发送相应的事件, 开发者则可以截取这些事件,执行相应的功能。ActiveX 控件开发端和使用端是完全独立的,可 以用 Delphi、VB等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境中。 一个或多个 ActiveX 控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展名 是 OCX。 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 10 ActiveX控件的组成 一个 ActiveX控件由它的一些成员组成:属性,方法以及事件 PME 模型 Property 属性 Method方法 Event 事件 z P:属性 是用来描述和反映对象特征的参数,用来保存对象的数据 z M:方法是控件内部可调用的用以完成特定操作的过程或函数 z E:事件是 VB预先定义的对象能识别的动作。 ActiveX与 ActiveX控件的区别 ActiveX不等同于 ActiveX构件,从上面的介绍可知,ActiveX是一个很宽的技术家族的标识,而 ActiveX构件只是那个家族的一个特定产品。 1.3.2 组件式 GIS 组件式软件技术已经成为当今软件技术的潮流之一,为了适应这种技术潮流,GIS 软件象其 他软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发 功能的软件,过渡到提供组件由用户自己再开发的方向上来。无疑,组件式 GIS技术将给整个 GIS 技术体系和应用模式带来巨大影响。 z 组件式 GIS 基本思想是把 GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个 GIS控 件之间,以及 GIS控件与其它非 GIS控件之间,可以方便地通过可视化的软件开发工具集成起来, 形成最终的 GIS 应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括 GIS 和非 GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。 z 组件式 GIS系统的特点 (1)、 小巧灵活、价格便宜 (2)、 无须专门 GIS开发语言,直接嵌入MIS开发工具 (4)、 开发简捷 把 GIS的功能适当抽象,以组件形式供开发者使用,将会带来许多传统 GIS工具无法比拟的优点。 (1)、 小巧灵活、价格便宜 由于传统 GIS结构的封闭性,往往使得软件本身变得越来越庞大,不同系统的交互性差, 系统的开发难度大。在组件模型下,各组件都集中地实现与自己最紧密相关的系统功能,用 户可以根据实际需要选择所需控件,最大限度地降低了用户的经济负担。。组件化的 GIS平台 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 11 集中提供空间数据管理能力,并且能以灵活的方式与数据库系统连接。在保证功能的前提下, 系统表现得小巧灵活,而其价格仅是传统 GIS开发工具的十分之一,甚至更少。这样,用户 便能以较好的性能价格比获得或开发 GIS应用系统。 (2)、 无须专门 GIS开发语言,直接嵌入MIS开发工具 传统 GIS往往具有独立的二次开发语言,对用户和应用开发者而言存在学习上的负担。 而且使用系统所提供的二次开发语言,开发往往受到限制,难以处理复杂问题。而组件式 GIS 建立在严格的标准之上,不需要额外的 GIS二次开发语言,只需实现 GIS的基本功能函数, 按照Microsoft的 ActiveX控件标准开发接口。这有利于减轻 GIS软件开发者的负担,而且增 强了 GIS软件的可扩展性。GIS应用开发者,不必掌握额外的 GIS开发语言,只需熟悉基于 Windows平台的通用集成开发环境,以及 GIS各个控件的属性、方法和事件,就可以完成应 用系统的开发和集成。目前,可供选择的开发环境很多,如 Visual C++、Visual Basic、Visual FoxPro、Borland C++、Delphi、C++ Builder以及 Power Builder等都可直接成为 GIS或 GMIS 的优秀开发工具,它们各自的优点都能够得到充分发挥。这与传统 GIS专门性开发环境相比, 是一种质的飞跃。 (3)、 强大的 GIS功能 新的 GIS 组件都是基于 32 位系统平台的,采用 InProc 直接调用形式,所以无论是管理 大数据的能力还是处理速度方面均不比传统GIS软件逊色。小小的GIS组件完全能提供拼接、 裁剪、叠合、缓冲区等空间处理能力和丰富的空间查询与分析能力。 (4)、 开发简捷 由于 GIS组件可以直接嵌入MIS开发工具中,对于广大开发人员来讲,就可以自由选用 他们熟悉的开发工具。而且,GIS组件提供的 API形式非常接近MIS工具的模式,开发人员 可以像管理数据库表一样熟练地管理地图等空间数据,无须对开发人员进行特殊的培训。在 GIS 或 GMIS 的开发过程中,开发人员的素质与熟练程度是十分重要的因素。这将使大量的 MIS开发人员能够较快地过渡到 GIS或 GMIS的开发工作中,从而大大加速 GIS的发展。 (5)、 更加大众化 组件式技术已经成为业界标准,用户可以象使用其他 ActiveX控件一样使用 GIS控件, 使非专业的普通用户也能够开发和集成GIS应用系统,推动了GIS大众化进程。组件式GIS 的 出现使 GIS不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的 的可视化工具。 z 组件式 GIS开发平台的结构 组件式 GIS开发平台通常可设计为三级结构: 基础组件 面向空间数据管理,提供基本的交互过程,并能以灵活的方式与数据库系统连接; 高级通用组件 由基础组件构造而成,面向通用功能,简化用户开发过程,如显示工具组件、选择工具组 件、编辑工具组件、属性浏览器组件等等。它们之间的协同控制消息都被封装起来。这级 组件经过封装后,使二次开发更为简单。如一个编辑查询系统,若用基础平台开发,需要 编写大量的代码,而利用高级通用组件,只需几句程序就够了。面向通用功能; 行业性组件 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 12 抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。以 GPS监控为例。对 于 GPS应用,除了需要地图显示、信息查询等一般的 GIS功能外,还需要特定的应用功能, 如动态目标显示、目标锁定、轨迹显示等。这些 GPS行业性应用功能组件被封装起来后, 开发者的工作就可简化为设置显示目标的图例、轨迹显示的颜色、锁定的目标,以及调用、 接受数据的方法等。 z GIS组件的构成 GIS软件的模型包含若干功能单元: — 空间数据获取 — 坐标转换 — 图形编辑 — 数据存储 — 数据查询 — 数据分析 — 制图表示 — ……. 可以想象要把这些所有的功能放在一个控件中几乎是不可能的,即使实现也会带来系统效率上的 低下。一般可以认为 GIS构件的设计主要遵循应用领域地需求。例如 ESRI地MapObjects就是以 空间数据访问、查询、制图为主要目标的 GIS构件。 z GIS组件产品 GIS组件的代表作应首推MapObjects以及MapX。其中MapObjects由全球最大的GIS厂商ESRI(美 国环境系统研究所)推出;MapX由著名的桌面 GIS厂商美国MapInfo公司推出。另外还有加拿大 阿波罗科技集团的 TITAN等。下表是MapObjects和MapX的主要功能对比。 功能 MapObjects MapX 显示的地图数据格式 Arcview的 SHP、ARC/INFO 的 coverage、SDE图层 MapInfo的数据格式 叠加栅格图像 有 对地图的常用操作 放大、缩小、漫游等 图层控制 增加、移走、设置当前层 属性数据绑定 有 地图信息查询方式 1.通过鼠标选取特征 2.通过 SQL查找特征 3.通过空间操作选取特征 专题地图 较弱 有 GPS集成 有 用户绘图图层 无 有 生成/编辑地图对象 较弱 地图标注 有 地图符号化 较弱 较强 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 13 分析功能 有 ? 地理编码 有 可使用的开发语言 VC、VB、PowerBuilder、 Delphi、Access等 VC、 VB、 PowerBuilder、 Delphi、LotusNotes等 表MapObjects和MapX的主要功能对比 应用及评价 软件的构件化已成为软件技术发展的潮流。基于 DCOM的 ActiveX构件实现,已成为软件工业的 一种标准。伴随着未来其它非Windows平台对 ActiveX的支持,ActiveX构件化的 GIS软件系统 将对 GIS的体系结构和 GIS将来的应用前景产生深远影响。 虽然采用 GIS构件在开发上有许多优势,但是不可避免的也存在一些功能上的欠缺和技术上的不 成熟,主要包括以下几个方面: — 与专业的 GIS客户端软件相比,采用构件技术不可避免的带来效率上的相对低下,这 在访问超大空间数据(如大数据量的遥感图象)的时候表现得尤为明显; — 支持的空间数据量有限; — 支持的功能有限,由于是构件,只覆盖了 GIS系统的部分功能,于是对于特殊领域, 它就显得无能为力; z MapInfo相关技术 MapInfo公司及其产品 美国 MapInfo 公司致力于为用户提供先进的数据可视化、信息地图化技术,并将这些技术与主流 业务系统集成,提供完整的解决。MapInfo 吸取了传统 GIS 系统的精华,并借助于计算机技 术的发展,及时将 GIS 概念从中大型计算机的专用工作站上介绍至普通桌面 PC 上,开创了崭新 桌面地图信息系统。MapInfo公司的主要系列产品有: ‹ 桌面地理信息系统MapInfo Professional ‹ 网络解决方案MapInfo ProSerev ‹ 数据库服务器产品MapInfo SpatialWare ‹ GIS组件:MapInfo ActiveX ‹ 开发工具MapInfo MapBasic z 主要技术特点 (1)、 以表(Table)的形式组织信息 每一个表都是一组 MapInfo 文件,这些文件组成了地图文件和数据库文件。为使用 MapInfo,就需要有组成表的用户数据和地图文件。这些文件可以来自MapInfo或者由用户创 建。用户要想在MapInfo中工作,就必须打开一个或多个表。 MapInfo 通过表的形式将数据与地图有机地结合在一起。当用户在 MapInfo 中打开数据 文件时,MapInfo 将创建一个表。这个表至少由两个独立的文件组成,一个是包含数据结构 的文件,另一个是包含原始数据的文件。一个典型的MapInfo表将主要由*.tab、*.dat、*.wks、 *.dbf、*.xls、*.map、*.id、*.ind文件格式组成。 (2)、 图形对象 MapInfo内置的数据库管理系统是一种关系型数据库管理系统,也是用二维表组织数据。 与其它关系型数据库不同的是表结构中除可包含常用类型的属性列外,还引入一个图形对象 第 1章 GIS 二次开发 云南大学 杨克诚 kecheng@yang.com.cn 14 列(OBJ列),用于存储图形对象(如线、区域等)。MapInfo提供许多图形对象的操作接口, 利用这些接口可以生成和处理所需要的各种图形。 (3)、 地图图层化 MapInfo 是按图层组织计算机地图的。也就是说,将一幅计算机地图加工成多个层层叠 加的透明层,这个透明层就称为图层。每个图层包含了整个地图的一个不同方面。例如,第 一个图层包含省边界,第二个图层表示省府的符号,第三个图层由标注文本组成,把它们层 层叠加就形成一幅完整的地图。在创建每一个图层时,都要为其建立一张表,MapInfo 就是 通过这种方式使表与地图之间建立了联系。 也就是说,MapInfo 是以表的形式来进行管理的,每个表一般包含两部份:地图部分和 数据库(属性)部份。 (4)、 专题地图 提供多种数据可视化的专题地图,能将数据库中的信息进行直观的可视化分析。使用专 题渲染在地图上显示数据时,可以清楚地看出在数据记录中难以发现的模式或趋势,为用户 的决策提供依据。专题地图包括范围值、点密度、柱状图、等级符号、饼图和独立值六种形 式。 (5)、 内置 ODBC MapInfo内置 ODBC,支持各种关系型数据库,支持 SQL查询,从而保证了对原有数据 库的沿用和对远程数据库地访问。具备空间查询的功能扩展(如缓冲区、叠加等),采用数据 仓库的最新技术 OLAP(Online Analytical Processing)的联机事物处理,对于应用程序实现图 形查询和表查询提供了强大的手段。 (6)、 支持多种数据格式及其转换 MapInfo 既支持数字化仪的图形输入方式,直接生成矢量图,也支持目前市场上流行的 图形图象格式。可接受 AutoCAD的 DWG、DXF标准文件格式,还可通过MIF及MID文件 与其它软件建立数据的接口。其中MIF文件内保存有图形信息,MID文件内保存有图形的属 性信息。MIF及MID文件通过MapInfo的菜单命令 Import和 Export来输入和产生。 (7)、 二次开发工具MapBasic 作为一个系统软件,MapInfo 提供了可以将其所有的功能用程序来驱动的方法,内置标 准的二次开发工具——MapBasic。MapBasic不仅与大众化的 Basic语法相一致,具有基本一 致的常用函数集(计算、字符串处理、文件 I/O、DLL 调用等),而且利用 MapBasic 语言所 提供的函数、过程和语句命令可以完成许多有关图形对象管理的复杂操作和运算。它的真正 优势在于对 MapInfo 中的 Table 及其图形对象的管理所提供的特性和强大功能。采用面向对 象及事件驱动编程 (8)、 集成二次开发能力 具有 OLE和 OLE Automation功能,可以方便地使用 Delphi、VB、VC等多种开发工具, 保证了新的应用程序与原有的应用界面保持一致,为日后的深层开发提供一个扩展空间。 其内 第 1章 GIS 二次开发 15 1.4 本章回顾 GIS的三种开发模式 基本概念:类与对象,控件对象的属性、方法、事件 什么是组件式 GIS,其功能及特点 你所了解的组件 GIS产品有哪些
/
本文档为【gis二次开发概述】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索