gis二次开发概述pdf-亚洲ca88官方网站

发布时间:2022-07-22 05:02:58 来源:亚洲ca88官方网站

  第1 章 GIS 二次开发 Chapter 1.GIS 二次开发概述 地舆信息体系根据其内容可分为两大根本类型:一是运用型地舆信息体系,以某一专业、领 域或作业为首要内容,包含专题地舆信息体系和区域归纳地舆信息体系;二是东西型地舆信息系 统,也便是GIS 东西软件包,如ARC/INFO 等,具有空间数据输入、存储、处理、剖析和输出等 GIS 根本功用。跟着地舆信息体系运用范畴的扩展,运用型GIS 的开发作业日显重要。怎么针对 不同的运用方针,高效地开宣布既符合需求又具有便利漂亮丰厚的界面办法的地舆信息体系,是 GIS 开发者十分关怀的问题。 1.1 GIS 开发办法 独立开发 指不依靠于任何GIS 东西软件,从空间数据的收集、修正到数据的处理剖析及成果输出,所 有的算法都由开发者独立规划,然后选用某种程序规划言语,如Visual C++ 、Delphi 等,在必定 的操作体系渠道上编程完结。这种办法的长处在于无须依靠任何商业GIS 东西软件,削减了开发 本钱,但一方面关于大多数开发者来说,才能、时刻、财力方面的约束使其开宣布来的产品很难 在功用上与商业化GIS 东西软件比较,并且在购买GIS 东西软件上省下的钱或许还抵不上开发者 在开发进程中费尽心机所花的价值。 宿主型二次开发 指根据GIS 渠道软件上进行运用体系开发。大多数GIS 渠道软件都供给了可供用户进行二次 开发的脚本言语,如ESRI 的ArcView 供给了Avenue 言语,MapInfo 公司的MapInfo Professional 供给了 MapBasic 言语等等。用户能够运用这些脚本言语,以原 GIS 软件为开发渠道,开宣布自 己的针对不同运用方针的运用程序。这种办法省时省心,但进行二次开发的脚本言语,作为编程 言语,功用极弱,用它们来开发运用程序仍然不尽善尽美,并且所开发的体系不能脱离GIS 渠道 软件,是解说履行的,功率不高。 根据GIS 组件的二次开发 大多数GIS 软件产商都供给商业化的GIS 组件,如ESRI 公司的MapObjects 、MapInfo 公司 的MapX 等,这些组件都具有GIS 的根本功用,开发人员能够根据通用软件开发东西尤其是可视 化开发东西,如Delphi、Visual C++ 、Visual Basic 、Power Builder 等为开发渠道,进行二次开发。 运用 GIS 东西软件出产厂家供给的树立在 OCX 技能根底上的 GIS 功用控件,如 ESRI 的 MapObjects 、MapInfo 公司的MapX 等,在Delphi 等编程东西编制的运用程序中,直接将GIS 功 能嵌入其间,完结地舆信息体系的各种功用 三种完结办法的剖析与比较 因为独立开发难度太大,单纯二次开发受GIS 东西供给的编程言语的约束差强人意,因而结 合GIS 东西软件与当今可视化开发言语的集成二次开发办法就成为GIS 运用开发的干流。它的优 点是既能够充分运用GIS 东西软件对空间数据库的办理、剖析功用,又能够运用其它可视化开发 言语具有的高效、便利等编程长处,集二者之所长,不只能大大进步运用体系的开发功率,并且 运用可视化软件开发东西开宣布来的运用程序具有更好的外观作用,更强壮的数据库功用,并且 云南大学 杨克诚 kecheng@ 1 第1 章 GIS 二次开发 可靠性好、易于移植、便于维护。尤其是运用OCX 技能运用GIS 功用组件进行集成开发,更能 体现出这些优势。 因为上述长处,集成二次开发正成为运用GIS 开发的干流方向。这种办法仅有的缺点是前期 投入比较大,需求一同购买GIS 东西软件和可视化编程软件,但“工欲善其事,必先利其器”,这 种出资值得。 现在许多软件公司都开发了许多ActiveX 控件,合理挑选和运用现成的控件,削减了开发者 的编程作业量,使开发者避开某些运用的详细编程,直接调用控件,完结这些详细运用,不只可 以缩短程序开发周期,使编程进程更简练,用户界面更友爱,能够使程序愈加灵敏、简洁。 1.2 面向方针的开发 (OOP: Object Oriented Programmin- g) 1.2.1 面向方针程序规划办法 创造面向方针程序规划办法的首要起点是补偿面向进程程序规划办法中的一些缺点。OOP 把数 据看作程序开发中的根本元素,并且不答应它们在体系中自在活动。它将数据和操作这些数据的 函数严密的衔接在一同,并维护数据不会被外界的函数意外的改动。OOP 答应咱们将问题分解为 一系列实体——这些实体被称为方针(object ),然后环绕这些实体树立数据和函数。面向方针程 序规划中的数据和函数的安排结构如图4 所示。 云南大学 杨克诚 kecheng@ 2 第1 章 GIS 二次开发 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 ) 方针 在一个面向方针的体系中,方针是运转期的根本实体。它能够用来标明一个人或许说一个银 行帐户,一张数据表格,或许其它什么需求被程序处理的东西。它也能够用来标明用户界说的数 云南大学 杨克诚 kecheng@ 3 第1 章 GIS 二次开发 据,例如一个向量,时刻或许列表。在面向方针程序规划中,问题的剖析一般以方针及方针间的 天然联络为根据。如前所述,方针在内存中占有必定空间,并且具有一个与之相关的地址,就像 Pascal 中的record 和C 中的结构相同。 当一个程序运转时,方针之间经过互发音讯来相互作用。例如,程序中包含一个“customer ” 方针和一个“account ”方针,而customer 方针或许会向account 方针发送一个音讯,查询其银行 帐目。每个方针都包含数据以及操作这些数据的代码。即便不了解相互的数据和代码的细节,对 象之间仍然能够相互作用,所要了解的仅仅方针能够承受的音讯的类型,以及方针回来的呼应的 类型,尽管不同的人会以不同的办法完结它们。 类 咱们方才说到,方针包含数据以及操作这些数据的代码。一个方针所包含的悉数数据和代码 能够经过类来构成一个用户界说的数据类型。事实上,方针便是类类型(class type )的变量。一 旦界说了一个类,咱们就能够创立这个类的多个方针,每个方针与一组数据相关,而这组数据的 类型在类中界说。因而,一个类便是具有相同类型的方针的笼统。例如,芒果、苹果和桔子都是 fruit 类的方针。类是用户界说的数据类型,但在一个程序规划言语中,它和内建的数据类型行为 相同。比方创立一个类方针的语法和创立一个整数方针的语法一模相同。假如fruit 被界说为一个 类,那么句子 fruit mango; 就创立了一个fruit 类的方针mango 。 数据笼统和封装 把数据和函数包装在一个独自的单元(称为类)的行为称为封装。数据封装是类的最典型特 点。数据不能被外界拜访,只能被封装在同一个类中的函数拜访。这些函数供给了方针数据和程 序之间的接口。避免数据被程序直接拜访的概念被称为“数据躲藏”。 笼统指仅体现中心的特性而不描绘布景细节的行为。类运用了笼统的概念,并且被界说为一 系列笼统的特色如尺度、分量和价格,以及操作这些特色的函数。类封装了将要被创立的方针的 悉数中心特色。因为类运用了数据笼统的概念,所以它们被称为笼统数据类型(ADT )。 封装 封装机制将数据和代码绑缚到一同,避免了外界的搅扰和不确定性。它相同答应创立方针。 简略的说,一个方针便是一个封装了数据和操作这些数据的代码的逻辑实体。 在一个方针内部,某些代码和(或)某些数据能够是私有的,不能被外界拜访。经过这种方 式,方针对内部数据供给了不同等级的维护,以避免程序中无关的部分意外的改动或过错的运用 了方针的私有部分。 承继 承继是能够让某个类型的方针取得另一个类型的方针的特色的办法。它支撑按级分类的概念。 例如,知更鸟归于飞鸟类,也归于鸟类。就像图5 中描绘的那样,这种分类的原则是,每一个子 类都具有父类的公共特性。 云南大学 杨克诚 kecheng@ 4 第1 章 GIS 二次开发 在OOP 中,承继的概念很好的支撑了代码的重用性(reusability ),也便是说,咱们能够向一 个现已存在的类中添加新的特性,而不用改动这个类。这能够经过从这个已存在的类派生一个新 类来完结。这个新的类将具有本来那个类的特性,以及新的特性。而承继机制的魅力和强壮就在 于它答应程序员运用现已存在的类(挨近需求,而不是彻底符合需求的类),并且能够以某种办法 修正这个类,而不会影响其它的东西。 留意,每个子类只界说那些这个类所特有的特性。而假如没有按级分类,每类都有必要显式的 界说它悉数的特性。 多态 多态是OOP 的另一个重要概念。多态的意思是事物具有不同办法的才能。举个比如,关于不 同的实例,某个操作或许会有不同的行为。这个行为依靠于所要操作数据的类型。比方说加法操 作,假如操作的数据是数,它对两个数求和。假如操作的数据是字符串,则它将衔接两个字符串。 图6 演示了一个函数处理不同数量、不同类型的参数。就像某个单词在不同的上下文中具有 不同的意义 多态机制使具有不同内部结构的方针能够同享相同的外部接口。这意味着,尽管针对不同对 象的详细操作不同,但经过一个公共的类,它们(那些操作)能够经过相同的办法予以调用。多 态在完结承继的进程中被广泛运用。 面向方针程序规划言语支撑多态,术语称之为“one interface multiple method (一个接口,多 个完结)”。简略来说,多态机制答应经过相同的接口引发一组相关但不相同的动作,经过这种方 式,能够削减代码的杂乱度。在某个特定的情况下应该作出怎样的动作,这由编译器决议,而不 需求程序员手艺干涉。 在多函数程序中,许多重要的数据被声明为大局变量,这样它们才能够被悉数的函数拜访。 每个函数又能够具有它自己的局部变量。大局变量很简略被某个函数不经意之间改动。而在一个 大程序中,很难分辩每个函数都运用了哪些变量。假如咱们需求修正某个外部数据的结构,咱们 就要修正悉数拜访这个数据的函数。这很简略导致bug 的发生。 云南大学 杨克诚 kecheng@ 5 第1 章 GIS 二次开发 在结构化程序规划中,另一个严峻的缺点是不能很好的模仿实在国际的问题。这是因为函数 都是面向进程的,而不是实在的对应于问题中的各个元素。 面向进程的程序规划的一些特色如下: ·着重做(算法); ·大程序被分隔为许多小程序,这些小程序称为函数; ·大多数函数同享大局数据; ·数据敞开的由一个函数流向另一个函数。函数把数据从一种办法转化为另一种办法。 选用由上至下的程序规划办法。 动态绑定 绑定指的是将一个进程调用与相应代码链接起来的行为。动态绑定的意思是,与给定的进程 调用相相关的代码只需在运转期才可知。它与多态和承继的联络极为严密。一个多态引证的函数 调用决议于这个引证的动态类型。 考虑图6 中的“draw ”办法。经过承继,每个方针都具有了这个进程。可是,关于不同的对 象它的算法是不同的,因而,draw 进程有必要在每一个类中从头界说。在运转期,当时引证方针所 对应的代码将被调用。 音讯传递 一个面向方针的程序由许多方针组成,这些方针之间需求相互沟通。因而,在面向方针程序 规划言语中,程序规划的首要进程如下: 1、创立类,这些类界说了方针及其行为; 2 、由类界说创立方针; 3、树立方针之间的通讯。 方针之间经过收发信息相互沟通,这一点类似于人与人之间的信息传递。信息传递的概念使 得实在国际的直接模仿更易于和树立体系沟通。 关于某个特定方针来说,音讯便是恳求履行某个进程,因而,音讯的接纳方针会调用一个函 数(进程),以发生预期的成果。传递的音讯的内容包含接纳音讯的方针的姓名,需求调用的函数 的姓名,以及必要的信息。 方针就有一个生命周期。它们能够被创立和毁掉。只需方针正处于其生存期,就能够与其进 行通讯。 1.2.4 OOP 的长处 OOP 具有许多长处,无论是关于程序规划者或许用户来说都是如此。面向方针为软件产品扩 展和质量确保中的许多问题供给了处理办法。这项技能能够大大进步程序员的出产力,并可进步 软件的质量以及下降其维护费用。其首要的长处陈列于下: 1、经过承继,咱们能够大幅削减剩余的代码,并扩展现有代码的用处; 2 、咱们能够在规范的模块上(这儿所谓的“规范”指程序员之间相互达到的协议)构建 咱们的程序,而不用悉数从头开始。这能够削减软件开发时刻并进步出产功率; 3、数据躲藏的概念协助程序员们维护程序免受外部代码的侵袭; 4 、答应一个方针的多个实例一同存在,并且相互之间不会相互搅扰; 5、答应将问题空间中的方针直接映射到程序中; 6、根据方针的工程能够很简略的分割为独立的部分; 云南大学 杨克诚 kecheng@ 6 第1 章 GIS 二次开发 7、以数据为中心的规划办法答应咱们捉住可完结模型的更多细节; 8、面向方针的体系很简略从小到大逐渐晋级; 9、方针间通讯所运用的音讯传递技能与外部体系接口部分的描绘更简略; 10、更便于操控软件杂乱度。 当需求将以上所说的悉数特性有机的结合于一个面向方针体系中,它们之间的相对重要性就 取决于工程的类型和程序员的喜爱。为了取得上述的某些优势,有必要考虑许多作业。例如,方针 库有必要能够被重用。技能还在不断的开展,现有的产品也会很快的更新换代。假如重用没有能够 完结,那么就需求进行严厉的操控和办理。 易于运用的开发软件往往难以编写。面向方针程序规划东西有望处理这个问题。 1.3 组件式GIS (ComGIS) 1.3.1 组件技能 组件技能的鼓起 现在,在软件开发范畴,一场新的革新正在悄然鼓起,这是由日趋老练的组件技能引发的。 几年曾经,当微软公司首要运用OLE 的时分,其初衷是为了增强软件的互操作性。然而在运用过 程中,人们逐渐认识到这一技能背面的实质性内容和它在软件开发中所扮演的重要人物。组件技 术曾经所未有的办法进步了软件产业的出产功率,这一点已逐渐成为软件开发人员的一致。传统 的C/S 结构、群件、中间件等大型软件体系的构成办法,都将在组件的根底上从头结构。 组件技能使近二十年来鼓起的面向方针技能进入到老练的实用化阶段。在组件技能的概念模 式下,软件体系能够被视为相互协同作业的方针调集,其间每个方针都会供给特定的服务,宣布 特定的音讯,并且以规范办法公布出来,以便其他方针了解和调用。组件间的接口经过一种与平 台无关的言语IDL (InterfaceDefineLanguage )来界说,并且是二进制兼容的,运用者能够直接调 用履行模块来取得方针供给的服务。前期的类库,供给的是原代码级的重用,只适用于比较小规 模的开发办法;而组件则封装得愈加彻底,更易于运用,并且不限于 C ++之类的言语,能够在 各种开发言语和开发环境中运用。 因为组件技能的呈现,软件产业的办法也随之发生了很大的改动。许多组件出产商呈现出来, 并推出各具特色的组件产品;软件集成商则运用恰当的组件快速出产出用户需求的某些运用体系; 大而全的通用产品逐渐削减;许多相对较为专业,但用处广泛的软件,如GIS、语音辨认体系等, 都以组件的办法拼装和涣散到一般的软件产品中。 云南大学 杨克诚 kecheng@ 7 第1 章 GIS 二次开发 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 接口取得其它接口的指针。客 户方针或许并不知道服务器方针的每个接口,但这并不阻碍客户方针对服务器方针的运用,它只 云南大学 杨克诚 kecheng@ 8 第1 章 GIS 二次开发 用它知道的接口。当客户方针用完服务器方针的服务时,它会告诉服务器方针,服务器方针就释 放它所占有的内存。 DCOM 的长处是清楚明了的。因为接口的界说和功用坚持不变,DCOM 构件开发者能够改动接口 功用、为方针添加新功用、用更好的方针来替代原有方针,而树立在构件根底上的运用程序简直 不用修正,大大进步了代码的重用性。 ActiveX 与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 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 。 云南大学 杨克诚 kecheng@ 9 第1 章 GIS 二次开发 ActiveX 控件的组成 一个ActiveX 控件由它的一些成员组成:特色,办法以及事情 PME 模型 Property 特色 Method办法 Event 事情 P:特色 是用来描绘和反映方针特征的参数,用来保存方针的数据 M:办法是控件内部可调用的用以完结特定操作的进程或函数 E:事情是VB 预先界说的方针能辨认的动作。 ActiveX 与ActiveX 控件的差异 ActiveX 不等同于ActiveX 构件,从上面的介绍可知,ActiveX 是一个很宽的技能宗族的标识,而 ActiveX 构件仅仅那个宗族的一个特定产品。 1.3.2 组件式GIS 组件式软件技能现已成为当今软件技能的潮流之一,为了习惯这种技能潮流,GIS 软件象其 他软件相同,现已或正在发生着革新性的改动,即由曩昔厂家供给了悉数体系或许具有二次开发 功用的软件,过渡到供给组件由用户自己再开发的方向上来。无疑,组件式GIS 技能将给整个GIS 技能体系和运用办法带来巨大影响。 组件式GIS 根本思维是把GIS 的各大功用模块划分为几个控件,每个控件完结不同的功用。各个GIS 控 件之间,以及GIS 控件与其它非GIS 控件之间,能够便利地经过可视化的软件开发东西集成起来, 构成终究的 GIS 运用。控件好像一堆林林总总的积木,他们别离完结不同的功用(包含 GIS 和非 GIS 功用) ,根据需求把完结各种功用的 “积木”树立起来,就构成运用体系。 组件式GIS 体系的特色 (1)、 细巧灵敏、价格便宜 (2 )、 无须专门GIS 开发言语,直接嵌入MIS 开发东西 (4 )、 开发简捷 把GIS 的功用恰当笼统,以组件办法供开发者运用,将会带来许多传统GIS 东西无法比拟的长处。 (1)、 细巧灵敏、价格便宜 因为传统GIS 结构的封闭性,往往使得软件自身变得越来越巨大,不同体系的交互性差, 体系的开发难度大。在组件模型下,各组件都会集地完结与自己最严密相关的体系功用,用 户能够根据实际需求挑选所需控件,最大极限地下降了用户的经济担负。。组件化的GIS 渠道 云南大学 杨克诚 kecheng@ 10 第1 章 GIS 二次开发 会集供给空间数据办理才能,并且能以灵敏的办法与数据库体系衔接。在确保功用的前提下, 体系体现得细巧灵敏,而其价格仅是传统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 不只是专家们的专业剖析东西,一同也成为一般用户对地舆相关数据进行办理的 的可视化东西。 组件式GIS 开发渠道的结构 组件式GIS 开发渠道一般可规划为三级结构: 根底组件 面向空间数据办理,供给根本的交互进程,并能以灵敏的办法与数据库体系衔接; 高档通用组件 由根底组件结构而成,面向通用功用,简化用户开发进程,如显现东西组件、挑选东西组 件、修正东西组件、特色阅读器组件等等。它们之间的协同操控音讯都被封装起来。这级 组件经过封装后,使二次开发更为简略。如一个修正查询体系,若用根底渠道开发,需求 编写许多的代码,而运用高档通用组件,只需几句程序就够了。面向通用功用; 职业性组件 云南大学 杨克诚 kecheng@ 11 第1 章 GIS 二次开发 笼统出职业运用的特定算法,固化到组件中,进一步加快开发进程。以GPS 监控为例。对 于GPS 运用,除了需求地图显现、信息查询等一般的GIS 功用外,还需求特定的运用功用, 如动态方针显现、方针确定、轨道显现等。这些GPS 职业性运用功用组件被封装起来后, 开发者的作业就可简化为设置显现方针的图例、轨道显现的色彩、确定的方针,以及调用、 承受数据的办法等。 GIS 组件的构成 GIS 软件的模型包含若干功用单元: 空间数据获取 坐标转化 图形修正 数据存储 数据查询 数据剖析 制图标明 ……. 能够幻想要把这些悉数的功用放在一个控件中简直是不或许的,即便完结也会带来体系功率上的 低下。一般能够以为GIS 构件的规划首要遵从运用范畴地需求。例如ESRI 地MapObjects 便是以 空间数据拜访、查询、制图为首要方针的GIS 构件。 GIS 组件产品 GIS 组件的代表作应首推MapObjects 以及MapX 。其间MapObjects 由全球最大的GIS 厂商ESRI(美 国环境体系研究所)推出;MapX 由闻名的桌面GIS 厂商美国MapInfo 公司推出。别的还有加拿大 阿波罗科技集团的TITAN 等。下表是MapObjects 和MapX 的首要功用比照。 功用 MapObjects MapX 显现的地图数据格局 Arcview 的SHP、ARC/INFO MapInfo 的数据格局 的coverage、SDE 图层 叠加栅格图画 有 对地图的常用操作 扩大、缩小、周游等 图层操控 添加、移走、设置当时层 特色数据绑定 有 地图信息查询办法 1.经过鼠标选取特征 2.经过SQL 查找特征 3.经过空间操作选取特征 专题地图 较弱 有 GPS 集成 有 用户绘图图层 无 有 生成/修正地图方针 较弱 地图标示 有 地图符号化 较弱 较强 云南大学 杨克诚 kecheng@ 12 第1 章 GIS 二次开发 剖析功用 有 ? 地舆编码 有 可运用的开发言语 VC 、VB 、PowerBuilder 、 VC 、VB 、PowerBuilder 、 Delphi 、Access 等 Delphi 、LotusNotes 等 表MapObjects 和MapX 的首要功用比照 运用及点评 软件的构件化已成为软件技能开展的潮流。根据DCOM 的ActiveX 构件完结,已成为软件工业的 一种规范。伴跟着未来其它非Windows 渠道对ActiveX 的支撑,ActiveX 构件化的GIS 软件体系 将对GIS 的体系结构和GIS 将来的运用远景发生深远影响。 尽管选用GIS 构件在开发上有许多优势,可是不可避免的也存在一些功用上的短缺和技能上的不 老练,首要包含以下几个方面: 与专业的GIS 客户端软件比较,选用构件技能不可避免的带来功率上的相对低下,这 在拜访超大空间数据(如大数据量的遥感图象)的时分体现得尤为显着; 支撑的空间数据量有限; 支撑的功用有限,因为是构件,只覆盖了GIS 体系的部分功用,所以关于特别范畴, 它就显得力不从心; MapInfo 相关技能 MapInfo 公司及其产品 美国MapInfo 公司致力于为用户供给先进的数据可视化、信息地图化技能,并将这些技能与干流 事务体系集成,供给完好的处理方案。MapInfo 吸取了传统GIS 体系的精华,并借助于核算机技 术的开展,及时将GIS 概念从中大型核算机的专用作业站上介绍至一般桌面PC 上,创始了簇新 桌面地图信息体系。MapInfo 公司的首要系列产品有: 桌面地舆信息体系MapInfo Professional 网络处理方案MapInfo ProSerev 数据库服务器产品MapInfo SpatialWare GIS 组件:MapInfo ActiveX 开发东西MapInfo MapBasic 首要技能特色 (1)、 以表(Table )的办法安排信息 每一个表都是一组 MapInfo 文件,这些文件组成了地图文件和数据库文件。为运用 MapInfo ,就需求有组成表的用户数据和地图文件。这些文件能够来自MapInfo 或许由用户创 建。用户要想在MapInfo 中作业,就有必要翻开一个或多个表。 MapInfo 经过表的办法将数据与地图有机地结合在一同。当用户在 MapInfo 中翻开数据 文件时,MapInfo 将创立一个表。这个表至少由两个独立的文件组成,一个是包含数据结构 的文件,另一个是包含原始数据的文件。一个典型的MapInfo 表将首要由*.tab、*.dat、*.wks、 *.dbf、*.xls、*.map、*.id、 文件格局组成。 (2 )、 图形方针 MapInfo 内置的数据库办理体系是一种联络型数据库办理体系,也是用二维表安排数据。 与其它联络型数据库不同的是表结构中除可包含常用类型的特色列外,还引进一个图形方针 云南大学 杨克诚 kecheng@ 13 第1 章 GIS 二次开发 列(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 等多种开发东西, 确保了新的运用程序与原有的运用界面坚持一致,为日后的深层开发供给一个扩展空间。 其内 云南大学 杨克诚 kecheng@ 14 第1 章 GIS 二次开发 1.4 本章回忆 GIS 的三种开发办法 根本概念:类与方针,控件方针的特色、办法、事情 什么是组件式GIS ,其功用及特色 你所了解的组件GIS 产品有哪些 15

上一篇:GIS 二次开发概述 - 全文 下一篇:成都趋势电子M3D GIS三维数字全息沙盘大数据交互地理信息系统
分享到: