青山土地整理预算软件13981979182土地整理格田计算软件GLand快速赚土地券 | 【软件团购】活动 | 有奖举报新手求助区 | 申请版主 | 禁止上传涉密资料
返回列表 发帖

《GeoMedia应用开发手册》1998

《GeoMedia应用开发手册》

第一章   自动化概述 宋关福1998年11月30日   [注]本文是1998年11月为出版《GeoMedia应用开发手册》文版翻译的,但由于种种原因该书没有出版。因此本文未经仔细校对,错误之处难免,请各位谅解。
介绍 “自动化”(Automation)这一术语将在本文中频繁出现,本章主要介绍与自动化编程相关的术语、分析GeoMedia 自动化模型、介绍如何使用GeoMedia开发应用系统。本文还提供了一些练习和试验,有助于加深对OLE自动化概念的理解。
主题
第一节、 面向对象程序设计和OLE
第二节、 何谓COM?
第三节、 OLE的优点
第四节、 何为自动化
第五节、 操纵对象
第六节、 术语
第七节、 驱动Excel自动化
第八节、 GeoMedia的自动化

一、GeoMedia的概念
二、GeoMedia 术语
三、GeoMedia的自动化模型
  1、Application
  2、Document
  3、MapWindow
  4、Coordinate Systems
  5、Legend
  6、GDO
  7、Geometry and Styles
  8、Service和Pipes
                 
四、练习1: 操纵GeoMedia 的自动化模型

第九节、 GeoMedia自定义的方法目标
小结
你能回答下列问题吗?

目标
本章结束后,您将能够掌握如下内容:
* 使用公共编程术语

* 浏览GeoMedia自动化模型
* 描述GeoMedia开发的三种技术

示范/演示
介绍GeoMedia
通过自动化驱动Execl

练习
浏览GeoMedia自动化模型
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

第一节 面向对象编程和OLE

  在使用GeoMedia开发应用系统前,首先需要了解的是“对象”和“自动化”这两个术语。“对象”一词与“面向对象”程序设计密切相关。许多年前诞生的面向对象技术,在今天的软件开发环境中仍然受到相当的重视面向对象是一种把数据及其操作封装在组件或对象里的软件组织方式。因此,在GeoMedia中,对象就是封装了一定功能的软件组件。

  “自动化”是软件对象之间的通信处理,这些软件对象是创建应用系统的组成部分。在学习怎样使用自动化之前,首先需要浏览一下当今软件技术框架的发展历史。早期的OLE指对象连接与嵌入(Object Linking and Embedding)。在本文中,OLE还允许创建对象,并建立他们之间的关联。比如,您可以在Word文档中嵌入Excel表单,并能通过双击表单激活Excel。现在的OLE增加了以下技术:


组件(或对象)的集成


通过二进制通信标准实现语言无关的开发


对组件或对象界面的抽象

  除此之外,OLE还包括三种技术:复合文档、自动化和OLE控件。复合文档是一种可以同时包含本地数据和多个在其它应用程序中创建的对象。另外,OLE还具有就地激活与拖-放功能。OLE自动化可以被看作一个程序向另一个程序提供可编程对象。例如,Excel提供了能在Visual Basic应用程序中操纵的表单和统计图对象;又如,GeoMedia提供了地图显示(MapViews)和管道(Pipes)对象,这些对象可以通过Visual Basic Visual C++程序来操纵。

  OLE控件体现了许多OLE技术,包括COM、可连接的对象、复合文档、属性页、OLE自动化和对象持续性。控件是一种通常情况下可视的软件组件(比如:按钮、列表框、检查框),是为创建应用程序界面提供的砖头。自定义控件是用户为解决某些特定问题而自行开发的控件。

  显然,这些主题需要更加深入的分析,才能有效的使用它们进行开发。不过,通过这些概念的介绍,您可以了解到 GeoMedia在那些方面适应了当今的软件体系结构。我们主要着眼于OLE系列技术中与自动化相关的部分。

第二节 何谓COM

  尽管本文主要讨论如何自定义GeoMedia,但仍然有必要简要地概括一下组件对象模型(COM),因为它是GeoMedia体系结构的基础。即使您从不需要设计可编程对象,理解这一基础理论也是非常有益的。
  OLE是建立在COM基础之上的。COM定义并且实现了允许软件组件(包括对象、应用程序和服务)之间实现交互的机制。也就是说,COM定义了软件组件之间的通讯协议。COM还描述了接口管理、状态报告、以及使用系统注册表解决的全球性的唯一识别码。与此同时,COM还定义了应用程序内部的对象之间,以及不同应用程序的对象之间的交互。
  COM的实现就是接口的实现,COM对象是通过COM接口得以交互的。可以认为接口象生产者和消费者之间的合同,它定义了软件的目标和行为。接口由COM对象的一系列与语义学相关的功能或方法组成。如同不能违背合同一样,接口一旦被定义,就不能改变。作为应用程序开发者,你需要这个合同来防止应用程序所依赖的软件的任何改变。
  组件式对象模型是OLE可扩展体系结构的关键所在,它提供了建立OLE其余部分的基础。COM是组件之间进行通信的二进制标准,COM并不依赖于Windows NT。微软和其它公司正在他们的操作系统上实现各自的COM库,这些操作系统除了Windows以外,还包括Unix和Macintosh。如果希望了解更多关于COM的资料,请访问微软开发者网络(MSDN.Microsoft.com)。Kraig Brockschmidt编写的《深入OLE 2》一书也提供了丰富的信息。
第三节 OLE的优点
  OLE给用户和开发者提供了许多好处。OLE强调以“文档为中心”(Doument-centric)而不是以“应用为中心”
(Application-centric)的编程方案。也就是说,数据和数据格式与应用程序无关。用户无需进行繁琐的转换就可以操纵文档。数据同样可以跨文档共享使用。通过提供访问方法而非数据复制,可以更好地维护信息,并能有效简化信息发布的手续。
  使用OLE对象及其接口,给开发者提供了强大工具来建立灵活、易于维护和升级的应用系统。一个OLE应用程序可以利用在其它OLE应用程序中实现的功能来扩展自身的可用性。作为系统集成者,我们再也不需要自己开发所有需要的功能,可以利用其它的OLE应用程序满足用户的需求。GeoMedia是通过嵌入技术实现这种体系结构的。
  尽管OLECOM需要的某些体系结构还没有讨论到,但是我们知道有那么一种通信协议存在于对象、自动化客户与控制器之间。这种协议就是接口。所有的对象都支持这种重要的IUnknown接口。通过这些接口,您可以在运行时刻学习其它应用程序的与对象服务相关的能力。可以在既不影响当前应用程序也不影响与之交互的其它应用程序的情况下增加对对象和接口的支持。记住,这就是COM的“合同”接口一旦定被义了,就不能改变。GeoMedia
