理解对象模型图OMD
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Application对象下面的有几个重要的对象:
1、Data Window:它负责管理数据窗口; 2、Extention:负责管理所有的DLL扩展模块对象 3、AppDisplay:负责管理地理数据的图形显示 4、Document:负责管理地理数据和元素对象 5、StatusBar:用于改变程序的状态栏外观 6、Templates:Application启动后必须使用的文 档模板对象。
IMxDocument接口
这是ArcMap程序特有的接口,用于管理 SelectionEnvironment、Display、Paper和 Print等对象。这些对象和地图的显示和打印输 出有关。
(二)Document对象
只要打开ArcMap程序,就会有一个默认的文 档文件(*.mxd)存在。文档文件有多种,如 ArcMap中的文档称为MxDocument, ArcCatalog中的为GxDocument。
返回一个值
返回一个接口
返回一个值 Dim strName As String Dim pDoc As IDocument Dim pBar As IStatusBar strName = Application.Name MsgBox strName 返回一个引用 Set pDoc = Application.Document Set pBar = Application.StatusBar pBar.Message(0) pDoc.Title
第五章 理解对象模型图
课程预览
ArcObject对象模型图(OMD)
阅读一个对象模型图
类的类型
类之间的关系
接口符号、属性、方法
解释对象模型图,写代码
一、ArcObject对象模型图
OMDs帮助你写代码
显示每个类的接口、属性和方法 显示类之间的关系 在几个对象模型图超过1500个类 超过1600个接口
Application
ThisDocument
(一)Application对象
每个运行对象的ArcMap程序都是一个 Application的对象实例,Application代表了程序 本身。 在ArcMap中,以Application对象为根本, Application管理ArcMap程序的启动和关闭、加 载扩展模块等。
IApplication IMxApplication Application
IAppDisplay IDisplay IScreenDisplay IDocument IDocumentEvents IDocumentEventsDisp IMxDocument
*
AppDisplay IExtension Extension
Dim pApp As IApplication Set pApp = Application Dim pDoc As IMxDocument Set pDoc = pApp.Document
Dim pDoc As IMxDocument Set pDoc = ThisDocument
六、获取属性值
在程序中一次只能有一个文档存在,它在数 据存储和显示中扮演了一个关键的角色,并且保 存了许多非常重要的对象:一个或多个Map、一 个PageLayout、一个TOCView、StyleGallery和 DataGraphs等
用户可以通过IApplication::Document 来获取一个文档对象的指针或者在VBA编程 的框架中直接使用ThisDocument这个全局变 量。
1、概念
可实例化类:不能够直接创建新对象, 但是这种类的对象能够作为其他对象的属 性被创建,或是通过其他类的方法来创建。
2、特点 不可创建的类,不能用New关键字 只能由其它对象获得实例
Dim pNewRow As IRow Set pNewRow=pTable.CreateRow
三维 无阴影
ArcMap/OMD例子
MxDocument Application
Map
*
Layer
*
FeatureLayer
三、三种类
(一)可创建的类(组件类)CoClass
Βιβλιοθήκη Baidu
1、概念:
可创建的类(组件类):指那些能够直 接使用通过开发环境中的对象定义语法来创 建对象的类。可创建类可以直接被创建或者 实例化。
生 成
(三)抽象类Abstract
1、概念
抽象类:不能用以创建新对象,但可以用来 指定子类。如Layer是FeatureLayer和 RasterLayer的抽象类。
2、特点 不可创建,不可实例化 把一些类共同的属性和方法 提取出来,用其它类来继承。 二维带阴影的矩形
为子类定义通用的接口
MxDocument
ITemplates Templates IStatusBar StatusBar Application结构图
IApplicaiton接口
Application类是在FrameWork库中定义的, 它是应用程序的一个抽象类。该接口定义了 ArcGIS中所有应用程序的一般功能。 该接口管理程序的Caption、Document、 Template和VBE等ArcMap和ArcCatalog应用程 序中都拥有的方法和属性。 当直接使用VBA环境开发的时候,它意味着 可以直接联系到程序本身的某些属性和特征。
Dim Set Dim Set Dim Set pMxDoc As IMxDocument pMxDoc = ThisDocument pMap As IMap pMap = pMxDoc.FocusMap pLayer As ILayer pLayer = pMap.Layer(1)
*
Map
*
Layer
属性获得一个对象的引用即需要传入一地址 必须使用Set关键字
Set pLayer.FeatureClass=pMoresbyData
IFeatureLayer Interface 帮助
‘Must use Set
七、查找接口
继承接口是有效的 该接口被本类使用. 所有的属性和放都列表在类图中.
找到ArcObject对象模型图
二、对象模型图的标记
继承
组成 创建 多重性 关联 *
Bird
Abstract
Nest
CoClass
Chicken
* CoClass
Feature
Class
2
Egg
Wing Class 例如table--createRow
Class
对象模型图的标记的几个基本概念:
• Get the FocusMap (active data frame) from MxDocument – MxDocument may have several Maps ( * ) • Get a layer from the the Map MxDocument – Many types of layers ( )
这些接口也是有效的。但是详细的 属性和方法必须在其它地方浏览。 (e.g., Object Browser).
类继承要查找父类的接口 接口继承的属性和方法 示例:接口
八、虫孔
虫孔
Element on ArcMap OMD
FeatureLayer on Map Layer OMD
Example: MxDocument > Map > layer
(3)多重性:表示参与对象数据的上下界限制, 即限制对象类与其他对象关联的数目关系。
以下是用于多重性关联的符号:
1——一个并且只有一个,这种多样性是可选 的,如果不标明,则默认为“1”
0..1——零个或一个 M..N——从M到N(正整数) *或者0..*——从零到任意正整数; 1..*——从1到任意正整数。
'Is pLayer a FeatureLayer? If TypeOf pLayer Is IFeatureLayer Then MsgBox "Yes!, it’s a feature layer" End If FeatureLayer Others
A
(1)继承关系:人们将具有共同特性的元素 抽象成类别,并通过增加其内涵而进一步分类。 例如,动物可分为飞鸟和走兽,人可分为男人 和女人。
(2)创建关系(Instantiation):指某个类 中的对象拥有一个方法,可以创建另一类中的 对象。
(3)关联关系(Association):表示两个 类之间存在某种语义上的联系。
继承:分为两种(类继承和接口继承)
类继承: 子类中含有父类所有的接口。
Layer、 FeatureLayer示例查找Layer Carto ’QI
接口继承:子接口中包含父接口中的所有属性 方法。‘No QI 表示方法:ILayer:IUnkown 所有COM都有IUnkown接口,每个接口都继承 至IUnkown接口。 IObjectClass 、IFeatureClass 用:表示 IFeaturelayer:ILayer(帮助)继承接口
四、属性和方法符号
• Property
– 哑铃形状的图标
Property Get (read) Property Set (write)
• Method
五、开始点
预先设置变量
Application:Application对象的IApplication接口 ThisDocument:MxDocument对象的IDocument接口 ArcMap或ArcCatalog OMD的开始点
2、特点
可创建的:用New关键字
Dim pMap As IMap
Set pMap=New Map
实例化:
Dim pMap As IMap
Set pMap=pMxDocument.FocusMap ’获取当前文档的焦点地图 OMD符号:三维带阴影的矩形
可以使用New关键字实例化的类
(二)可实例化类Class
设置属性
Property Put:Most ArcObjects properties
属性获得一个值或一个对象的副本
不使用Set关键字
pLayer.Name=“Port Moresby” ‘No Set Keyword
Property Put by Reference:Some ArcObjects properties