您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 高中教育 > ArcEngine复习指导
GIS开发与应用GIS开发与应用——ArcEngine方法独立开发模式宿主型开发模式(组件式GIS基本思想)组件式GIS开发模式第1章GIS二次开发概述1.1GIS开发模式GIS开发与应用——ArcEngine方法1.2组件式GIS组件式GIS(ComGIS):采用了面向对象技术和组件式软件的GIS系统(包括基础平台和应用系统)。COM是组件式对象模型是组件式对象模型(ComponentObjectModel)的英文缩写。GIS开发模式包括:开发模式包括:独立开发模式、宿主型开发模式、组件式GIS开发模式。组件式GIS开发平台的结构有三种:基础组件、高级通用组件、行业性组件。GIS开发与应用——ArcEngine方法基础组件——面向空间数据管理,提供基本的交互过程。面向空间数据管理,提供基本的交互过程。高级通用组件——面向通用功能。行业性组件——抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。GIS开发与应用——ArcEngine方法第二章ArcEngine基础2.1ArcObjects与ArcEngine区别与联系2.2ArcEngine功能2.4组件对象模型COM2.5理解对象模型图OMD2.6ArcEngine类库结构GIS开发与应用——ArcEngine方法ArcEngine从功能层次上分为五部分:1.基本服务—由GIS核心ArcObjects构成,几乎所有GIS应用程序都需要,如要素几何体(Featuregeometry)和显示(Display)。2.数据存取—ArcGISEngine可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。3.地图表达—创建和显示带有符号和标注的地图。4.开发组件—用于快速开发应用程序的界面控件。5.运行时选项—ArcGISEngine运行时可以与标准功能或其它高级功能一起部署GIS开发与应用——ArcEngine方法6-72.4.1基本概念对象和类(ObjectsandClass)对象:系统中用来描述客观事物的一个实体,构成系统的一个基本单位。对象是如何产生的呢?它是由类实例化产生的。类描述了一组有相同特性(属性)和相同行为(方法)的对象。类与对象的关系就如模具和铸件的关系,对象是类的实例化结果,而类是对象的抽象。从软件设计的角度来说,从软件设计的角度来说,类就是一种数据结构,用于模拟现实存在的对象和关系。“汽车”类,包含了汽车这个类的共同状态(汽车的品牌、时速、马力、耗油量、颜色等汽车的品牌、时速、马力、耗油量、颜色等)与行为(汽车启动、行驶、加速、减速、刹车等)。“奔驰”是汽车类的一个对象。是汽车类的一个对象。人是一个类,司马迁、李白、杜甫都是对象。“动画猫”是一个类,Kitty、Grafield和Doraemon都是对象。GIS开发与应用——ArcEngine方法6-8在AO/AE里,COM对象众多,有象Map、Form、Layer等可见的对象,也有在表中产生查询结果集时的游标(等可见的对象,也有在表中产生查询结果集时的游标(Cursor)-这类不可见的对象。对象是由类(这类不可见的对象。对象是由类(CLASS)实例化产生的。接口(Interface)定义了一组方法和属性的数据结构,通过这组数据结构,可以调用组件对象的功能。定义了一组方法和属性的数据结构,通过这组数据结构,可以调用组件对象的功能。在面向对象编程中,人们通过类的接口使用类。只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。在面向对象编程中,人们通过类的接口使用类。只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。命名空间(NameSpace)用来组织类的,通常可以把相关联的类放在一个命名空间中,进行有效的管理。GIS开发与应用——ArcEngine方法6-9COM总结1.COM不是接口,也不是对象,它是一种二进制级别的组件通信标准组件通信标准。对象间的所有通信都是通过它们的接口来进行的2.符合COM标准的对象——COM对象。COM对象是实现了很多接口的对象对象是实现了很多接口的对象。3.COM对象必须实现Iunknown接口,它是默认实现的接口,这个接口是管理接口,它是默认实现的接口,这个接口是管理COM对象生命周期的,当COM对象不使用的时候,这个接口定义的方法负责释放内存。对象不使用的时候,这个接口定义的方法负责释放内存。4.QI,即所谓查询接口。由于COM对象有很多个接口,不同的接口管理着对象有很多个接口,不同的接口管理着COM的不同类型的方法,因此从一个接口可以使用的方法转到另一个接口可以使用的方法的过程称为的不同类型的方法,因此从一个接口可以使用的方法转到另一个接口可以使用的方法的过程称为QI,这个过程是由Idispatch接口管理的。5.每个组件都有一个独一无二的标识,这就是所谓的全球唯一标识符GUID。这个标识符就是COM组件的身份,它是一个128bits的数字,由系统自由分配。的数字,由系统自由分配。6.一个COM对象可以有多个接口,一个接口也完全可以被多个COM对象实现对象实现,通过实现这些接口,COM实现了面向对象的多态性(几个类可以有同样的接口,但是它们的实现可能是极不相同的几个类可以有同样的接口,但是它们的实现可能是极不相同的)。GIS开发与应用——ArcEngine方法7.COM对象的接口是抽象的,接口与类不同。因为接口没有任何的实现,所以不能通过自身实例化。因为接口没有任何的实现,所以不能通过自身实例化。接口由具体的类来实现由具体的类来实现,功能用接口抽象地模拟,并且用类去真正实现。8.COM中接口和类通常被当作‘做什么’(“What”)和‘怎么做’(“How”),接口定义一个对象能做什么(但自己什么都不做),类定义它怎么去做。9.缺省接口。每个COM对象产生后若没有指定接口,它们都有一个缺省接口。对象产生后若没有指定接口,它们都有一个缺省接口。ESRI对象库中的COM对象都使用IUnknown作为缺省接口。10.COM对象的接口是不可变的。接口永远都不会版本化。一旦定义下来并发布,接口不能够改变。接口永远都不会版本化。一旦定义下来并发布,接口不能够改变。6-10GIS开发与应用——ArcEngine方法ArcGIS中的多态指什么?许多ArcGIS的类都表现出多态的特性,其特点是在几个Classes中使用同一个Interface,但每一个Class却执行不同的methodsandproperties。举例:图层类型(layertypes)如RasterLayer,TinLayer,FeatureLayer等都具有同一个接口ILayer,但每一个图层类却执行不同的,但每一个图层类却执行不同的methodsandproperties。Map和PageLayout类都拥有IActivew和IGraphicsContainer等接口,但这两个类却执行不同的方法与属性。等接口,但这两个类却执行不同的方法与属性。ArcObjects/ArcEngine提供哪三种类?各有什么特点?AbstractClass,Coclass和Class。GIS开发与应用——ArcEngine方法6-12理解基本概念类和对象(ClassandObjects),接口和命名空间命名空间(NameSpace)GIS开发与应用——ArcEngine方法AO/AE中的3种类ArcObjects提供三种类AbstractClass,Coclass和Class,这三个类在对象模型图,这三个类在对象模型图OMD(ObjectModelDiagrams)中体现。AbstractClass(抽象类):不能直接创建新对象,只是用来派生AO/AE其他类。其他类。抽象类用于定义子类的公共接口,子类继承其定义的接口。OMD中每个抽象类至少有一个子类。中每个抽象类至少有一个子类。OMD符号为二维的内部有阴影的矩形。Coclass(Componentclasses)组件类:用new关键字创建对象或者从别的对象获得运行实例。关键字创建对象或者从别的对象获得运行实例。OMD符号为带阴影的3D矩形符号。IMappMap=newMapClass();IMappMap=axMapControl1.MapClass普通类:不能直接创建新对象,只能从其他类接口的属性或其他类的方法创建。不能直接创建新对象,只能从其他类接口的属性或其他类的方法创建。OMD符号:3D矩形内部没有阴影符号。AE中FeatureCursor就是一个普通类,FeatureCursor不能用new创建,但可通过创建,但可通过IFeatureLayer.Search()方法创建:IFeatureCursorpFeatureCursor=pFeatureLayer.Search(spatialFilter,false);GIS开发与应用——ArcEngine方法理解AO/AE对象模型图类与类的关系依赖关系一个对象有方法产生另一个对象。前者的周期决定后者的生命周期。一个对象有方法产生另一个对象。前者的周期决定后者的生命周期。例,WorkspaceFactory有3个方法(Create、Open和OpenFormFile)来创建或打开一个WorkSpace。WorkSpace依赖于WorkSpaceFactory。关联关系鹰和巢两个对象是松散的关联关系,可以从一个类的对象访问另一个类的对象。当其中一个不存在,另一个不消失。鹰和巢两个对象是松散的关联关系,可以从一个类的对象访问另一个类的对象。当其中一个不存在,另一个不消失。关联关系可能存在一对多或多对多关系:一只鹰拥有几个巢和一个巢几只鹰居住关联关系可能存在一对多或多对多关系:一只鹰拥有几个巢和一个巢几只鹰居住关联关系有方向性:单相关联和双向关联。组合关系羽毛与翅膀和鹰属于紧密的组合关系,是整体与部分的关系。羽毛与翅膀是鹰的一部分,当羽毛与翅膀和鹰属于紧密的组合关系,是整体与部分的关系。羽毛与翅膀是鹰的一部分,当鹰消失的时候,鹰的羽毛与翅膀也将不复存在。羽毛与翅膀的生命周期由鹰对象控制,但羽毛与翅膀的产生不受鹰对象控制。鹰消失的时候,鹰的羽毛与翅膀也将不复存在。羽毛与翅膀的生命周期由鹰对象控制,但羽毛与翅膀的产生不受鹰对象控制。继承关系鹰属于鸟类,是一种继承关系,父类与子类的关系。类间的继承是类功能的扩展。父类具有的任何属性与方法,子类同样具备,且子类在保存父类的属性与行为(方法)的基础上增加了自己特有的行为与属性。继承关系,父类与子类的关系。类间的继承是类功能的扩展。父类具有的任何属性与方法,子类同样具备,且子类在保存父类的属性与行为(方法)的基础上增加了自己特有的行为与属性。GIS开发与应用——ArcEngine方法6-15Relationshipsymbols三角形符号继承(Inheritance)菱形黑色小块组合(Composition)虚线前头带个箭头依赖(Instantiation)对应关系1:N一条直线表关联(Association)*____蛋鸟翅膀羽毛2AbstractClassClassClass鹰CoClass巢CoClass*GIS开发与应用——ArcEngine方法6-16类和他们相应的对象ArcMapobjectsMxDocumentMapLayer**FeatureLayerApplicationGIS开发与应用——ArcEngine方法第三章地图显示加载ShapeFile方法地图控件MapControl.AddShapeFile(文件目录,文件名(不含文件目录))。OpenDialog本试验设计添加Shapefile的三种方法如下:(1)地图控件.AddLayer(图层名);(2)地图控件.AddLayerFromFile(lyr文件名);(3)地图控件.AddShapeFile(文件目录,文件名(含文件扩展名))。GIS开发与应用——ArcEngine方法在某个控件中按下
本文标题:ArcEngine复习指导
链接地址:https://www.777doc.com/doc-2898281 .html