通过编程持久性来实现这一点。
第四节 何为自动化
  OLE自动化是应用程序赖以提供OLE对象的二进制标准。OLE自动化包括两个要素:控制器和对象。自动化控制器是实现程序同自动化对象通信的脚本语言工具。自动化控制器包括:VC++Visual BasicPowerBuilderDeveloper 200Delphi等。自动化对象是支持必要OLE接口的可编程组件。另外,整个程序可能是一个自动化对象。例如:表单应用程序可能提供表格、统计图、单元格或者一组单元格,这些都是不同类型的对象。字处理软件可能提供了应用、文档、段落、句子、书签或者选择集等对象。
  自动化控制器:用于创建管理自动化对象的程序的脚本语言工具,等同于自动化客户。
  当应用程序支持OLE自动化时,它提供的对象可以被任何自动化控制器使用(包括VBVC等)。当使用脚本语言工具操纵自动化对象时,是通过激活对象的方法,或者调用“设置”(Setting)/“获取”(Getting)属性来实现的。
  自动化对象:被自动化控制器操纵的可编程软件组件,等同于自动化服务器。
  自动化客户等于控制器,客户是脚本工具或者内置该工具的应用程序,客户操纵自动化对象。自动化服务器等同于自动化对象,自动化服务器是一种可以被自动化客户操纵的软件组件,它提供了可编程的自动化对象。提供可编程对象使得客户可以通过直接访问对象和服务器的功能来“自动化”地激活特定的处理进程。
  对自动化对象的支持允许你使用已有的应用程序来使您的工作流程达到最佳效果。您同样可以利用其它强大的应用程序创建非常符合特定需要的应用,大大减少了开发时间和开发难度,并能非常满足您或者单位的需求。通过自动化接口的标准化,该应用可以使用某种通用程序设计语言创建,而不需要与不同产品相关连的多种脚本的编程语言。
  为使自动化客户有效地访问自动化对象,客户(控制器)必须有服务器对象的信息,必须了解每一个对象内部的属性和方法。为了实现信息交换,服务器必须创建一个类型库(Type Library)来定义每个对象。类型库同时还描述对象的属性,包括每一个属性的数据类型。最后,类型库还描述了对象的方法,包括方法的返回值和方法的参数列表(变量名和参数数据类型)。在GeoMedia中,每一个DLLOCXEXE都有一个类型库,类型库文件的扩展名为.tlb。就Visual Basic自动化服务器而言,动态连接库(DLL)本身包含类型信息。GeoMedia
对象和相应的类型库见附录。
第五节 操纵对象
  为了更有效地使用自动化服务器编程,首先要了解如何操纵自动化对象。对自动化对象的所有操纵和控制都通过对象的接口进行。对象的接口分为三种,即属性(Property)、方法(Method)和事件(Event)
  属性控制对象的外观和性质,如果把对象当作结构的话,那么属性就是成员变量。比如颜色和重量等。
  方法是与对象有关的操作,在面向对象编程环境里,方法就是对象的行为和动作。
  事件是对象要响应的信号或者动作。比如点击窗口上的按钮会激活按钮对象的click事件。
  几乎所有的对象都有属性和方法,但并非所有的对象都有事件。一般而言,控件都有事件。
  成员对象(member object)是另一个对象的属性。例如:GeoMediaApplication对象提供的Document属性本身也是一个对象。该Document就是Application对象的成员对象。
  附属对象(Dependent Object)类似于成员对象,但它与容器对象的关系更为紧密。附属对象不能在容器对象之外独立创建。例如:在GeoMedia GDO对象中,GField对象就是GTableDef对象的附属对象。创建GField对象必须使用GTableDef的方法,不能独立创建。
  最后需要介绍的是一种特殊的对象集合(Collection)。集合是管理一组相似对象的自动化对象。一般而言,集合对象与其管理的对象有着相同的名字,只不过集合的名字使用复数形式。例如WindowsWindow对象的集合,QueriesQuery的集合。集合中的对象可以是同构的也可以是异构的。GeoMedia中的Windows集合中的对象是异构的,因为它同时包含DataViewWindowMapViewWindow两种类型的对象。Queries集合则是同构的,它只有Query对象。由于经常需要处理集合中的所有对象,因此,理解要操纵的集合的类型非常重要。
  尽管集合对象可以拥有自己独立的方法和属性,但是它必须有Count属性和Item方法。Count属性表示集合中的对象数目;而Item方法则用于返回指定序号的对象引用。比如:
For I = 1 To objCollention.Count

ObjX = objCollention.Item(I)
Next I
  新的集合标准是以1作为下标的开始(称为1基准),而不是0。但是也有一些集合的下标从0开始(称为0基准)。在GeoMedia里,所有的GDO集合都是0基准的,而GeoMedia集合则是1基准。
另外,集合经常具有以下方法:
·
添加值或追加对象。
·
移去索引或删除对象。
·
_NewEnum-支持For Each结构的隐藏方法。
  对象通常具有默认的方法或属性。这种默认机制允许您省略属性和方法名,而且可以暗中获取属性值或激活方法。比如,Item通常是集合对象的缺省方法。下列情形中:
 objCollection.Item(I)

objCollection(I)
  是相等的声明。在文本控件里,Text 属性是缺省特性,那么,

 txtControl1.Text


txtControl1
  在文本控件中获取文本属性值具有等同的效果。
 
Table - 1
对象的特性
项目

说明

属性

数据成员和特性

方法

操作对象的过程或函数

事件

对象能识别/响应的行为

成员和附属对象

对象或集合的组成元素

集合

包含一系列相似对象的对象


  
  操纵对象的另一个重要的概念是点操作符。点操作符用于访问对象的属性或者调用对象的方法。当对象包含成员对象,您可以使用点操作符访问对象层次中的所有对象。假定Application对象包含一个叫Document的成员对象,而Document对象包含一个叫Name的属性,那么可以使用以下的表达式访问Name属性:
Application.Document.Name
  尽管对于访问层次的深度没有限制,但是,对一定深度的重复访问不仅有碍代码的可读性,而且存在潜在的执行效率问题,因为点操作符需要对自动化服务器发出请求。您应当检查所有使用点操作符的代码行。例如,如果在一个循环中重复地访问一个对象的多个属性,使用With块或者引入临时变量会提高效率。例如:
Application.Document.Name = ‘Automation Overview’
Application.Document.Date = ‘7/12/97’
Application.Document.Author = ‘John Doe’
  改写成如下两种格式将会更加高效:
Set tmpDoc = Application.Document
tmpDoc.Name = ‘Automation Overview’
tmpDoc.Date = ‘7/12/97’
tmpDoc.Author = ‘John Doe’
  或:
With Application.Document
.Name = ‘Automation Overview’
.Date = ‘7/12/97’
.Author = ‘John Doe’
End With

pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

