ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:32.93KB ,
资源ID:9019198      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9019198.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ArcEngine复习指导.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ArcEngine复习指导.docx

1、ArcEngine复习指导GIS开发与应用GIS开发与应用ArcEngine方法 独立开发模式 宿主型开发模式 ( 组件式GIS 基本思想 )组件式GIS 开发模式第1章GIS 二次开发概述1.1 GIS 开发模式GIS开发与应用ArcEngine方法1.2 组件式GIS 组件式 GIS (ComGIS) :采用了 面向对象技术 和 组件式软件的GIS 系统(包括基础平台和应用系统)。 COM是组件式对象模型是组件式对象模型(Component Object Model) 的英文缩写。 GIS开发模式包括:开发模式包括: 独立开发模式、 宿主型开发模式 、 组件式GIS 开发模式。组件式GIS

2、 开发平台的结构有三种: 基础组件 、高级通用组件、行业性组件。GIS开发与应用ArcEngine方法 基础组件面向空间数据管理,提供基本的交互过程。面向空间数据管理,提供基本的交互过程。 高级通用组件 面向通用功能。 行业性组件抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。GIS开发与应用ArcEngine方法第二章 ArcEngine 基础2.1 ArcObjects 与ArcEngine 区别与联系2.2 ArcEngine 功能2.4 组件对象模型COM2.5 理解对象模型图OMD2.6 ArcEngine 类库结构GIS开发与应用ArcEngine方法ArcEngine

3、 从功能层次上分为五部分:1 基本服务由GIS 核心ArcObjects 构成,几乎所有GIS应用程序都需要,如要素几何体(Feature geometry)和显示(Display)。2 数据存取ArcGIS Engine 可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。3地图表达创建和显示带有符号和标注的地图。4 开发组件用于快速开发应用程序的界面控件。5 运行时选项ArcGIS Engine 运行时可以与标准功能或其它高级功能一起部署GIS开发与应用ArcEngine方法6-72.4.1 基本概念对象和类( Objects and Class ) 对象:系

4、统中用来描述客观事物的一个实体,构成系统的一个基本单位。 对象是如何产生的呢?它是由类实例化产生的。 类描述了一组有相同特性(属性)和相同行为(方法)的对象。 类与对象的关系就如模具和铸件的关系, 对象是类的实例化结果,而类是对象的抽象。 从软件设计的角度来说,从软件设计的角度来说, 类就是一种数据结构, 用于模拟现实存在的对象和关系。 “ 汽车” 类,包含了汽车这个类的共同状态(汽车的品牌、时速、马力、耗油量、颜色等汽车的品牌、时速、马力、耗油量、颜色等) 与行为(汽车启动、行驶、加速、减速、刹车等)。“ 奔驰”是汽车类的一个对象。是汽车类的一个对象。 人是一个类,司马迁、李白、杜甫都是对象

