ArcObjects开发与实践

上传人:206****923 文档编号:51720563 上传时间:2018-08-16 格式:PPT 页数:33 大小:545.50KB
返回 下载 相关 举报
ArcObjects开发与实践_第1页
第1页 / 共33页
ArcObjects开发与实践_第2页
第2页 / 共33页
ArcObjects开发与实践_第3页
第3页 / 共33页
ArcObjects开发与实践_第4页
第4页 / 共33页
ArcObjects开发与实践_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《ArcObjects开发与实践》由会员分享,可在线阅读,更多相关《ArcObjects开发与实践(33页珍藏版)》请在金锄头文库上搜索。

1、ArcObjects开发与实践2006.12.18AO是什么?lAO(ArcObjects的缩写)是ESRI公司 ArcGIS 家族中应用程序ArcMap, ArcCatalog 和 ArcScene的开发平台。l是基于Microsoft COM技术所构建的一系列 COM组件集。l开发人员可以在AO组件对象的基础上开发出 更加强大灵活的应用系统。 先来看一个AO(演示)lHello,World 第一个AO程序l/Private Function MxDocument_OpenDocument() As BooleanDim pmap As IMap Set pmap = New Map pma

2、p.Name = “Hello,world“ MsgBox pmap.Name /End Function怎样学好AO?l深入理解面向对象技术l掌握一些COM的知识 l理解AO对象图l熟悉一门编程语言 l依葫芦画瓢 l实践是检验真理的唯一标准关于面向对象AO对象图关于COMlCOM(Component Object Model )是微软最高级的 二进制通信规范,用于软件组件间跨越多个进程、机 器和操作系统进行互操作。lCOM定义了组件程序之间进行交互的标准,而且也 提供了组件程序运行所需要的环境 。l一般来说,COM库由操作系统加以实现,我们不必 关心其实现的细节 。lCOM通常的发布形式是:

3、以win32动态链接库(DLL) 或可执行文件(EXE)的形式发布。lCOM特点:可重用性、多态性、封装性、与语言无 关性、接口不变性。COM对象COM对象和.Net类对象概念是不同的,有以下几点不同:lCOM对象的客户必须自己管理COM对象的生存期,而.NET对象的生 存期由CLR(Common Language Runtime)来管理,即通过 GC(Garbage Collection)机制自动回收。 lCOM对象的客户通过调用QueryInterface查询COM对象是否支持某个 接口并得到其接口指针,而.NET对象的客户使用 Reflection(System.Reflection.*

4、)来获得对象功能的描述,包括方法属 性等。 lCOM对象的客户通过指针引用COM对象,对象在内存中的位置是不 变的,而.NET对象在内存中的驻留由.NET框架执行环境(execution environment)来管理,对象在内存中的位置是可变的,比如出于优化 性能的考虑,同时会更新所有对对象的引用。这一点也是以CLR中不 使用指针为前提的。 l为了实现传统的COM程序与.NET程序之间的相互调用,.NET提供了 包装类RCW(Runtime Callable Wrapper)和 CCW(COM Callable Wrapper)。每当一个.NET客户程序调用一个COM对象的方法时就会 创建一

5、个RCW对象,每当一个 COM客户程序调用一个.NET对象的方 法时就会创建一个CCW对象。 COM接口lCOM接口是指组件对象的接口,它是包含了 一组函数的数据结构,通过这组数据结构,客 户代码可以调用组件对象的功能,组件对象间 的访问 都是通过接口来进行的。 COM接口设计接口设计必须满足:l必须直接或间接地从IUNKNOWN接口继承( 该接口在AO中是缺省的);l接口必须有唯一的标识符号;接口不变性,一 旦分配和公布了IID,接口定义的任何因素都 不能改变。 拥有接口的COM类l功能用接口被抽象地构造,l类是去真正实现这些接口的。l对象拥有一个或多个接口 。l接口是定义了一组方法和属性的

6、逻辑关系l与对象的通信是通过接口来进行的 RaceCarAccelerate BrakeFuel停靠站圈速度IRaceIDrive垃圾车加速 刹车燃料拾起倾倒IGarbageIDrive入接口和出接口(Inbound interface,Outbound interface) l客户程序创建组件对象,然后客户程序调用对象所提 供的功能,称为入接口。l组件对象实现入接口,客户通过入接口调用对象提供的功能l客户和组件都需要知道接口的类型信息l如果一个COM对象支持一个或多个主动与客户程序 进行通信的接口,则这种接口称为出接口 l客户端提供的COM对象实现出接口l组件端的对象通过出接口调用客户提供的

7、功能l组件提供接口类型信息l客户实现出接口,实现出接口的COM对象被称为接收器对 象(sink)出接口代码示例Map有IActiveViewEvents入接口 Private WithEvents m_pActiveViewEvents As MapPublic Sub SetEvents()Dim pMxDoc As IMxDocumentSet pMxDoc = Application.DocumentSet m_pActiveViewEvents = pMxDoc.FocusMapEnd Sub客户端实现接口Private Sub m_pActiveViewEvents_Selectio