第六节 术语  一、
DimNewCreateObject  如同其他任何编程语言一样,在每一个自动化客户(控制器)里必须有申明变量的机制。在Visual Basic中使用Dim语句申明变量,同时还使用Dim语句来申明对象变量(Object Variables)。例如:Dim ObjX As Object将建立一个名为ObjX的指针,该指针可以指向任何类型的对象。因为Object不是某种特定的对象类型,而是可以代表任何对象类型的通用术语。由于ObjX只是指针,必须把指向一个对象的指针的值赋给它才能使用。通常可以把另一个对象的成员变量或者属性赋值给它,比如:
Dim objDoc As Object
Set objDoc = Application.Document
  在可以获取MyApplication类型库引用的地方,都可以使用自动化控制器提供的函数创建一个对象,例如:
Set objDoc = CreateObject(MyApplication.Document”)
  在Visual Basic中,也可以使用New操作按照如下所示的方法创建对象:
Dim objDoc As New Document
  后面两个例子实实在在创建了一个新的对象;在第一个例子中,则只是简单地创建了一个指针,该指针可能指向某个对象的引用。
  并非所有的对象都是可创建的。也就是说,如果该对象是不可创建的,使用New操作符或者CreateObject函数将会失败。另外,可以使用Dim
语句创建指向对象引用的变量,但不能创建对象实例。
  二、
进程内和进程外    与自动化服务器通信的方式有两种:进程内通信和进程外通信。进程内服务器通常被编译成动态连接库(DLL),客户端可以是动态连接库或者可执行文件(EXE)。进程外服务器则是EXE文件,客户程序可以是EXE或者DLL。这两种实现方法的最大区别在于:进程内服务器与客户共享相同的地址空间,进程外服务器则拥有单独的地址空间。因此进程内服务器的运行效率远远比进程外服务器高。但是进程外服务器可以同时服务于多个客户程序。理解这两种不同类型服务器的区别和作用,有利于以后学习使用GeoMedia创建自定义命令并编写独立的应用程序。
  三、
UUIDGUIDCLSIDPROGID  您可能想知道自动化控制器是如何跟踪一个对象的。所有的接口和自动化对象有一个全球唯一的识别码(GUID: Globally Unique Identifier)GUID是一个128位数值,该数值由程序产生,是基于计算机网卡内的唯一标志码、系统日期和时间计算出来的,因此能保证其全球唯一性。GUID包括接口识别码(IID)和类识别码(CLSID)两种类型。
  每一个接口都定义了自己的IIDIID用于准确查找对象的接口。一旦获得接口,就可以访问接口中的方法。绝大多数自动化控制器自动地把对象类型名称转换成IID,因此不必直接访问IID
  CLSID与每一个自动化对象类型相关联,CLSID用于创建给定类型的对象。CLSIDIID一起用于定义自动化服务器支持的对象(类)。
  最后,每一个类都有一个程序识别码(ProgID)。ProgID是一个在系统注册表里唯一标定对象的字符串。Windows提供了在ProgIDCLSID之间转换的API函数。下划线(_)和点(.)ProgID字符串中唯一可用的标点。GeoMedia对象的CLSID大部分以GeoMedia作为前缀,加上类名。ProgID是在自动化控制器中使用的CreateObject函数的参数。例如,GeoMedia.ApplicationGeoMedia.ConnectionGeoMedia.ColorSchemes
ProgID
Access.GDatabase 则是Access GDO 服务器的ProgID

  四、接口  接口是对象赖以通信的机制,一个对象可以有一个或者多个接口指针。前面提到,接口是一组相关的函数。接口是一种抽象的C++类,其定义存储于类型库。所有的成员函数返回HRESULT,这是用于标志函数成功与否的一种特殊类型的错误代码。所有的自动化对象需要实现三个接口:IUnknown IDispatch和一个自动化接口。几个对象可以实现同一个接口。从语义上讲,成员函数执行相同的操作。然而,在语义未改变的情况下,这些函数也需要分别实现。
  下面的图表提供了对象及其接口关系的直观显示。绝大多数自动化对象都有三个接口,有些是通过继承得到。
第七节 驱动Excel自动化
  本节介绍GeoMedia之外的一个OLE自动化范例。这些资料强调了自动化是一种标准的编程技术,而不是某个软件的特殊解决方案。
  现在的许多应用程序都是自动化服务器。同样地,您也可以编写一个程序访问自动化服务器提供的对象,而不需要使用鼠标或者键盘交互地操作该应用程序。对一个系统集成者来说,自动化服务器提供了相当强大的功能。这是实现特定任务的最好工具,而这些工具的接口可以封装在一个很小的最终用户程序中。
  自动化对象并非Intergraph的发明,Microsoft其他厂商的许多应用程序都是自动化服务器。自动化已经很快地成为扩展应用程序功能以满足特定需要的公用方法。
  本节通过Excel说明有关自动化的一些概念。尽管ExcelGeoMedia之间没有直接的联系,但是电子数据表是介绍自动化概念的常用范例。
  对于大多数自动化服务器而言,层次表中的最底层对象是应用程序对象。
上图常用于解释应用程序的自动化模型。该自动化图表显示了对象及其相互之间的层次关系。每一个框代表一个自动化对象。灰色方框代表对象集合及其包含的对象。本例中:
·
Application
包含一个成员对象Workbooks Workbooks是一个对象集合,包含了一系列Workbook对象;
·
Workbook
对象包含WorksheetsDialogSheetsCharts Modules等成员对象;.
·
Worksheets 包含Worksheet对象;
·
Worksheet
对象有一个成员对象Range
·
Range 包含Areas 对象集合和Border成员对象。

  在Excel中有其他许多对象,每一个对象可以继续往下分解,直到该对象没有成员对象。可以使用点操作符访问层次表中的对象。如Range对象可以使用:
Application.Workbooks(1).Worksheets(1).Range
  语句来访问。在自动化图表中,异构对象集合用带虚线边线的灰色方框表示,而不是一般的实线边框。Excel中称这种对象集合为Metacollections

  演示2:通过自动化驱动Excel    本演示用于阐明自动化的本质。Excel是一个自动化应用程序,因此可以通过编程的方式来与电子数据表格软件交互。通过这种方式,可以减少用户在日常工作中手工操作的步骤。
  在本演示中,个人工作簿里创建并存储了一个Excel宏,另外还附带一些文本格式的数据(数值采用逗号作为分隔符)。
  自动化程序使用Visual Basic编写,该程序的输入是数据文件名,程序启动后创建一个新的工作簿(Workbook)并且调入数据,数据被选中,并且宏被执行,该处理的结果是一幅表示每月需要检查的电线杆数量。
  尽管这个例子本身的功能微不足道,但是它说明了通过自动化驱动应用程序的方式。自动化的最大好处在于通过自动化编程减少了最终用户的手工操作步骤。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

