GIS开发_01_ArcObjects基础
2012/2/13
1
ArcObjects基础
ELEMENTARY ARCOBJECTS
GIS开发 第一讲
Email:gis.ecnu@gmail.com 内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
ArcGIS软件介绍及ArcObjects概述
1981 年 ESRI 发布...
2012/2/13
1
ArcObjects基础
ELEMENTARY ARCOBJECTS
GIS开发 第一讲
Email:gis.ecnu@gmail.com 内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
ArcGIS软件介绍及ArcObjects概述
1981 年 ESRI 发布了它的第一套商业 GIS 软件——
ARC/INFO 软件(1.0版本)
1999年,自ARC/INFO 8.0开始,更名为ArcGIS 8.0
最新版本为ArcGIS 10
美国环境系统研究所
(Environmental Systems Research
Institute Inc,简称ESRI)创建于
1969年,总部位于美国加州的
Redlands
ArcGIS ArcObjects
ArcObjects(简称AO)是一套用C++编写的、基于
COM(组件对象模型)规范的组件软件。它不是面
向最终用户,而是面向系统开发人员。
ArcObjects组件包括:
4000多个类。
21000多个属性与方法。
70多个组织好的类库。
2012/2/13
2
ArcGIS Desktop、ArcGIS Engine以及ArcGIS Server等产
品都是基于ArcObjects开发的。 ArcObjects的应用
定制、扩展ArcGIS Desktop产品(VBA语言
+ArcObjects组件直接开发、编程语言+ ArcObjects组
件开发扩展模块)。
开发独立的GIS应用系统(编程语言、 ArcGIS
Engine或ArcGIS Server、ArcObjects组件)。
Desktop桌面系统的定制与扩展 独立的桌面GIS应用系统
独立的WebGIS应用系统
如何学习ArcObjects?
掌握面向对象的编程方法
了解组件对象模型(COM)
掌握对象模型图的使用
利用开发资源
2012/2/13
3
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
面向对象的编程方法
我们所观测到现实世界是由不同对象所组成,任何一
个对象都具有属性,能响应外部事件
现行为,如一
棵树具有树种、树高、树龄等属性,能响应施肥、火
烧等事件,表现生长、落叶、死亡等行为。
我们对现实世界中的问题处理实际上都是通过对对象
的操作来进行。
面向对象的编程方法
面向对象的编程(Object Oriented Programming,简
称OOP)
面向对象编程把现实世界中的实体抽象成编程语言中
的对象。
具有属性
能表现行为(方法)
能响应事件
汽车 地图
属性 颜色 名称
方法 加速 增加图层
事件 踩刹车 选中要素
对象实例
OOP中的几个重要概念
类和对象(Class and Object)
封装(Encapsulation)
多态(Polymorphism)
继承(Inheritance)
类和对象
具有相同属性、方法和事件的对象可抽象成类(
Class)。类定义了由它所产生的对象所具有的一切
属性和方法。
类是一个抽象的概念,对象(Object)则是类的具体
实例。
(来源:http://tech.ddvip.com/2009-01/1231136210104461.html)
2012/2/13
4
封装
将抽象得到的数据和行为(或功能)相结合,形成一
个有机的整体,也就是将数据与操作数据的源代码进
行有机的结合,形成“类”,其中数据和函数都是类
的成员
在程序实现中,隐藏对象的属性和实现细节,仅对外
公开接口,控制在程序中属性的读和修改的访问级别
继承
在某种情况下,一个类会有“子类”。子类可以继承
和使用父类的属性和方法,比原本的类(称为父类)
要更加具体化
例如,“狗”这个类可能会有它的子类“牧羊犬”和
“藏獒”。父类“狗”有一个方法叫做“吠叫”和一
个属性叫做“毛皮颜色”。它的子类(前例中的牧羊
犬和藏獒)会继承这些属性和方法。
多态
也称为多态性,是指由于继承等原因而产生相关的不
同类,其对象对同一消息会做出不同的响应;在程序
中表现为调用同名的方法会产生不同的结果。
例如,“牧羊犬”和“藏獒”都有“吠叫”这一方
法,但是调用“牧羊犬”和“藏獒”的“吠叫()”,
方法时,两种狗的叫声并不相同。
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
组件对象模型(COM)
COM(Component Object Model)是由Microsoft提出
的组件程序之间进行交互的标准。COM不是一种开
发语言。
在COM标准中,一个组件程序也被称为一个模块,
它可以是一个动态连接库(DLL程序),称为进程内
组件;也可以是一个可执行程序(EXE程序),称为
进程外组件。
组件对象模型(COM)
一个组件程序包括一个或多个对象(称为COM对象
),每个对象可以有多个接口。COM对象以接口的
方式提供服务。
当另外的组件或普通程序(即组件的客户程序)调用
组件的功能时。它首先创建一个COM对象或通过其
它途径获得COM对象,然后通过该对象所实现的
COM接口调用它所提供的服务。
2012/2/13
5
对象1 对象2
COM组件
接口1 接口2 接口3
COM组件、COM对象和COM接口的关系
组件对象模型(COM)
COM对象是建立在二进制可执行代码级的基础上,
因此COM对象是语言无关的,这一特性使得不同编
程语言开发的组件对象可以交互。如AO是由C++编
写的,但可以在VBA中调用。
Microsoft不仅定义了COM规范标准,而且也提供了
具体的实现,在Windows操作平台上,COM技术被
应用于系统的各个层次。
什么是接口?
接口(Interface)是COM规范的一个核心内容,它是
对一个类中的属性和方法进行逻辑分组。
一个类可能有好几个接口,每个接口指向一组不同的
方法和属性。
一个接口也可能被多个类所拥有。接口可以认为一个
对象具有多个身份。
接口名通常以I字母开头。
什么是接口?
例如:大象类可以有两个接口(IElephant和IAnimal
),前一个接口有TuskLength属性和Trumpet方法,
后一个接口有Age、Name属性和Sleep方法。
什么是接口?
利用接口有很多优点,如对一个类进行更新时,只要
增加新的接口,老客户可在不更新代码的情况下继续
使用老的接口,解决了代码演化的问题。
由于只有接口才有属性和方法,所以,基于COM的
编程是通过接口对对象进行交互。
利用接口进行编程的基本方法
利用接口进行编程的基本方法:
声明一个指向某个接口的变量。
对变量进行赋值,使变量指向具有该接口的一个特定对
象。
利用该接口的属性和方法对对象进行操作。
Dim pElephant As IElephant
Set pElephant = New Elephant
pElephant. Trumpet
2012/2/13
6
接口切换
对一个对象的操作,有时要用到该对象不同接口。在
这种情况下,每个接口都需要定义一个变量,但每个
变量都应指向同个对象。
可以通过切换接口(也称为查询接口,
QueryInterface,简写QI)方法实现不同变量指向同
个对象。
接口切换
切换接口方法:
声明第一个变量
第一个变量指向某个对象
声明第二个变量
把第一个变量赋值给第二个变量
Dim A As InterfaceA
Set A = New SomeObject
Dim B As InterfaceB
Set B = A
A和B指向同个对象,
但指向不同接口
接口切换
Dim pElephant As IElephant
Set pElephant = New Elephant
Dim pAnimal As IAnimal
Set pAnimal = pElephant
pElephant. Trumpet
pAnimal. Sleep
接口继承
接口具有继承性。根据COM规范,所有的接口都必
须从IUnknown接口继承过来(多数是直接继承)。
IUnKnown接口有三个方法(AddRef、Release和
QueryInterface),用于控制对象的生命周期和接口
查询。
一个接口除了可以使用它自身的属性与方法外,还可
以使用所继承的接口的属性与方法(不需要使用
QueryInterface)。
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
对象模型图
ArcObjects中有大量的类,对象模型图(Object
Model Diagrams,简写OMD)是以UML图的形式显
示每个类支持的接口、每个接口所具有的属性和方法
以及类之间的关系等。
由于不能把所有的ArcObjects类和它们的接口放到一
张图上,因此按照类型分成多个对象模型图。
2012/2/13
7
Layers对象模型图
对象模型图
如安装了ArcGIS的Developer Kit,可以在安装目录(
DeveloperKit\Diagrams)下找到PDF格式的对象模型
图。
如没有安装ArcGIS的Developer Kit,可以在ArcGIS
Resource Center(网址: http://resources.arcgis.com/)
中下载获得。
对象模型图
对象模型图显示的内容包括:
类的类型
类之间的关系
类的接口
接口的方法与属性
枚举类的值与名称
类的类型
对象模型图中的类有三种类型:Abstract Classes、
Coclasses和Classes。
Abstract Classes为抽象类,不能实例化,只能用来派生其
它类,如动物。
Coclasses(组件类)为可创建的类,可由New关键字实例
化,如鸡。
Classes(规则类)为可派生的类,不能通过New关键字实
例化,但可通过其它对象派生实例化,如鸡的羽毛。
类的类型是相对的,是由类的创建者定义的。
类的类型
在对象模型图中,
抽象类以2维灰
方盒表示
可创建的类用3
维灰方盒表示
可派生的类用3
维白方盒表示。
类之间关系
继承(Inheritance):用带三角形符号的黑色实线
表示,表示父类与子类的关系。
组成(Composition):用带黑色菱形符号的灰色实
线 表示,表示组成关系。组成关系中下一层次
的对象依存于上一层次对象,删除上一层次对象,下
一层次对象将不存在,如鸡和鸡毛的关系。
2012/2/13
8
类之间关系
产生(Creates):表示通过一个类的方法可以产生另
一类的对象。如鞋匠和鞋的关系。用黑色带箭头的虚
线表示 ,箭头指向产生的对象。
关联(Association):用灰色实线表示,表示一个类
的对象拥有另个类的对象,如人和房子的关系。可以
在线上加数字或星形符号表示拥有的数量,如
表示可以是1个到多个。
类之间关系的一个例子
类的接口
对象模型图显示了每个类支持的所有接口。但由于图
幅的限制,只显示主要接口的详细信息。其它接口可
通过对象浏览器(或其它帮助工具)来查找该接口的
详细信息
Map对象的接口
类的接口
接口有两种类型:Inbound接口和Outbound接口。对
象模型图中用空心的圆形符号表示Inbound接口,用
实心的黑色圆形符号表示的Outbound接口。
类的接口
常用的接口是Inbound接口。Outbound接口不包括属
性和方法,只有事件,接口名字中一般都带有
“Events”这个单词,这些事件导致服务器寻找相应
的客户端代码并执行。
在对象模型图中,详细显示的接口在接口名的右边列
出了它所继承的接口名,如ILayer:IUnknown。
2012/2/13
9
接口的属性与方法
对象模型图中用方块表示属性。右边的方块表示可设
置属性(可写),左边的方块表示该属性可读。如属
性的设置通过一个值或一个对象拷贝的赋值来实现,
则用实心方块表示;如属性的设置通过一个对象的引
用实现,则用空心方块表示。
接口的属性与方法
在编程中(VBA),如通过一个值或一个对象拷贝的赋
值来设置属性,则不用Set关键字,如:
pLayer.Name = “Shanghai”
如通过一个对象的引用来设置属性,则必须用Set关
键字,如:
Set pLayer.Feature = ShanghaiData
接口的属性与方法
对象模型图中,用实心的黑色箭头表示方法。除了方
法名外,还包括该方法涉及的参数及类型、返回值(
或接口)的类型。
枚举类的值与名称
枚举类变量的取值只能在若干选项中选择。AO预定
义了很多枚举类,包括枚举值和名称。对象模型图显
示了每个枚举类的枚举值及相应名称。在使用时,用
值和名称是一样的,但用名称更容易理解。
内容提要
ArcGIS软件介绍及ArcObjects概述
面向对象的编程方法
组件对象模型(COM)
对象模型图
开发资源
开发资源
ArcGIS Developer Help
ESRI Object Browser
ArcGIS Resource Center
2012/2/13
10
开发资源的安装 ArcGIS Developer Help
在代码窗口中,双击选中某个接口,按F1键,将显
示ArcGIS Developer Help对话框,并定位到该接口,
显示该接口的详细信息。另外,帮助对话框里还有很
多开发实例的代码。
显示某个接口的详细信息 开发实例代码
ESRI Object Browser
点击开始->所有程序->ArcGIS->DeveloperTools-
>ESRI Object Browser将显示对象浏览器对话框。利
用该对话框我们可以查找我们需要了解的对象、接口
、枚举和结构,并显示详细信息。
ESRI Object Browser
查找方法:
根据组件类名、接口名、属性或方法查找组件类。
根据接口名、属性或方法查找接口。
根据枚举名、成员名、成员值查找枚举。
根据结构名、成员名查找结构。
查找中的匹配条件可以是完全匹配,也可以是包含关
系。如是包含关系,则显示包含输入字符的所有对象
(接口、枚举和结构),选择其中一个将显示该对象
(接口、枚举和结构)的详细信息。
2012/2/13
11
ArcGIS Resource Center
网址: http://resources.arcgis.com/
主要内容:
在线帮助
产品介绍
行业应用
解决
论坛
本文档为【GIS开发_01_ArcObjects基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。