5、。 “ 动画猫” 是一个类,Kitty 、Grafield和Doraemon 都是对象。GIS开发与应用ArcEngine方法6-8 在AO/AE 里,COM 对象众多,有象Map 、Form 、Layer等可见的对象,也有在表中产生查询结果集时的游标(等可见的对象,也有在表中产生查询结果集时的游标(Cursor )-这类不可见的对象。对象是由类(这类不可见的对象。对象是由类(CLASS )实例化产生的。 接口(Interface)定义了一组方法和属性的数据结构,通过这组数据结构,可以调用组件对象的功能。定义了一组方法和属性的数据结构,通过这组数据结构,可以调用组件对象的功能。在面向对象编程中

6、,人们通过类的接口使用类。只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。在面向对象编程中,人们通过类的接口使用类。只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。 命名空间(NameSpace)用来组织 类 的,通常可以把 相关联的类放在一个命名空间中,进行有效的管理。GIS开发与应用ArcEngine方法6-9COM 总结 1. COM 不是接口,也不是对象 , 它是一种 二进制级别的组件通信标准组件通信标准 。 对象间的所有通信都是通过它们的接口来进行的 2. 符合COM 标准的对象COM 对

7、象。 COM对象是实现了很多接口的对象对象是实现了很多接口的对象 。 3. COM 对象必须实现Iunknown接口,它是默认实现的接口,这个接口是管理接口,它是默认实现的接口,这个接口是管理COM 对象生命周期的,当COM对象不使用的时候,这个接口定义的方法负责释放内存。对象不使用的时候,这个接口定义的方法负责释放内存。 4. QI ,即所谓查询接口 。由于COM对象有很多个接口,不同的接口管理着对象有很多个接口,不同的接口管理着COM的不同类型的方法,因此从一个接口可以使用的方法转到另一个接口可以使用的方法的过程称为的不同类型的方法,因此从一个接口可以使用的方法转到另一个接口可以使用的方法

8、的过程称为QI ,这个过程是由Idispatch 接口管理的。 5. 每个组件都有一个独一无二的标识,这就是所谓的全球唯一标识符GUID 。这个标识符就是COM 组件的身份,它是一个128bits的数字,由系统自由分配。的数字,由系统自由分配。 6. 一个COM 对象可以有多个接口,一个接口也完全可以被多个COM对象实现对象实现 ,通过实现这些接口,COM 实现了面向对象的多态性 (几个类可以有同样的接口,但是它们的实现可能是极不相同的几个类可以有同样的接口,但是它们的实现可能是极不相同的 )。GIS开发与应用ArcEngine方法 7.COM 对象的接口是抽象的,接口与类不同。因为接口没有任

9、何的实现,所以不能通过自身实例化。因为接口没有任何的实现,所以不能通过自身实例化。 接口由具体的类来实现由具体的类来实现 , 功能用接口抽象地模拟 ,并且用类去真正实现。 8. COM 中接口和类通常被当作 做什么 (“What”) 和 怎么做(“How”) , 接口定义一个对象能做什么( 但自己什么都不做 ) ,类定义它怎么去做 。 9. 缺省接口。每个COM 对象产生后若没有指定接口,它们都有一个缺省接口。对象产生后若没有指定接口,它们都有一个缺省接口。ESRI 对象库中的COM 对象都使用IUnknown 作为缺省接口。 10.COM 对象的接口是不可变的。接口永远都不会版本化。一旦定义

10、下来并发布,接口不能够改变。接口永远都不会版本化。一旦定义下来并发布,接口不能够改变。6-10GIS开发与应用ArcEngine方法 ArcGIS 中的多态指什么?许多ArcGIS 的类都表现出 多态的特性, 其特点是在几个Classes中使用同一个Interface ,但每一个Class 却执行不同的methodsand properties 。举例: 图层类型(layer types ) 如RasterLayer, TinLayer,FeatureLayer 等都具有同一个接口ILayer,但每一个图层类却执行不同的,但每一个图层类却执行不同的methods and properties

11、。Map 和PageLayout 类都拥有IActivew 和IGraphicsContainer等接口,但这两个类却执行不同的方法与属性。等接口,但这两个类却执行不同的方法与属性。ArcObjects/ArcEngine 提供哪三种类?各有什么特点?Abstract Class ,Coclass 和Class 。GIS开发与应用ArcEngine方法6-12理解基本概念 类和对象(Class and Objects ),接口和 命名空间命名空间(NameSpace)GIS开发与应用ArcEngine方法AO/AE 中的3 种类 ArcObjects 提供三种类Abstract Class ,

12、Coclass 和Class,这三个类在对象模型图,这三个类在对象模型图OMD (Object Model Diagrams) 中体现。 Abstract Class (抽象类): 不能直接创建新对象,只是用来派生AO/AE其他类。其他类。 抽象类用于定义子类的公共接口,子类继承其定义的接口。 OMD中每个抽象类至少有一个子类。中每个抽象类至少有一个子类。 OMD 符号为二维的内部有阴影的矩形。 Coclass (Component classes )组件类: 用new关键字创建对象或者从别的对象获得运行实例。关键字创建对象或者从别的对象获得运行实例。 OMD 符号为带阴影的3D 矩形符号。I

13、Map pMap = new MapClass( ); IMap pMap = axMapControl1.Map Class 普通类: 不能直接创建新对象,只能从其他类接口的属性或其他类的方法创建。不能直接创建新对象,只能从其他类接口的属性或其他类的方法创建。OMD 符号: 3D 矩形内部没有阴影符号。 AE 中FeatureCursor 就是一个普通类, FeatureCursor 不能用new创建,但可通过创建,但可通过I FeatureLayer.Search ( ) 方法创建:IFeatureCursor pFeatureCursor = pFeatureLayer.Search(s

14、patialFilter, false);GIS开发与应用ArcEngine方法理解AO/AE 对象模型图 类与类的关系 依赖关系 一个对象有方法产生另一个对象。前者的周期决定后者的生命周期。一个对象有方法产生另一个对象。前者的周期决定后者的生命周期。 例,WorkspaceFactory 有3 个方法(Create 、Open 和OpenFormFile )来创建或打开一个WorkSpace 。WorkSpace 依赖于WorkSpaceFactory 。 关联关系 鹰和巢两个对象是松散的关联关系,可以从一个类的对象访问另一个类的对象。当其中一个不存在,另一个不消失。鹰和巢两个对象是松散的关

15、联关系,可以从一个类的对象访问另一个类的对象。当其中一个不存在,另一个不消失。关联关系可能存在一对多或多对多关系:一只鹰拥有几个巢和一个巢几只鹰居住关联关系可能存在一对多或多对多关系:一只鹰拥有几个巢和一个巢几只鹰居住关联关系有方向性: 单相关联和双向关联。 组合关系 羽毛与翅膀和鹰属于紧密的组合关系,是整体与部分的关系。羽毛与翅膀是鹰的一部分,当羽毛与翅膀和鹰属于紧密的组合关系,是整体与部分的关系。羽毛与翅膀是鹰的一部分,当 鹰消失的时候,鹰的羽毛与翅膀也将不复存在。羽毛与翅膀的生命周期由鹰对象控制,但羽毛与翅膀的产生不受鹰对象控制。鹰消失的时候,鹰的羽毛与翅膀也将不复存在。羽毛与翅膀的生命

16、周期由鹰对象控制,但羽毛与翅膀的产生不受鹰对象控制。 继承关系 鹰属于鸟类,是一种 继承关系,父类与子类的关系。类间的继承是类功能的扩展。父类具有的任何属性与方法,子类同样具备,且子类在保存父类的属性与行为(方法)的基础上增加了自己特有的行为与属性。继承关系,父类与子类的关系。类间的继承是类功能的扩展。父类具有的任何属性与方法,子类同样具备,且子类在保存父类的属性与行为(方法)的基础上增加了自己特有的行为与属性。GIS开发与应用ArcEngine方法6-15Relationship symbols三角形符号 继承 ( Inheritance )菱形黑色小块 组合 ( Composition )

17、虚线前头带个箭头 依赖 ( Instantiation )对应关系 1 :N一 条直线表 关联 (Association )*_蛋鸟翅膀羽毛2AbstractClassClassClass鹰CoClass巢CoClass*GIS开发与应用ArcEngine方法6-16 类和他们相应的对象ArcMap objectsMxDocumentMapLayer*FeatureLayerApplicationGIS开发与应用ArcEngine方法第三章 地图显示 加载ShapeFile 方法 地图控件MapControl. AddShapeFile ( 文件目录, 文件名( 不含文件目录)。OpenDia

18、log本试验设计添加Shapefile 的三种方法如下:(1 )地图控件.AddLayer ( 图层名) ;(2 )地图控件. AddLayerFromFile (lyr 文件名) ;(3 )地图控件. AddShapeFile ( 文件目录, 文件名( 含文件扩展名) 。GIS开发与应用ArcEngine方法 在某个控件中按下鼠标任何键时触发OnMouseDown事件,如事件,如axTOCControl1 中按下鼠标键产生的事件名为axTOCControl1_OnMouseDown , axMapControl1中按下鼠标键产生的事件名为中按下鼠标键产生的事件名为axMapControl1_

19、OnMouseDown 。 OnMouseDown: 当在 MapControl/PageLayout/TOCControl 等控件上按下鼠标时,触发该事件;axMapControl1_OnMouseDown OnMapReplaced: Fires after the Map contained by theMapControl has been replaced. 当MapControl中导入地图文档时,触发该事件中导入地图文档时,触发该事件; OnMouseMove: 当在 MapControl/PageLayout/TOCControl 等控件上移动鼠标时,触发该事件;GIS开发与应用

20、ArcEngine方法3.2.2.2 添加引用 (Add ArcGIS Reference) 首先 工程-“引用”程序集(Assembly) :使用.NET开发ArcGIS Engine程序使用的组件被称为程序集,AE中一般是dll文件,一个程序集包括一个或多个命名空间。添加程序集引用意在告诉编译器,我的这个程序中使用了那些外部的库,他们都在哪里;添加程序集引用意在告诉编译器,我的这个程序中使用了那些外部的库,他们都在哪里; 如添加ESRI.ArcGIS.Controls程序集(放大ControlsMapZoomInToolClass、缩小、打开文件、保存文件等ArcMap中常用用的命令都在C

21、ontrols 库); 然后在全局定义前使用using命令引用, using命令意在告诉编译器,我这个程序里使用了某个命名空间,不用再写他的全名了,让编译器帮你去找。命令意在告诉编译器,我这个程序里使用了某个命名空间,不用再写他的全名了,让编译器帮你去找。引用命名空间主要是为了减少冗余代码,比如要使用ControlsMapZoomInToolClass ,如果在工程前添加了usingESRI.ArcGIS.Controls, 可以直接用“ControlsMapZoomInToolClass“简称来调用他,否则用全称简称来调用他,否则用全称GIS开发与应用ArcEngine方法 利用地图控件Ma

22、pControl. AddShapeFile ( 文件目录, 文件名( 不含文件目录) 方法加载ShapeFile文件的代码实现。如文件的代码实现。如 axMapControl1. AddShapeFile (几个参数?)Path 类的两个方法System.IO.Path.GetDirectory ()System.IO.Path.GetFileName ()GIS开发与应用ArcEngine方法 加载ShapeFile 的最简单的一种方法地图控件名. AddShapeFile()如()如 axMapControl1. AddShapeFile (几个参数?)( 文件目录, 文件名) d:ac

23、dChina.shp(d:acd, China.shp) Path 类的两个方法System.IO.Path.GetDirectory ()System.IO.Path.GetFileName ()GIS开发与应用ArcEngine方法通用对话框 不同的Windows 应用软件常常使用功能相同的对话框,比如“ 打开” 、“ 保存” 、“ 打印” 等对话框,这类对话框称为通用对话框。C# 中如何使用这些通用对话框?使用通用对话框的两种方法: 在设计窗体时,从工具箱向窗体上拖放一个通用对话框控件,在程序中使用到这个对话框时设置它的属性,并调用它的在设计窗体时,从工具箱向窗体上拖放一个通用对话框控件

24、,在程序中使用到这个对话框时设置它的属性,并调用它的ShowDialog( ) 方法。 在运行的时刻创建通用对话框对象、设置它的属性、调用它的ShowDialog方法。这种方法创建的通用对话框对象是临时的,生命期通常很短,比较节约资源。方法。这种方法创建的通用对话框对象是临时的,生命期通常很短,比较节约资源。GIS开发与应用ArcEngine方法 打开文件对话框 , 保存对话框打开文件对话框 : 所对应的类是OpenFileDialog 。OpenFileDialog 类和SaveFileDialog 类都继承自抽象类FileDialog,它们有一些共同的属性和方法。,它们有一些共同的属性和方

25、法。 ShowDialog () 方法显示; if (pOpenFileDialog.ShowDialog() = DialogResult.OK) GIS开发与应用ArcEngine方法 FileName:String 类型,返回用户选择的文件名称,包括文件的路径和文件名。这个属性只能返回一个文件的名称。返回用户选择的文件名称,包括文件的路径和文件名。这个属性只能返回一个文件的名称。stringpPath = openFileDialog1.FileName; Fileter:String 类型,用来指定“ 文件类型”下拉列表框中的文件过滤选项,每个文件的过滤选项包括描述和过滤器两部分,它们

26、之间用下拉列表框中的文件过滤选项,每个文件的过滤选项包括描述和过滤器两部分,它们之间用“|”隔开。当有多个文件过滤选项时,它们之间也使用隔开。当有多个文件过滤选项时,它们之间也使用“|” 分隔开,openFileDialog1.Filter = “shapefile文件(*.shp)|*.shp”; 字符串“Text files(*.txt)|*.txt|Allfiles(*.*)|”指定了两个文件的过滤选项。指定了两个文件的过滤选项。 InitialDirectory:String类型,对话框显示时打开的文件夹的名称。类型,对话框显示时打开的文件夹的名称。openFileDialog1.In

27、itialDirectory = D:GIS-Data; / 符号作用使转意字符 “” 作为一般字符对待;GIS开发与应用ArcEngine方法3.4 图层控制 3.4.1 Command 和Tool 区别 3.4.2 弹出右键菜单种方法GIS开发与应用ArcEngine方法3.4.1 Command和ToolAE中内置的Command和Tool的两种插件,Command不需要用鼠标等与地图交互,如全屏功能;Tool则需要用鼠标等与地图交互,如选择功能。CreateNewDocument, ControlsOpenDocCommandClass,ControlsSaveAsDocCommand

28、Class,ControlsMapZoomInToolClass,ControlsMapPanToolClass 等,这些内置对象在Controls 类库中。Using ESRI.ArcGIS.ControlsGIS开发与应用ArcEngine方法命令Command应用举例:打开文档,代码如下:应用举例:打开文档,代码如下:ICommand pCommand = new ControlsOpenDocCommandClass();pCommand.OnCreate(axMapControl1.Object); / ICommand接口的接口的OnCreate 方法创建关联MapControlp

29、Command.OnClick();/ OnClick 方法实现对象的点击事件GIS开发与应用ArcEngine方法 举例:放大和缩小工具,需要指定地图控件的当前工具代码片段如下:举例:放大和缩小工具,需要指定地图控件的当前工具代码片段如下:ICommand pCommand = new ControlsMapZoomInToolClass();/ICommand 接口的OnCreate 方法创建关联MapControlpCommand.OnCreate(axMapControl1.Object);/ 指定当前工具axMapControl1.CurrentTool = pCommand as ITool;GIS开发与应用ArcEngine方法3.4.2 弹出右键菜单的方法在AE 开发中,右键菜单实现方式,使用VS2010 自带的ContextMenuStrip 控件的Show 方法 。 图层控制的主要接口ITOCControl.HitTest ,GIS开发与应用ArcEngine方法ITOCControl.HitTest Method (ESRI.ArcGIS.Controls)void HitTest (int X,int Y,ref esriTOCControlItem pTocItem

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1