第八节、 GeoMedia的自动化

一、GeoMedia的概念  GeoMedia是一个地理信息显示和分析工具,GeoMedia可以集成多个不同格式的数据源到一个地图中,并能进行相当复杂的空间分析与查询。GeoMedia既是作为最终用户产品,也是一个可以创建自定义应用的开发平台。
  GeoMedia
提供了如下分析功能:
·
勿需转换直接显示多种类型的空间数据,GeoMedia使用内置的坐标变换以便不同格式的数据可以组成一个复合的地图。作为最终用户,GeoMedia 自动执行这些处理,您只需要很少有关投影和坐标系统知识;作为一个自定义应用开发者,则要有一定的投影和坐标知识。

·
通过缓冲区、空间-属性联合查询和专题地图等执行空间分析。

·
通过交互式图例控制地图的显示内容和外观,包括扫描的栅格地图。

  当然,GeoMedia还有其他的许多功能。
  GeoMedia基于客户/服务器框架,GeoMedia是客户端,数据(或者数据仓库)既可以存储于客户机,也可以存放在远程计算机上。数据仓库和数据库包含空间数据,所有对数据仓库进行的访问都通过一个叫做GDO Server的软件组件进行。尽管GeoMedia仅仅反映单一用户对数据的修改,但是多个GeoMedia客户可以访问同一个数据仓库。GDO Server
驻留在客户端系统中,需要的时候可以访问远程数据。
二、GeoMedia 术语  1GDO  GDO(Geographic Data Objects)是一个OLE扩展,通过它可以以一种可预知的方式访问完全异构的数据源中的空间数据。与GDO一起的还有Intergraph定义的一套自动化客户(如:Visual Basic)可以访问的OLE自动化服务器的规范,Intergraph还参与了Open GIS Consortium (OGC) 定义空间数据访问的国际标准。GDO规范也包括在该标准中。GDO访问数据使用了MicrosoftDAORDO技术,这是Microsoft的数据访问与管理的OLE 自动化面向对象标准。这些范式很好地满足了空间数据访问的需要。GIS可以看作是数据库问题加上测量坐标系统、几何学和图形显示等问题的结合。
  通过GIS特殊接口,GDO 正是用于解决GIS中除了数据库以外的其他额外问题的技术。然而, GDO 并不是负责数据库技术接口的,因为许多数据源并非数据库。它遵循数据库的精确性和有效性范式,但并不要求数据库。正因为如此,GDO 制定了数据访问的方式,并不负责数据库有关的任何数据复制、备份、恢复、安全管理或者多用户访问等技术。


  2GRecordset  GRecordset对象包含满足特定规范的所有数据库记录。所有的GRecordset 对象使用记录 () 和字段()创建。GeoMedia通过GRecordset提供空间数据,并通过它维护这些数据。GRecordset 对象相当于数据库中包含数据的指针(cursor),该指针是数据库查询的结果。GRecordset中关于列的信息通过GFields集合访问。客户程序可以使用标准的方式访问和管理来自不同数据源的信息。
  以下不做特殊说明,记录集(Recordset)等同于GRecordset
  需要注意的是,尽管GRecordset中包含着一系列的记录和字段,但是GRecordset并不是集合对象,而是一个单一对象。如果GRecordset是集合对象,每一行数据将会作为单独的对象访问。事实上,GRecordset的访问类似于数组,可以通过MoveNext和设置Bookmark属性类访问指定序号的数据。
  GeoMedia
中的许多概念,都可以在通用的数据库环境中找到同义词。
GDO Term

Database
Other Synonyms

GDatabase
Database
Warehouse, server
GTableDef
Table
Feature Class
GField
Column
Attribute, field
GRecordset
Cursor
Recordset
Active row (bookmark)
Current row
Feature instance, row




  3Legend  图例是GeoMedia中相当重要的一部分。Legend是地图窗口的控制中心。与传统的只反映地图外观的图例概念不同,GeoMedia 图例是交互式的,可以动态控制地图。通过图例,可以控制哪些feature 类、查询、专题图、标签和图像在地图窗口中显示,以及他们的显示效果。
  4Pipe  PipeGeoMedia体系中的另一重要概念。Pipe定义了允许软件组件之间通过GRecordset交换数据的协议。GeoMedia 包括多个可以通过GRecordset 对象管理和操纵数据的Pipe
  PipeGeoMedia封装数据表功能的机制,通过这种方式,GeoMedia的特定软件组件可以重用和共同操纵数据。Pipe接受一个或者多个GRecordset输入,并产生一个或者多个GRecordset输出。GRecordset 通过Pipe输出后,字段和记录数量可能增加,也可能减少。这些输出的GRecordset 可能成为另外一个pipe
