标题：ComGIS
基本思想
认识ComGIS，首先需要了解所依赖的技术基础－组件式对象模型和ActiveX控件。
COM是组件式对象模型，是OLE和ActiveX共同的基础。COM不是一种面向对象的语言，而是一种二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接，当这种链接建立之后，模块之间就可以通过称之为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制，扩展到分布式环境。这种基于分布式环境下的COM被称作DCOM(Distribute COM)。DCOM实现了COM对象与远程计算机上的另一个对象之间直接进行交互。
ActiveX是一套基于COM的可以使软件组件在网络环境中进行互操作而不管该组件是用何种语言创建的技术。作为ActiveX技术的重要内容，ActiveX 控件是一种可编程、可重用的基于COM的对象。ActiveX控件通过属性、事件、方法等接口与应用程序进行交互。
一些软件公司专门生产各种用途的ActiveX控件，比如：数据库访问、数据监视、数据显示、图形显示、图像处理，甚至三维动画等等。几个著名的GIS软件公司把COM技术应用于GIS开发，纷纷推出由一系列ActiveX控件组成的ComGIS软件，比如Intergraph公司的GeoMedia、ESRI的MapObjects、MapInfo公司的MapX等。
ComGIS的基本思想是把GIS的各大功能模块划分为几个控件，每个控件完成不同的功能。各个GIS控件之间，以及GIS控件与其它非GIS控件之间，可以方便地通过可视化的软件开发工具集成起来，形成最终的GIS应用。控件如同一堆各式各样的积木，他们分别实现不同的功能(包括GIS和非GIS功能)，根据需要把实现各种功能的 “积木”搭建起来，就构成应用系统。
组件技术
目前，在软件开发领域，一场新的革命正在悄悄兴起，这是由日趋成熟的组件技术引发的。几年以前，当微软公司首先使用OLE (Object Linking & Embedding)的时候，其初衷是为了增强软件的互操作性。然而在使用过程中，人们逐渐认识到这一技术背后的实质性内容和它在软件开发中所扮演的重要角色。组件技术将以前所未有的方式提高软件产业的生产效率，这一点已逐步成为软件开发人员的共识。传统的Client/Server结构、群件、中间件等大型软件系统的构成形式，都将在组件的基础上重新构造。
组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。在组件技术的概念模式下，软件系统可以被视为相互协同工作的对象集合，其中每个对象都会提供特定的服务，发出特定的消息，并且以标准形式公布出来，以便其他对象了解和调用。组件间的接口通过一种与平台无关的语言IDL（Interface Define Language）来定义，而且是二进制兼容的，使用者可以直接调用执行模块来获得对象提供的服务。早期的类库，提供的是原代码级的重用，只适用于比较小规模的开发形式；而组件则封装得更加彻底，更易于使用，并且不限于C++之类的语言，可以在各种开发语言和开发环境中使用。
由于组件技术的出现，软件产业的形式也将会有所改变。大量组件生产商会涌现出来，并推出各具特色的组件产品；软件集成商则利用适当的组件快速生产出用户需要的某些应用系统；大而全的通用产品将逐步减少；很多相对较为专业，但用途广泛的软件，如GIS、语音识别系统等，都将以组件的形式组装和扩散到一般的软件产品中。
应用方式
GIS技术的发展，在软件模式上经历了功能模块、包式软件、核心式软件，从而发展到ComGIS、WebGIS的过程。传统GIS虽然在功能上已经比较成熟，但是由于这些系统多是基于十多年前的软件技术开发的，属于独立封闭的系统。同时，GIS软件变得日益庞大，用户难以掌握，费用昂贵，阻碍了GIS的普及和应用。组件式软件是新一代GIS的重要基础, ComGIS的出现为传统GIS面临的多种问题提供了全新的解决思路。
ComGIS是面向对象技术和组件式软件在GIS软件开发中的应用。
许多WebGIS软件包均采用HTML标准，活动内容采用Java applets(SUN 标准)或者 ActiveX(Microsoft 标准)进行传递。新型的分布式面向对象WebGIS可以采用CORBA/Java或者DCOM/ActiveX技术进行开发。ActiveX控件不仅可以用于一般的ActiveX容器程序 (比如Visual Basic、Delphi等) ，而且能嵌入Web页面中。任何ActiveX控件都可以设计成Internet控件，作为Web页面的一部分，Web页面中的控件通过脚本(Script)互相通信。因此，ComGIS是WebGIS的一种解决方案，而基于这一方案的WebGIS通常比基于Java的运行速度快。
GIS的核心是 GIS软件  ，GIS软件的发展和 IT 技术，尤其是与主流软件技术的发展紧密相关 。在组件技术出现之前，GIS软件大多采用桌面 GIS加专用二次开发语言的方式，存在用户难学难用，扩展困难，无法与 MIS等其他系统集成等问题  。GIS仅限于测绘、土地等少数部门使用，无法为更多的领域行业和大众服务，GIS 处于专家 GIS 阶段。20 世纪90年代中期， 微软推出COM组件技术， 并在GIS中得到广泛应用， 形成了COMGIS。 COMGIS具备高效无缝集成、无须专门 GIS 开发语言、成本低等优点以及组件式软件的可编程和可重用的特性，GIS也因此开始融人 IT 主流，使得 GIS进入到 COMGIS 阶段。
COMGIS 特性
COMGIS 有如下几个特性：
①可复用性   它是组件式软件最基本的特性，也是组件技术和 GIS技术相结合的最初驱动力。与传统的复用技术(代码段复用、类复用等)相比，组件的复用更注重于大范围的软件复用和软件复用的容易程度。而对于 GIS 软件组件的复用还应着眼于和其他非计算机领域结合的专业应用领域中的组件复用。
②可封装性   封装的目的不仅是为了隐藏设计和实现细节， 使组件对外呈现相对独立的实体， 而对于组件使用者来说，封装还意味着提高组件复用的容易程度。对于 GIS 这样复杂的专业应用更需要重视。
③可定制性   指组件在组装过程中随组装环境的不同而作出适当的调整。由于 GIS 必须和专业应用结合才能发挥其潜在的功能，因此绝大部分 GIS 组件在开发的过程中必须考虑其方便的可定制性，这是开发的难点之一。④可组装性  利用 GIS组件开发系统的过程是各种 GIS组件组装的过程，组装是实施复用的手段。⑤语言无关性   突破了传统 GIS 开发时需要学习特殊开发语言的限制。一般标准开发语言都可用来开发 GIS。⑥无缝集成性   满足一定规范的不同语言开发的具有不同功能的 GIS组件在同一标准开发环境下能够集成，不仅如此，GIS组件还能和其他专业应用系统集成。这种集成是高效的、无缝的，降低了 GIS开发的成本，并为 GIS走向大众化提供了有力的支持。
COMGIS的开发方式
（1）GIS 控件方式   所用的 GIS 组件多数是以 ActiveX 控件的形式存在，一般和专业应用系统在 Microsoft 平台上集成。这些控件将基础的 GIS 组件封装在一起，方便地嵌入Microsoft 平台的任何标准开发环境中。 使用 GIS 控件的目的是将 GIS功能引入其他系统中，这是 GIS 控件存在的意义．它屏蔽了所有功能的实现细节，对用户的编程技能要求很低。由于这种 GIS 开发方式简单、快捷，并且控件提供的功能既满足了用户的需要又充分利用了资料，因此这种开发方式得到了最为广泛的应用。较有代表性的 GIS控件有：MapInfo 的
MapX和 ESRI的 MapObject。 
（2）桌面 GIS平台方式  桌面 GIS本身是一个可以独立使用的 GIS应用系统。系统由众多不同的独立的 GIS组件组成，各个 GIS组件提供的不同功能模块共同实现系统的功能。这些组件基于同一组件开发平台，且满足一定的协议，因而这些组件能无缝集成，从而构成完整的系统。用户可根据需要选择适当的组件开发出满足自己功能需求的应用系统。 最有代表性的 COMGIS 平台实现方式是 ArcGIS 系统平台开发的系统。 该系统平台使用的组件是 COM/DCOM， 用户在 Microsoft 平台上的标准开发环境中能方便地定制自身的专
业应用组件对其进行二次开发。 
（3）基于 Web 的实现方式   COMGIS 在 Internet/Intranet 上的扩展，即网络技术与COMGIS 技术相结合作为 COMGIS 的一种开发方式，同时也是实现 WebGIS的一种方案。 这种实现方式是基于 B/S的结构，通过扩展浏览器的功能，利用浏览器就能对图像进行缩放、移动、选定等操作，实现基础的 GIS 功能。目前，使用较广泛的是在浏览器上安装基于 COM/DCOM 的 ActiveX 控件扩展 Web 浏览器的动态模块。最具有代表性的是ArcIMS。
（4）基于 GIS中间件的 COMGIS实现方式   这里的 GIS中间件可以是一个产品或一种服务，它将众多 GIS 组件融合在一起。作为产品它可方便地交付给用户使用，作为服务用户可通过互联网快速获得。它采用标准接口响应用户的功能请求和进行数据交换；它独立存在，用户只需以向导的形式获得相应的功能或决定数据的输出方式，所有需要 GIS 功能的用户都能使用而无需掌握 GIS编程技能；它能屏蔽操作系统平台和 GIS数据间的异构性；它提供了统一的接口，任何人按照一定的规范都能将其扩充 。
COMGIS的优点
把 GIS 的功能适当抽象，以组件形式供开发者使用，将会带来许多传统 GIS 工具无法比拟的优点。 
（1）小巧灵活、价格便宜 
组件化的 GIS 平台集中提供空间数据管理能力，并且能以灵活的方式与数据库系统连接。在保证功能的前提下，系统表现得小巧灵活，而其价格仅是传统 GIS 开发工具的十分之一，甚至更少。这样，用户便能以较好的性能价格比获得或开发 GIS应用系统。 
（2）无须专门 GIS开发语言，直接嵌入 MIS开发工具 
组件式 GIS 建立在严格的标准之上，不需要额外的 GIS 二次开发语言，只需实现 GIS的基本功能函数，按照 Microsoft 的 ActiveX 控件标准开发接口。GIS 应用开发者，不必掌握额外的 GIS 开发语言，只需熟悉基于 Windows 平台的通用集成开发环境，以及 GIS 各个控件的属性、方法和事件，就可以完成应用系统的开发和集成。 
（3）强大的 GIS功能 
新的 GIS组件都是基于 32 位系统平台的，采用 InProc 直接调用形式，所以无论是管理大数据的能力还是处理速度方面均不比传统 GIS 软件逊色。小小的 GIS 组件完全能提供拼接、裁剪、叠合、缓冲区等空间处理能力和丰富的空间查询与分析能力。   
（4）开发简捷 
由于 GIS 组件可以直接嵌入 MIS 开发工具中，对于广大开发人员来讲，就可以自由选用他们熟悉的开发工具。而且，GIS 组件提供的 API 形式非常接近 MIS 工具的模式，开发人员可以像管理数据库表一样熟练地管理地图等空间数据，无须对开发人员进行特殊的培训。 
（5）更加大众化 
组件式技术已经成为业界标准，用户可以象使用其他 ActiveX控件一样使用 GIS控件，使非专业的普通用户也能够开发和集成 GIS应用系统， 推动了 GIS大众化进程。 组件式 GIS 的出现使 GIS 不仅是专家们的专业分析工具，同时也成为普通用户对地理相关数据进行管理的的可视化工具。