已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ArcObjects开发与实践,2006.12.18,AO是什么?,AO(ArcObjects的缩写)是ESRI公司ArcGIS 家族中应用程序ArcMap, ArcCatalog 和 ArcScene的开发平台。 是基于Microsoft COM技术所构建的一系列COM组件集。 开发人员可以在AO组件对象的基础上开发出更加强大灵活的应用系统。,先来看一个AO(演示),Hello,World 第一个AO程序 /Private Function MxDocument_OpenDocument() As Boolean Dim pmap As IMap Set pmap = New Map pmap.Name = “Hello,world“ MsgBox pmap.Name /End Function,怎样学好AO?,深入理解面向对象技术 掌握一些COM的知识 理解AO对象图 熟悉一门编程语言 依葫芦画瓢 实践是检验真理的唯一标准,关于面向对象,AO对象图,关于COM,COM(Component Object Model )是微软最高级的二进制通信规范,用于软件组件间跨越多个进程、机器和操作系统进行互操作。 COM定义了组件程序之间进行交互的标准,而且也提供了组件程序运行所需要的环境 。 一般来说,COM库由操作系统加以实现,我们不必关心其实现的细节 。 COM通常的发布形式是:以win32动态链接库(DLL)或可执行文件(EXE)的形式发布。 COM特点:可重用性、多态性、封装性、与语言无关性、接口不变性。,COM对象,COM对象和.Net类对象概念是不同的,有以下几点不同: COM对象的客户必须自己管理COM对象的生存期,而.NET对象的生存期由CLR(Common Language Runtime)来管理,即通过GC(Garbage Collection)机制自动回收。 COM对象的客户通过调用QueryInterface查询COM对象是否支持某个接口并得到其接口指针,而.NET对象的客户使用Reflection(System.Reflection.*)来获得对象功能的描述,包括方法属性等。 COM对象的客户通过指针引用COM对象,对象在内存中的位置是不变的,而.NET对象在内存中的驻留由.NET框架执行环境(execution environment)来管理,对象在内存中的位置是可变的,比如出于优化性能的考虑,同时会更新所有对对象的引用。这一点也是以CLR中不使用指针为前提的。 为了实现传统的COM程序与.NET程序之间的相互调用,.NET提供了包装类RCW(Runtime Callable Wrapper)和 CCW(COM Callable Wrapper)。每当一个.NET客户程序调用一个COM对象的方法时就会创建一个RCW对象,每当一个 COM客户程序调用一个.NET对象的方法时就会创建一个CCW对象。,COM接口,COM接口是指组件对象的接口,它是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能,组件对象间的访问 都是通过接口来进行的。,COM接口设计,接口设计必须满足: 必须直接或间接地从IUNKNOWN接口继承(该接口在AO中是缺省的); 接口必须有唯一的标识符号;接口不变性,一旦分配和公布了IID,接口定义的任何因素都不能改变。,拥有接口的COM类,功能用接口被抽象地构造, 类是去真正实现这些接口的。 对象拥有一个或多个接口 。 接口是定义了一组方法和属性的逻辑关系 与对象的通信是通过接口来进行的,入接口和出接口(Inbound interface,Outbound interface),客户程序创建组件对象,然后客户程序调用对象所提供的功能,称为入接口。 组件对象实现入接口,客户通过入接口调用对象提供的功能 客户和组件都需要知道接口的类型信息 如果一个COM对象支持一个或多个主动与客户程序进行通信的接口,则这种接口称为出接口 客户端提供的COM对象实现出接口 组件端的对象通过出接口调用客户提供的功能 组件提供接口类型信息 客户实现出接口,实现出接口的COM对象被称为接收器对象(sink),出接口代码示例,Map有IActiveViewEvents入接口 Private WithEvents m_pActiveViewEvents As Map Public Sub SetEvents() Dim pMxDoc As IMxDocument Set pMxDoc = Application.Document Set m_pActiveViewEvents = pMxDoc.FocusMap End Sub 客户端实现接口 Private Sub m_pActiveViewEvents_SelectionChanged() MsgBox “Selection Changed“ End Sub,进程内COM、本地COM和远程COM,COM是一个客户服务器体系,服务器(或对象)提供功能,并且客户程序使用这些功能。COM可以分为进程内COM、本地COM和远程COM三种: 如果COM程序和客户程序在同一进程地址 空间内,则称之为进程内COM,这通常是以DLL形式实现。 本地COM是指同一计算机上不同进程中的EXE。 远程COM则是指 不同计算机中的DLL或EXE。,Instantiate COM classes with an interface Dim As Interfaces group properties and methods,Dim pGarbage As IDrive Set pGarbage = New GarbageTruck pGarbage.Fuel = “Full“ pGarbage.Accelerate,使用 ArcObjects COM类,调用COM接口中的方法和属性,定义一个变量指向一个接口 实例化这个对象 (Set) 调用方法,设置属性 只能使用你所声明接口中的方法,Create a new RaceCar with IDrive Dim pCar As IDrive Set pCar = New RaceCar pCar.Accelerate pCar.Fuel = “Full“ pCar.PitStop,COM 类代码的实现,接口模块 定义方法和属性 类模块 实现方法和属性 客户端模块 实例化类 使用方法和属性,Client,Server,Interface,AO对象图,关系符号,继承 组成 用来创建 对应关系 1:N 联合,*,_,蛋,鸟,翅膀,羽毛,2,Abstract,Class,Class,Class,小鸡,CoClass,巢,CoClass,*,类和他们相应的对象,ArcMap objects,MxDocument,Map,Layer,*,*,FeatureLayer,Application,不能被创建或实例化 永远不能拥有一个抽象类的实例 为子类定义通用的接口 子类可以继承其接口,抽象类(没有阴影),可创建:使用New关键字 Dim pMap As IMap Set pMap = New Map 可以实例化: Obtain from other objects Dim pMap As IMap Set pMap = pMxDocument.FocusMap,可创建的类 (CoClass),实例化类 (Class),不能被创建的类 不能使用 New 关键字 可以从其他对象得到实例,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,属性和方法的符号表示,Property 哑铃形状的图标 Method,属性直接赋值: 大部分ArcObjects属性 属性包含一个值或是一个对象的拷贝 不用 Set 关键字 通过引用赋属性: 一些ArcObjects的属性 属性包含对一个对象的引用 必须要用 Set关键字 如果引用对象发生了变化,对象的属性将同步受到影像,设置属性,pLayer.Name = “Port Moresby“ No Set keyword,Set pLayer.FeatureClass = pMoresbyData Must use Set!,返回一个值 Name: String 返回一个对象的引用 Document: IDocument StatusBar: 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.Title,棒棒糖类型的图标 ( ),寻找接口,这些接口也是有效的。但是详细的 属性和方法必须在其它地方浏览。 (e.g., Object Browser).,该接口被本类使用. 所有的属性和放都列表在类图中.,继承接口是有效的,AO的组织划分,3D Analyst Extension -用于3D可视化和表面建模的组件对象; Application Framework -让开发者在ArcMap和ArcCatalong中通过程序来定制用户界面; ArcCatalog - 能够让开发者扩展数据对象模型并集成定制对象和视图到ArcCatalog应用框架中;. ArcMap - 提供了ArcMap应用程序的核心功能,用于操作和显示地图文档; ArcMap Editor- 包括了对象编辑器扩展组件对象,要做编辑开发来这吧; Display - GIS的一个重要应用就是数据表现,对国内的许多最终用户更是热衷于此,利用这里包含的对象可以完成诸如地图符号显示、图形编辑 反馈轨迹、坐标转换和屏幕控制等功能; Geocoding - 主要用于创建和管理地理编码服务等;,AO的组织划分,Geodatabase- AO开发中一个不可或缺,毕竟GIS的应用都是围绕数据展开的,所以有关的GIS数据创建、加载、管理和存储等都是通过这里的对 象进行的; Geometry- 不管是要素还是图形,涉及到空间信息的获取和应用来这儿找吧; IMS -提供了连接到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陶瓷烧成工高级工作计划及安排
- 职业女性回归后的身心调适指导手册
- 水电安装工程造价控制全解一级工程中需掌握要点
- 注册营养师工作手册营养健康计划与实践
- 互联网背景下无人机行业发展趋势分析报告针对初修岗位
- 磨工安全培训教材全集
- 县级体育人才飞镖面试指南
- 语言教师-TESOL-认证备考与教学计划安排
- 平舆八中2025寒假通知书
- 平顺小学寒假放假通知书
- 网络意识形态课件
- 《“十五五”冷链物流发展规划》发布 2035年全面建成现代冷链物流体系
- 2025中国邮政校园招聘补录笔试历年参考题库附带答案详解
- 2025海康威视视频安全门禁系统用户手册
- 乡镇卫生院基本药物实施情况汇报
- 发动机装配工艺培训课件
- 5.1延续文化血脉 教案 -2025-2026学年统编版道德与法治九年级上册
- 二人合租厂房合同协议书
- 2025年福州国有资本投资运营集团有限公司社会公开招聘12人笔试参考题库附带答案详解(10套)
- 左房肺静脉CTA扫描技术
- 成瘾机制干预策略-洞察及研究
评论
0/150
提交评论