的输入,进行进一步的处理。
  5、坐标系统(Coordinate System  坐标系统是GIS中位置的存储方式。坐标系中的大量数据是与其精度和详细程度相关的。越详细的坐标系统定义将提供越精确的地理位置的描述。
  GeoMedia 以许多坐标系统中的某一种存储地理数据,这些坐标系统提供了您的研究区域和真实世界位置之间关系的数学基础。
  GeoMedia
支持两种类型的坐标系统:
·
投影坐标系统(Projected coordinate systems),坐标以X,Y,h方式表达。其中,X通常指向地图平面的东方,Y指向地图平面的北方。h 代表高程。不同的投影坐标系统之间的区别在于其如何在平面地图上表达地球曲面。

·
地理坐标系统(Geographic coordinate systems),坐标以经度(lon)、纬度(lat)和高程(h)表达,其中,经度是从子午线开始计算的球面距离,纬度是从赤道开始计算的球面距离。高程指海拔高度。

  GeoMedia 通过精确定义的椭球体参数和所处地球上的相对位置等测量数据转换坐标的。其中,椭球体是用于描述地球表面的数学模型。
  6Feature Class  Feature class是数据的分类。在GeoMedia中对应于数据服务器中的表。每一个数据实例被分配给一个feature class。例如,一个数据集通常由多个feature classes组成,比如:道路、桥梁、学校和教堂等。
  7Feature  Feature是由地图上的几何对象和数据库非地理属性所组成的空间实体。这些几何对象和非地理属性的定义存储于feature class中。一个feature 或其实例相当于feature class 表中的一行。
三、GeoMedia的自动化模型  GeoMedia 包含许多自动化对象,正是这些大量的自动化对象使GeoMedia 功能非常强大。为了更好地理解这些对象,首先让我们来浏览一下GeoMedia的自动化对象结构图。
  自动化对象模型中的第一部分是整个应用程序的顶层结构(图???)。
  请注意各个方框的区别,不同的方框代表着不同对象的性质
·
深色的方框代表集合对象。

·
浅色但边线加粗的方框只在GeoMedia 应用程序中起作用。

·
带些显得深色方框是异构集合,它可以包含多种类型的对象。

·
浅色方框是简单对象。

白色方框是简单的异构对象,比如,Legend对象包含着一个Style对象属性,该属性可以是GeoMedia的任何一种Style对象.
  浏览自动化对象结构图还需要注意以下规则:
·
在同构集合中,集合名在对象名后加“s”,如果对象名以“y”结尾,把“y”替换为“ies”就是集合名称。例如: Application.Document.Connections Application.ActiveWindow.MapView.Legend.LegendEntries

·
在访问集合中的对象时,需要在集合名后面加上括号,在括号中填入对象序号。比如: Application.Document.Connections(1).ConnectionName

·
访问异构集合时, skip the next object as you continue through the hierarchy.
例如: Application.Document.Windows(1).Mapview.Visible

·
访问异构对象时,使用真正的对象替代该位置。

  注意:本结构图列出了对象及其附属对象。在许多情况下,附属对象表现为属性名,例如集合QuerySubFoldersQueryFolder对象的属性名,其实际的对象类型是QueryFolders
  本节将简要浏览每一个对象,下一节将提供更多的细节。
1Application
  从结构图的左上角开始,GeoMedia Application包括以下成员或者附属对象:
·
Windows - Application中所有打开窗口(数据窗口或者地图窗口)的集合。

·
Active Window -
获得输入焦点的窗口,这既可能是窗口集合中的DataWindow 也可能是MapWindow

·
PreferenceSet -
允许访问存储在系统注册表中的GeoMedia信息的对象。

·
UnitsOfMeasure -
该对象提供对度量单位之间转换服务 (例如:米、英尺)

·
Category / Command - t GeoMedia 定义的分类、命令以及自定义命令。

·
Menubar / MenuItem - Menubar是控制用户接口和菜单项的菜单条;MenuItem是菜单条中的菜单项。

·
Accelerator -
为命令定义的快捷键 (例如:帮助的快捷键为F1)

·
Toolbar / ToolBarButton –Toolbar是控制用户接口的工具条;ToolBarButton 则是Toolbar 上的按钮。

·
DockableControl - GeoMedia 的类似于窗口的ActiveX控件包容器。

·
Document — 地理工作空间对象。

  Document 对象是Application对象中最引人注目的一个,它为GeoMedia提供了所有数据访问和显示的能力。数据存储于应用程序(FRAMME, MGE)或者数据库(Access, Oracle SDO),地图的显示参数、查询、数据转换参数等信息则存储于Geoworkspacedocument)中。数据可以被多个document访问,每个document保存各自独立的显示参数。GeoMedia采用单文档界面,不允许多个文档同时打开。因为一个document本身包含多个对象,所以在关闭document之前必须释放所有对象。
2Document
  document 对象相联系的下一级对象有:
·
Connections —Connection 对象的集合,提供对GDO 服务器和数据文件的访问。
·
Windows — document 中打开的windows 对象的集合(等同于Application.Windows)
·
MasterLegend —legend 对象的一个特殊实例,GeoMedia 使用它为recordsets设置默认的设置。
·
Legends —legend 对象集合。
·
QueryFolder — 本对象包含query classifications,每一个query classification包含一个query 集合对象。
·
SelectedObjects — 在活动窗口中被选中的对象集合,允许在多个窗口中高亮显示同样的对象。
·
CoordSystemsMgr — 提供投影定义和转换功能的对象,同时,该对象为每一个地图窗口提供默认的坐标系统。
·
SpatialFilters —用于限制connection的查询范围的集合对象集合。
·
PropertySet -
存储混合的用户自定义数据。
·
ColorSchemes — 在单值和范围图例对象中使用的颜色模板。
  Windows 集合是一个异构集合,它可以包含MapWindow DataWindow两种窗口对象.
DataWindow 对象则是DataView自定义控件的一个简单包容器。DataView
提供了浏览数据集中数据行所有信息的功能。
3MapWindow
  MapWindow
包含MapViewNorthArrowScaleBar三个控件,其中每一个控件为空间数据提供了显示控制的用户接口。
·
NorthArrow — 指北针,是一个指示显示地图真正北方位置的OLE控件。
·
ScaleBar — 比例尺条,用于显示MapView中地图的比例尺(例如:1”图纸单位= 100英尺大地单位)
·
MapView — 地图显示控件。
  MapView 是矢量和栅格数据的关键。Legend
成员对象定义需要显示的数据集及其显示顺序。CoordSystemsMgr
成员对象定义了显示数据的投影参数。
·
Legend — 管理MapView数据显示的控件
·
LegendEntries — 图例条目集合,其中的每一个实体包含一个数据集对象及其相关的显示属性。
·
HighlightedObjects —MapView 中的高亮显示的对象集合,用于选择和区别地理要素。
·
MapViewSelectedObjects —Document中属于MapView 同时也属于 SelectedObjects 集合中的对象。
·
CoordSystemsMgr — 为某特定的MapView
管理投影定义和投影转换的对象。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

4Coordinate Systems  CoordSystemsMgr
是管理所有与坐标系统有关功能的主要对象。CoordSystem
成员对象定义了某一特定GIS
坐标系统的特征。这些特征包括存储精读和范围、以及与投影、图纸参考空间的关系等。

·
CoordSystem — 定义特定坐标系统的对象。

·
RefSpaceMgr — 该对象基于公共的测量数据定义参考空间系列及在参考空间系列的各个成员之间进行坐标转换的法则。

·
UnitFormatSpec — 存储单位和格式的信息,该对象解析并格式化距离值和坐标点。

·
GeogSpace — 指定或者获取用于在RefSpaceMgr对象中定义地理参考空间的椭球体测量数据等参数。

·
PaperSpace — 图纸空间对象,用于控制图纸上的地图比例尺,并调整“投影-图纸”矩阵。该矩阵用于在RefSpaceMgr
对象内部进行投影和图纸空间之间的转换。

·
ProjSpace — 投影空间对象用于设置和获取在RefSpaceMgr对象内部定义投影参考空间的投影运算法则,同时允许修改投影运算法则参数。

·
AltCoordSystemPaths —
包含AltCoordSystemPath 对象的集合,每一个AltCoordSystemPath 对象包含一个从当前到其他CoordSystemsMgr 对象之间转换的列表。

·
LeastSquares -
用于执行在两套坐标点之间的基于控制点的注册。

·
DatumTransformation -
定义了地平线测量数据转换模型,及其坐标转换参数。
5Legend
  我们已经知道,legend 对象控制数据的显示,包含一系列图例条目(Legend Entry)。图例条目的顺序决定了数据显示的先后顺序。一个记录集对象 (GRecordset) 与每一个图例对象相连接。另外,与图例条目相连的还有数据的可视化特性。每一个图例条目响应相似的属性和方法。不同类型图例条目之间的区别与不同数据类型的不同显示机制相关。所有的集合数据集都可以显示成RecordLegendEntry。与栅格地图相关联的记录集要求不同的显示技术,因此栅格地图使用RasterLegendEntry显示。