8、nChanged()MsgBox “Selection Changed“End Sub进程内COM、本地COM和远程COMCOM是一个客户服务器体系,服务器(或对象) 提供功能,并且客户程序使用这些功能。COM可以 分为进程内COM、本地COM和远程COM三种:l如果COM程序和客户程序在同一进程地址 空间内, 则称之为进程内COM,这通常是以DLL形式实现。l本地COM是指同一计算机上不同进程中的EXE。l远程COM则是指 不同计算机中的DLL或EXE。 lInstantiate COM classes with an interfacelDim As lInterfaces group p

9、roperties and methodsDim pGarbage As IDrive Set pGarbage = New GarbageTruckpGarbage.Fuel = “Full“ pGarbage.Accelerate使用 ArcObjects COM类GarbageTruckAccelerate BrakeFuelPickUpDumpIGarbageIDrive调用COM接口中的方法和属性l定义一个变量指向一个接口l实例化这个对象 (Set) l调用方法,设置属性l只能使用你所声明接口中的方法Create a new RaceCar with IDrive Dim pCar

10、As IDrive Set pCar = New RaceCar pCar.Accelerate pCar.Fuel = “Full“pCar.PitStopRaceCarAccelerate BrakeFuelPitStopLapTimeIRaceIDriveCOM 类代码的实现 l接口模块l定义方法和属性l类模块l实现方法和属性l客户端模块l实例化类l使用方法和属性ClientServerInterfaceAO对象图关系符号l继承l组成l用来创建l对应关系 1:Nl联合*_蛋鸟翅膀羽毛2AbstractClassClassClass小鸡 CoClass巢 CoClass*l类和他们相应的对

11、象ArcMap objectsMxDocumentMapLayer*FeatureLayerApplicationl不能被创建或实例化l永远不能拥有一个抽象类的实例l为子类定义通用的接口l子类可以继承其接口抽象类(没有阴影)l可创建:使用New关键字 Dim pMap As IMap Set pMap = New Mapl可以实例化: Obtain from other objects Dim pMap As IMap Set pMap = pMxDocument.FocusMap可创建的类 (CoClass)实例化类 (Class)l不能被创建的类l不能使用 New 关键字l可以从其他对象得

12、到实例Dim pNewRow As IRow Set pNewRow = pTable.CreateRow生 成 + Get the Display table from the layer Dim pTable As ITable Dim pDisplayTable As IDisplayTable Set pDisplayTable = pFLayer Set pTable = pDisplayTable.DisplayTable If pTable Is Nothing Then MsgBox “The Layer is not joined“ End If属性和方法的符号表示lProp

13、ertyl哑铃形状的图标lMethodProperty Get (read)Property Set (write)l属性直接赋值: 大部分ArcObjects属性l属性包含一个值或是一个对象的拷贝l不用 Set 关键字l通过引用赋属性: 一些ArcObjects的属性l属性包含对一个对象的引用 l必须要用 Set关键字l如果引用对象发生了变化,对象的属性将同步受到影 像设置属性pLayer.Name = “Port Moresby“ No Set keywordSet pLayer.FeatureClass = pMoresbyData Must use Set!l返回一个值lName: S

14、tring l返回一个对象的引用lDocument: IDocumentlStatusBar: IStatusBar获取属性返回一个值 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.Titlel棒棒糖类型的图标 ( )寻找接口这些接口也是有效的

15、。但是详细的 属性和方法必须在其它地方浏览。 (e.g., Object Browser).该接口被本类使用. 所有的属性和放都列表在类图中.继承接口是有效的AO的组织划分l3D Analyst Extension -用于3D可视化和表面建模的组件对象;lApplication Framework -让开发者在ArcMap和ArcCatalong中通 过程序来定制用户界面;lArcCatalog - 能够让开发者扩展数据对象模型并集成定制对象和 视图到ArcCatalog应用框架中;.lArcMap - 提供了ArcMap应用程序的核心功能,用于操作和显示 地图文档;lArcMap Edito

16、r- 包括了对象编辑器扩展组件对象,要做编辑开发 来这吧;l Display - GIS的一个重要应用就是数据表现,对国内的许多最终 用户更是热衷于此,利用这里包含的对象可以完成诸如地图符号 显示、图形编辑 反馈轨迹、坐标转换和屏幕控制等功能;l Geocoding - 主要用于创建和管理地理编码服务等;AO的组织划分l Geodatabase- AO开发中一个不可或缺,毕竟GIS的应用都是围 绕数据展开的,所以有关的GIS数据创建、加载、管理和存储等都 是通过这里的对 象进行的;l Geometry- 不管是要素还是图形,涉及到空间信息的获取和应 用来这儿找吧;l IMS -提供了连接到ArcIMS服务器并访问ArcIMS图象和要素服 务的功能;lNetWork- 提供了网络创建、管理和完成分析操作等功能,打算 定制和开发特定网络应用可以利用NetWork对象;lOutPut -有入就有出,如果想把制作好的地图输出怎么办,通过 这里提供的对象来完成吧;lRaster - 用于访问和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号