ArcObjects开发与实践.ppt_第1页
ArcObjects开发与实践.ppt_第2页
ArcObjects开发与实践.ppt_第3页
ArcObjects开发与实践.ppt_第4页
ArcObjects开发与实践.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcObjects开发与实践 2006 12 18 AO是什么 AO ArcObjects的缩写 是ESRI公司ArcGIS 家族中应用程序ArcMap ArcCatalog 和ArcScene 的开发平台 是基于Microsoft COM技术所构建的一系列COM组件集 开发人员可以在AO组件对象的基础上开发出更加强大灵活的应用系统 先来看一个AO 演示 Hello World第一个AO程序 PrivateFunctionMxDocument OpenDocument AsBooleanDimpmapAsIMapSetpmap NewMappmap Name Hello world MsgBoxpmap Name EndFunction 怎样学好AO 深入理解面向对象技术掌握一些COM的知识理解AO对象图熟悉一门编程语言依葫芦画瓢实践是检验真理的唯一标准 关于面向对象 AO对象图 关于COM COM ComponentObjectModel 是微软最高级的二进制通信规范 用于软件组件间跨越多个进程 机器和操作系统进行互操作 COM定义了组件程序之间进行交互的标准 而且也提供了组件程序运行所需要的环境 一般来说 COM库由操作系统加以实现 我们不必关心其实现的细节 COM通常的发布形式是 以win32动态链接库 DLL 或可执行文件 EXE 的形式发布 COM特点 可重用性 多态性 封装性 与语言无关性 接口不变性 COM对象 COM对象和 Net类对象概念是不同的 有以下几点不同 COM对象的客户必须自己管理COM对象的生存期 而 NET对象的生存期由CLR CommonLanguageRuntime 来管理 即通过GC GarbageCollection 机制自动回收 COM对象的客户通过调用QueryInterface查询COM对象是否支持某个接口并得到其接口指针 而 NET对象的客户使用Reflection System Reflection 来获得对象功能的描述 包括方法属性等 COM对象的客户通过指针引用COM对象 对象在内存中的位置是不变的 而 NET对象在内存中的驻留由 NET框架执行环境 executionenvironment 来管理 对象在内存中的位置是可变的 比如出于优化性能的考虑 同时会更新所有对对象的引用 这一点也是以CLR中不使用指针为前提的 为了实现传统的COM程序与 NET程序之间的相互调用 NET提供了包装类RCW RuntimeCallableWrapper 和CCW COMCallableWrapper 每当一个 NET客户程序调用一个COM对象的方法时就会创建一个RCW对象 每当一个COM客户程序调用一个 NET对象的方法时就会创建一个CCW对象 COM接口 COM接口是指组件对象的接口 它是包含了一组函数的数据结构 通过这组数据结构 客户代码可以调用组件对象的功能 组件对象间的访问都是通过接口来进行的 COM接口设计 接口设计必须满足 必须直接或间接地从IUNKNOWN接口继承 该接口在AO中是缺省的 接口必须有唯一的标识符号 接口不变性 一旦分配和公布了IID 接口定义的任何因素都不能改变 拥有接口的COM类 功能用接口被抽象地构造 类是去真正实现这些接口的 对象拥有一个或多个接口 接口是定义了一组方法和属性的逻辑关系与对象的通信是通过接口来进行的 入接口和出接口 Inboundinterface Outboundinterface 客户程序创建组件对象 然后客户程序调用对象所提供的功能 称为入接口 组件对象实现入接口 客户通过入接口调用对象提供的功能客户和组件都需要知道接口的类型信息如果一个COM对象支持一个或多个主动与客户程序进行通信的接口 则这种接口称为出接口客户端提供的COM对象实现出接口组件端的对象通过出接口调用客户提供的功能组件提供接口类型信息客户实现出接口 实现出接口的COM对象被称为接收器对象 sink 出接口代码示例 Map有IActiveViewEvents入接口PrivateWithEventsm pActiveViewEventsAsMapPublicSubSetEvents DimpMxDocAsIMxDocumentSetpMxDoc Application DocumentSetm pActiveViewEvents pMxDoc FocusMapEndSub 客户端实现接口PrivateSubm pActiveViewEvents SelectionChanged MsgBox SelectionChanged EndSub 进程内COM 本地COM和远程COM COM是一个客户 服务器体系 服务器 或对象 提供功能 并且客户程序使用这些功能 COM可以分为进程内COM 本地COM和远程COM三种 如果COM程序和客户程序在同一进程地址空间内 则称之为进程内COM 这通常是以DLL形式实现 本地COM是指同一计算机上不同进程中的EXE 远程COM则是指不同计算机中的DLL或EXE InstantiateCOMclasseswithaninterfaceDimAsInterfacesgrouppropertiesandmethods DimpGarbageAsIDriveSetpGarbage NewGarbageTruckpGarbage Fuel Full pGarbage Accelerate 使用ArcObjectsCOM类 调用COM接口中的方法和属性 定义一个变量指向一个接口实例化这个对象 Set 调用方法 设置属性只能使用你所声明接口中的方法 CreateanewRaceCarwithIDriveDimpCarAsIDriveSetpCar NewRaceCarpCar AcceleratepCar Fuel Full pCar PitStop COM类代码的实现 接口模块定义方法和属性类模块实现方法和属性客户端模块实例化类使用方法和属性 Client Server Interface AO对象图 关系符号 继承组成用来创建对应关系1 N联合 蛋 鸟 翅膀 羽毛 2 Abstract Class Class Class 小鸡 CoClass 巢 CoClass 类和他们相应的对象 ArcMapobjects MxDocument Map Layer FeatureLayer Application 不能被创建或实例化永远不能拥有一个抽象类的实例为子类定义通用的接口子类可以继承其接口 抽象类 没有阴影 可创建 使用New关键字DimpMapAsIMapSetpMap NewMap可以实例化 ObtainfromotherobjectsDimpMapAsIMapSetpMap pMxDocument FocusMap 可创建的类 CoClass 实例化类 Class 不能被创建的类不能使用New关键字可以从其他对象得到实例 DimpNewRowAsIRowSetpNewRow pTable CreateRow GettheDisplaytablefromthelayerDimpTableAsITableDimpDisplayTableAsIDisplayTableSetpDisplayTable pFLayerSetpTable pDisplayTable DisplayTableIfpTableIsNothingThenMsgBox TheLayerisnotjoined EndIf 属性和方法的符号表示 Property哑铃形状的图标Method 属性直接赋值 大部分ArcObjects属性属性包含一个值或是一个对象的拷贝不用Set关键字通过引用赋属性 一些ArcObjects的属性属性包含对一个对象的引用必须要用Set关键字如果引用对象发生了变化 对象的属性将同步受到影像 设置属性 pLayer Name PortMoresby NoSetkeyword SetpLayer FeatureClass pMoresbyData MustuseSet 返回一个值Name String返回一个对象的引用Document IDocumentStatusBar IStatusBar 获取属性 返回一个值DimstrNameAsStringDimpDocAsIDocumentDimpBarAsIStatusBarstrName Application NameMsgBoxstrName返回一个引用SetpDoc Application DocumentSetpBar Application StatusBarpBar Message 0 pDoc Title 棒棒糖类型的图标 寻找接口 这些接口也是有效的 但是详细的属性和方法必须在其它地方浏览 e g ObjectBrowser 该接口被本类使用 所有的属性和放都列表在类图中 继承接口是有效的 AO的组织划分 3DAnalystExtension 用于3D可视化和表面建模的组件对象 ApplicationFramework 让开发者在ArcMap和ArcCatalong中通过程序来定制用户界面 ArcCatalog 能够让开发者扩展数据对象模型并集成定制对象和视图到ArcCatalog应用框架中 ArcMap 提供了ArcMap应用程序的核心功能 用于操作和显示地图文档 ArcMapEditor 包括了对象编辑器扩展组件对象 要做编辑开发来这吧 Display GIS的一个重要应用就是数据表现 对国内的许多最终用户更是热衷于此 利用这里包含的对象可以完成诸如地图符号显示 图形编辑反馈轨迹 坐标转换和屏幕控制等功能 Geocoding 主要用于创建和管理地理编码服务等 AO的组织划分 Geodatabase AO开发中一个不可或缺 毕竟GIS的应用都是围绕数据展开的 所以有关的GIS数据创建 加载 管理和存储等都是通过这里的对象进行的 Geometry 不管是要素还是图形 涉及到空间信息的获取和应用来这儿找吧 IMS 提供了连接到ArcIM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论