·
RecordLegendEntry — 使用相关风格显示记录集中所有几何对象的图例条目类型。

·
RasterLegendEntry — 从特定的记录集中显示单一图像的图例条目类型。

·
RangeLegendEntry — 基于统计分析把记录集划分为段范围的专题地图图例类型。

·
UniqueValueLegendEntry — 把记录集按照指定字段进行同值分段制作的专题图的图例。

·
Style — 包含显示特性(如颜色、宽度、风格等)的对象。

·
TitleFont, SubtitleFont, HeadingFont — 控制图例中文本显示字体的字体对象。

·
Range — 表示相关数据的范围的对象,用于确定子图例实例的显示特性。

·
UniqueValue — 表示相关数据的值的对象,用于确定子图例实例的显示特性。

·
DisplayedObjects - HighlightedObjects MapViewSelectedObjects 的对象类型,包含一系列高亮度选择的元素。

·
RecordsetObject -
整个记录集的引用,用于对象选择。

·
RecordObject -
单个记录的引用,用于对象选择。

·
GeometryObject -
单个记录对应的几何对象的引用,用于对象选择。

·
RasterObject -
单个图像对象的引用,用于对象选择。
6GDO
  GeoMedia中的所有操作都以数据访问为中心,GDO 则是数据访问的控制中心。记录集是用于实现软件组件之间通信的主要媒介。所有数据服务器都支持用于访问数据的GDO 接口

·
GDatabase — 提供对数据及其定义进行大部分访问的对象。

·
GTableDef — 定义数据表结构的对象

·
GField — 定义数据表中一列的对象。

·
GIndex — 用于创建数据库索引的对象。

·
GRecordset — 包含来自数据服务器的数据的对象。

·
GError — 表示处理过程中出现的错误信息的对象。

·
GFRMAdminExtension —包含FRAMME服务器的系统管理员信息的对象

·
GFRMSeg — 指定FRAMME服务器中段的名称和数量的对象

·
ExtendedPropertySet —基于数据集,提供源数据信息的OriginatingPipe 对象中存在的一种扩展对象。

·
Name — 与记录集的查询对象相关的扩展对象。

·
Notification — 提供访问记录刷新方法的扩展对象。

·
Errors -
访问GErrors集合的扩展对象。

·
CoordSystem -
GRecordset 对象提供坐标系统定义的对象。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

7Geometry and Styles   没有空间数据的GIS 就像没有水的鱼一样,几何对象是空间数据的可视化表现。空间数据的存储由服务器定义。在传统的GIS软件中(比如:FRAMME MGE),数据存储于二进制文件中。在GeoMedia中的Access Oracle SDO 服务器里,坐标数据存储于关系数据库。通过GDO,所有的服务器以二进制(Blob)格式提供空间数据。为了更加有效地访问BlobGeoMedia 把数据转换为Geometry 对象,所有的Geometry 对象都是自动化对象。这有利于简化操纵和管理对象的处理,因为操纵二进制格式的处理与Geometry 对象和Geometry 服务是分离的,您不必创建Blob 格式的数据。
  没有Style(风格),绝大多数GIS数据的表达将显得呆板。Style是对元素的颜色、线宽、填充模式的定义。GeoMedia为每一类型几何对象提供了不同的Style,然而大多数Style
对象是用于所有的几何对象。

·GeometryCollection —表示特定种类空间对象的Geometry对象的集合。

·PointGeometry — 点对象。

·Origin — X, Y, Z 坐标值

·Vector - I, J, K 三维矢量坐标值。

·Matrix -一个4 x 4 的矩阵

·OrientedPointGeometry — 带方向的点对象。

·TextPointGeometry — 带文本或者标签的点对象。

·LineGeometry — 矢量线段。

·PolylineGeometry — 由不定数量的点组成的矢量折线。

·RectangleGeometry — 矩形对象。

·PolygonGeometry —由不定数量的点组成的多边形。

·BoundaryGeometry — 带洞的封闭多边形。

·Holes — 洞,由一系列矩形或者多边形组成。

·RasterGeometry — 定义图形特性和边界多边形的对象。

·ArcGeometry -三维空间中的圆弧对象。

·CompositePolylineGeometry -包含一系列polyline geometrie集合。

·CompositePolygonGeometry -包含一系列polygon geometrie集合


·AreaStyle —定义gdbAreal类型的几何对象的Style对象。

·AnyStyle —定义gdbAnySpatial类型的几何对象的Style对象。

·TextStyle —定义gdbGraphicsText类型的几何对象的Style对象。

·LinearStyle —定义gdbLinear类型的几何对象的Style对象。

·BitmapStyle —定义gdbPoint类型的几何对象的Style对象。

·SymbolFontStyle —定义gdbPoint类型的几何对象的Style对象。

·HandleStyle —定义选定编辑的对象的handle显示的Style对象。

·PointSymbolStyle -定义gdbPoint类型的几何对象的Style对象。

·PatternedLinearStyle -定义gdbLinear类型的几何对象的Style对象。

·PatternedAreaStyle -定义gdbAreal类型的几何对象的Style对象。


8ServicePipes
  GeoMedia模型包含许多并不依赖于Application对象的对象。许多对象已经在上一节介绍过。尽管这些对象可以通过Application对象访问,但却独立于Application对象。在本节将介绍大量不依赖于Application对象的对象。Controls
组包括所有的GeoMedia 自定义控件。Services
组包括数据输入、执行运算、查询结果返回等软件组件。Pipes
组包含接受数据输入、执行运算、输出结果记录集等软件组件。PipeService的区别在于:Pipes总是输出结果记录集,而Service
则提供离散(不连续)的结果。

·AttributeFilterPipe — 基于SQL语句,过滤或减少记录集中记录数量的管道对象。

·BufferZonePipe — 基于输入记录集中的几何对象创建缓冲区几何对象的管道对象。

·SpatialQueryPipe — 用于对两个输入记录集进行空间比较的管道对象。

·CSSTransformPipe — 对输入记录集中的几何对象进行坐标转换的管道对象。

·OriginatingPipe — 创建初始对象以便添加到记录集中的特殊管道对象。创建的初始对象通常指定了对象的NameExtendedPropertySetNotification等属性

·SortPipe — 对输入记录集进行排序的管道对象。

·SortKey —SortPipe对象排序时需要的排序键值。

·CenterPointPipe -计算几何对象中心(内点)的管道对象。

·EquijoinPipe -连接两个输入记录集并生成新记录集的管道对象。

·GraphicsTextPipe -通过对来自属性值的标签的计算,创建文本对象的管道对象。

·MovePipe -移动几何对象的管道对象。

·SchemaProjectPipe -允许隐藏字段的管道对象。

·SpatialFilterPipe -在输出记录集中约束记录的空间过滤管道对象。

·StatisticsService — 对输入记录集进行统计分析的组件。

·GeometryDigitizeService — 显示尚未存储到数据库中的几何实体的对象。

·GeometryEditService — 几何实体编辑对象。

·GeometryStorageService — 用于在Geometry BlobGeometry 对象之间实现转换的对象。

·ServerTransService — 提供执行公共坐标系统操作的方法的对象。

·RasterPropertiesService — 用于获取图像文件信息和创建转换矩阵的对象。

·MeasurementService — 计算几何实体的面积、长度、部分长度、周长的对象。

·MetadataService — 设置和存储特征定义信息的对象,这些信息是对GDO GTableDef 对象的补充。

·TableProperty — MetadataService 支持的对象。

·FieldProperty — MetadataService 支持的对象。

·SmartLocateService — 用于在指定的空间范围查找元素的对象。

·AutoPanService -随着鼠标移动自动平移地图的对象。

·OutputTableService -保存记录集到数据表的服务对象。

·SnapService -实现几何实体捕捉服务对象。

·SymbolFileService -用于调入symbol对象以便定义Style的服务对象。

·GMMapView — 定义MapView对象的OLE控件。

·GMDataView — 用于定义DataView对象的OLE控件。

·GMDefCoordSystem — 支持交互式定义坐标系统的OLE控件。

·GMEventControl — MapView中接受事件并在窗体中激发它们的OLE控件。

·GMFeatureCombobox — 用于显示feature类型并在组合列表框中查询的OLE控件。

·GMFeatureListbox —用于显示feature类型并在列表框中查询的OLE控件。

·GMNorthArrow — 定义指北针对象的OLE控件。

·GMScaleBar — 定义比例尺对象的OLE控件。

·GMWebBrowser -支持与Internet Explorer集成的OLE控件。

·GMPlacement -用于在放置feature时选择一个feature Geometry类型的OLE控件。

·GMProperties -用于在放置和编辑feature以便收集属性数据的OLE控件。

·GMTextPlacement -用于交互式放置文本的OLE控件。

·GMPrecisionCoordinate -读出坐标的OLE控件。

·PickQuickDialog -用于区别用户高亮选择操作选中的多个实体的对话框。

·PageSetup -用于独立应用程序中初始化mapview 页面设置的公共对象。

·Print -用于独立应用程序中初始化mapview 打印操作的公共对象。

·GMFeatureComboboxInput -创建记录集的OLE控件。

·GMFeatureListboxInput -创建记录集的OLE控件。

·GMQueryStorage -在查询夹中存储记录集的OLE控件。

·GMTableStorage -输出记录集到GDO 表的OLE控件。

·GMLegendEntryOutput -为记录集创建图例条目的OLE控件。

·GMDataWindowOutput -在数据窗口中显示记录集的OLE控件。

·GMJoinProperties -EquijoinPipe提供GUI接口的OLE控件。

·GMLabelProperties -为指定的标签内容提供GUI接口的OLE控件。

·EventServer — 允许来自多个地图窗口的事件传递到单一事件控件中处理的对象。

·MapViewListeners — MapViews 中管理接受事件的命令的对象

·GeoMathUtilities -可以被自动化服务器访问的用于数学计算的C语言函数库
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

四、练习1: 操纵GeoMedia 的自动化模型  在本练习中,您将学习如何使用自动化对象结构图访问其中指定对象。每一步骤都要求您创建自动化模型中特定对象和属性的引用,答案可以是用点操作符组成的一个单一程序行。您将用到本节讲述的内容、GeoMedia的自动化帮助和Visual Basic浏览器。
 1.
GeoMedia 程序组或者开始菜单中选择Programming Utilities然后选择GeoMedia Object Reference访问帮助主题。

  2.

启动Visual Basic并打开c:\TGM\Labs\Lab01\src\目录下的GeoMediaCommand.vbp工程文件,这将提供对每一个对象的上下文敏感帮助的访问。

  3.

使用Notepad打开C:\TGM\Labs\Lab01\NavigationLab01.txt文件。使用ApplicationgobjGeoApp
参考练习的Application对象。

  正如下一节我们将要介绍的,
GeoMedia命令使用两个全局对象初始化:gobjGeoAppmobjGeoViewListeners。前者是GeoMedia 应用程序的指针,后者是接受map views事件的一组命令的指针。

  4.

在文本文件中填入答案。使用帮助系统辅助您找到正确的属性名。第九节、自定义的方法 一、自定义方法简介  Intergraph的其他许多GIS产品一样,GeoMedia的自定义能力是非常重要的。另外,许多传统的产品都允许用户设置和修改其界面。GeoMedia提供三种自定义机制,采用那种自定义方法取决于您的要求、编程能力以及GeoMedia的标准界面满足您要求的程度。
  这三种方法可以图示说明如下:
  1、命令
  使用这种技术,GeoMedia的功能通过命令动态连接库和GeoMedia 对象动态连接库调用。以前讨论过进程内和进程外软件组件调用。在这种模式中,通常的做法是单进程调用亦即所有的组件是进程内调用的。
  
  2、自定义应用程序
  使用这一技术,您可以使用GeoMedia对象创建自己的可执行应用程序。这同样是单一进程调用。
  3、驱动GeoMedia

  该方法中有两种不同的调用方式,将在本节后面介绍。
二、通过菜单和命令自定义GeoMedia  在这一方式中,您将从GeoMedia 应用程序开始。您可以创建一套新的GeoMedia命令,这些命令参数化GeoMedia 命令或者以一种更适合您需要的顺序执行任务。下一节将介绍创建命令的方法。
  最简单的自定义方式就是调整GeoMedia的菜单。可以去掉不需要的或者不希望用户访问的子菜单项。通过Tools > Customize
菜单可以重新配置菜单和快捷键。也从菜单条(Menu Bar)
上去掉子菜单。有三种类型的菜单可以修改:
·Map — 当地图窗口激活时显示的菜单条。

·Data — 当数据窗口激活时显示的菜单条。

·None — 当没有任何文档打开时显示的菜单条。
如果希望去掉以上三种类型菜单中都有的命令,则需要分别在这三种菜单中一个一个地删除。
  菜单和快捷键配置存储在系统注册表的HKEY_CURRENT_USER\Software\Intergraph\GeoMedia\02.00中。正是由于这个原因,使用同一计算机的不同的用户可以配置不同的菜单。如果要为多个用户配置使用环境,我们建议您采用自动化模型(MenuBar/MenuItem, Accelerator, Category/Command, ToolBar/ToolBarButton)编写一个命令或者应用来配置菜单和快捷键。
  如果您发现您需要的命令GeoMedia没有提供,那么您可以自己编写一个并把它们添加到GeoMedia命令组中,当然,您还得把自己编写的命令复制到每一台计算机上。这些命令可以存放在任何一个您指定的路径下。别忘记安装这些命令,这样可以把它们分别注册到系统注册表中,以便GeoMedia程序框架创建并添加到GeoMedia命令组中。安装的语法如下: 
   
“C:\Program Files\GeoMedia\Program\Installusrcmd.exe” MyCommand.dll MyCommand.ini

  如果dllini文件不在当前路径下,执行上述命令时加上路径名。ini 文件是在使用GeoMedia命令向导创建命令时生成的。该文件包含命令的有关信息,包括:提示信息,状态信息以及有效状态等。可以在一个dll文件中创建多个命令,以便减少需要发布的文件数量。
  安装之后还需要为自定义命令添加相应的菜单项。如果自定义命令适用于所有的窗口,需要在三种类型的菜单上都加上它。
  您还可以创建自定义的工作空间模板。通过模板,您可以根据用户的使用频率定义标准的连接、图例和查询等等。您也可以定义显示窗口和图例条目。
通过创建命令和配置菜单有如下好处:

·启动快。

·更实用的窗口和文档管理功能。

·环境和选项的自动保留(自动持久性)。

·具有无限扩展的能力。

·开发和调试只需要考虑最终用户的接受能力,不必浪费无畏的精力。

 以往创建应用程序时,大量的开发工作花费在对应用程序的框架结构的维护上,而通过命令自定义GeoMedia则只需要着眼于最终用户需要的功能。
  注意,PowerBuilder 5.0创建的dll不能被外部程序调用。而GeoMedia命令框架以进程内OLE服务器方式创建命令的。因为在PowerBuilder中不能这样做,所以您必须创建一个VB包容器(Wrapper)命令以便与PowerBuilder应用程序对象通信。另外,由于应用程序将是进程外调用的,故您需要通过Application.CreateService 方法创建可持久的GeoMedia
对象。
三、使用GeoMedia 对象自定义应用程序  GeoMedia开发的另外一个途径就是使用GeoMedia对象创建应用程序。在这种方式下,您需要创建自己的框架,包括:窗口管理、文档管理和持久性。然后在您的程序中使用自动化对象完成需要的分析。您创建的应用应该是可执行程序,而且还可能需要支持动态连接库。因为该程序及其所需DLL可能需要使用GeoMediaDLLs
  当最终用户不需要太多灵活性时可以使用本方式。例如:不需要用户改变已经定义的图例设置。
  在自动化对象结构图中,除了那些与框架(应用程序)密切相关的对象以外,所有公共的GeoMedia对象都可以在编程重使用。这些不能使用的对象包括(表-0-2):

-0-2

Application
Windows
ActiveWindow
Category(s)
Command(s)
MenuBar(s)
MenuItem(s)
Accelerator(s)
Document
DataWindow
MapWindow
MasterLegend
SelectedObjects
MapViewListeners
GMFeatureCombobox
GMFeatureListbox
ToolBar(s)
ToolBarButton(s)
GMFeatureComboboxInput
GMFeatureListbox Input
GMQueryStorage
GMTableStorage
GMLegendEntryOutput
GMDataWindowOutput

  上表中列出的所有对象都需要一些与应用程序或者文档相关的信息,因此只在应用程序上下文中是可以创建的。也就是说,只有当GeoMedia运行时这些对象才能使用。
  在一个自定义应用程序中,您需要发布并注册使用的GeoMedia组件。标准的方法是首先安装GeoMedia然后再安装您开发的应用程序。这将需要完整的GeoMedia使用许可协议(license),因此需要在您的应用程序中包含所有的GeoMedia版权信息。欲获取更详细的资料,请参考Help > About MyApp... command.
  Intergraph可以向个人和第三方开发商销售GeoMedia对象包,如有需要请与GeoMedia技术组联系。该对象包按功能划分成多个对象组。例如,一个简单的显示程序只需要基础的对象组,而分析应用程序则还需要另外得一些对象。对象分类细目请参考附录中的对象包(Object Bundles)的有关内容。
使用GeoMedia
组件创建自定义应用程序的好处在于:
·可以严格控制用户的工作流程。

·可以与其他产品更好地协同工作。

·可以尽可能减少不需要的组件。

  注意,这是唯一一个与PowerBuilder集成的方法,因为PowerBuilder不支持调用DLL的其他方法。
  如果您与Intergraph 达成了OEM 合作协议。您可以不需要为最终用户安装GeoMedia应用程序。但是您需要在安装程序中包含GeoMedia
组件并在安装时注册它们。
四、驱动GeoMedia  最后一个自定义GeoMedia的方法是创建一个应用程序来运行或者驱动GeoMedia应用程序对象。在前一种方法中,不能使用于GeoMedia程序框架相关的对象,而采用本方式,则需要在您的应用程序中创建一个GeoMedia 应用或者与已有的GeoMedia实例建立连接。因此,两个独立的应用程序都要运行(类似于编写Visual Basic程序驱动Excel)。然后您可以访问GeoMedia 自动化模型中的所有功能。本方式不仅可以完全利用GeoMedia框架的所有好处,而且可以限制用户的访问全县和控制其工作流程。
  应该使用Application.CreateService方法创建GeoMedia对象,而不是直接使用CreateObject 。这样可以保证所有的对象都是在GeoMedia
进程中创建的,可以共享同一内存地址。
小结
这章的主要目标是熟悉自动化,为用户自行开发GeoMedia作好准备。到目前为止,我们已经讨论了基本的面向对象技术和OLE/COM,其中主要讲述了OLE领域内的自动化技术。应该掌握的术语有:
v自动化客户/自动化控制器
v自动化服务器/自动化对象
v对象
v属性
v方法
v集合
v点操作符
vGUID, ProgID
v界面
  应该理解的基本Geomedia概念有:
vGDO
v管道
v图例
v坐标系统
v特征
  同时应该能理解并掌握自动化对象结构图以及自定义GeoMedia的几种方式。下一章我们将探讨第一个用户自定义方式:添加GeoMedia
命令。
你能回答下列问题吗?1.
GeoMedia开发组的目标是什么?
2.COM指的是什么?
3.当你听到“自动化”这个词时,你同时会联想到哪两个词汇?
4.OLE的优点是什么?
5.用户自定义GeoMedia有哪三种方法?各举一例。
6.有多少种图例?
7.GeoMedia里从应用到RecordLegendEntry有哪些组件层次结构?
8.在您的程序中,当使用图例并需要访问每一个图例条目时,如何判断图例条目的类型。
9.下面提供了定义对象的一种方式,能否提供另外两种创建对象实例的方法?
Dim objMD as Object
Set objMD = CreateObject(“MService.MetadataService”)
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

很有用的东东,谢谢共享。

TOP

返回列表 回复 发帖