ArcEngine复习指导.docx

上传人:b****6 文档编号:9019198 上传时间:2023-02-02 格式:DOCX 页数:38 大小:32.93KB
下载 相关 举报
ArcEngine复习指导.docx_第1页
第1页 / 共38页
ArcEngine复习指导.docx_第2页
第2页 / 共38页
ArcEngine复习指导.docx_第3页
第3页 / 共38页
ArcEngine复习指导.docx_第4页
第4页 / 共38页
ArcEngine复习指导.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

ArcEngine复习指导.docx

《ArcEngine复习指导.docx》由会员分享,可在线阅读,更多相关《ArcEngine复习指导.docx(38页珍藏版)》请在冰豆网上搜索。

ArcEngine复习指导.docx

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组件对象模型COM

2.5理解对象模型图OMD

2.6ArcEngine类库结构

GIS开发与应用——ArcEngine方法

ArcEngine从功能层次上分为五部分:

1.基本服务—由GIS核心ArcObjects构

成,几乎所有GIS应用程序都需要,如

要素几何体(Featuregeometry)和显

示(Display)。

2.数据存取—ArcGISEngine可以对许

多栅格和矢量格式进行存取,包括强

大的地理数据库(Geodatabase)。

3.地图表达—创建和显示带有符号和标

注的地图。

4.开发组件—用于快速开发应用程序的

界面控件。

5.运行时选项—ArcGISEngine运行时

可以与标准功能或其它高级功能一起

部署

GIS开发与应用——ArcEngine方法

6-7

2.4.1基本概念

对象和类(ObjectsandClass)

对象:

系统中用来描述客观事物的一个实体,构成系统的一个基本单位。

对象是如何产生的呢?

它是由类实例化产生的。

类描述了一组有相同特性(属性)和相同行为(方法)的对象。

类与对象的关系

就如模具和铸件的关系,对象是类的实例化结果,而类是对象的抽象。

从软

件设计的角度来说,

从软

件设计的角度来说,类就是一种数据结构,用于模拟现实存在的对象和关系。

“汽车”类,包含了汽车这个类的共同状态(汽车的品牌、时速、马力、耗油量、颜

色等

汽车的品牌、时速、马力、耗油量、颜

色等)与行为(汽车启动、行驶、加速、减速、刹车等)。

“奔驰”是汽车类的一个

对象。

是汽车类的一个

对象。

人是一个类,司马迁、李白、杜甫都是对象。

“动画猫”是一个类,Kitty、Grafield

和Doraemon都是对象。

GIS开发与应用——ArcEngine方法

6-8

在AO/AE里,COM对象众多,有象Map、Form、Layer等可见的对象,

也有在表中产生查询结果集时的游标(

等可见的对象,

也有在表中产生查询结果集时的游标(Cursor)-这类不可见的对象。

象是由类(

这类不可见的对象。

象是由类(CLASS)实例化产生的。

接口(Interface)

定义了一组方法和属性的数据结构,通过这组数据结构,可以

调用组件对象的功能。

定义了一组方法和属性的数据结构,通过这组数据结构,可以

调用组件对象的功能。

在面向对象编程中,人们通过类的接口使用类。

只要保持接口不变,你可

以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的

升级换代。

在面向对象编程中,人们通过类的接口使用类。

只要保持接口不变,你可

以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的

升级换代。

命名空间(NameSpace)

用来组织类的,通常可以把相关联的类放在一个命名空间中,

进行有效的管理。

GIS开发与应用——ArcEngine方法

6-9

COM总结

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-10

GIS开发与应用——ArcEngine方法

ArcGIS中的多态指什么?

许多ArcGIS的类都表现出多态的特性,其特点是在几个Classes

中使用同一个Interface,但每一个Class却执行不同的methods

andproperties。

举例:

图层类型(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.Map

Class普通类:

不能直接创建新对象,只能从其他类接口的属性或其他类的

方法创建。

不能直接创建新对象,只能从其他类接口的属性或其他类的

方法创建。

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-15

Relationshipsymbols

三角形符号继承(Inheritance)

菱形黑色小块组合(Composition)

虚线前头带个箭头依赖(Instantiation)

对应关系1:

N

一条直线表关联(Association)

*

____

翅膀

羽毛

2

Abstract

Class

Class

Class

CoClass

CoClass

*

GIS开发与应用——ArcEngine方法

6-16

类和他们相应的对象

ArcMapobjects

MxDocument

Map

Layer

*

*

FeatureLayer

Application

GIS开发与应用——ArcEngine方法

第三章地图显示

加载ShapeFile方法

地图控件MapControl.AddShapeFile(文件目录,文件名(不含文件目录))

OpenDialog

本试验设计添加Shapefile的三种方法如下:

(1)地图控件.AddLayer(图层名);

(2)地图控件.AddLayerFromFile(lyr文件名);

(3)地图控件.AddShapeFile(文件目录,文件名(含文件扩展名))。

GIS开发与应用——ArcEngine方法

在某个控件中按下鼠标任何键时触发OnMouseDown事件,

事件,

如axTOCControl1中按下鼠标键产生的事件名为

axTOCControl1_OnMouseDown,axMapControl1中按下

鼠标键产生的事件名为

中按下

鼠标键产生的事件名为axMapControl1_OnMouseDown。

OnMouseDown:

当在MapControl/PageLayout

/TOCControl等控件上按下鼠标时,触发该事件;

axMapControl1_OnMouseDown

OnMapReplaced:

FiresaftertheMapcontainedbythe

MapControlhasbeenreplaced.当MapControl中导入地图

文档时,触发该事件

中导入地图

文档时,触发该事件;

OnMouseMove:

当在MapControl/PageLayout

/TOCControl等控件上移动鼠标时,触发该事件;

GIS开发与应用——ArcEngine方法

3.2.2.2添加引用(AddArcGISReference)

首先工程-->“引用”

程序集(Assembly):

使用.NET开发ArcGISEngine程序使用的

组件被称为程序集,AE中一般是dll文件,一个程序集包括一

个或多个命名空间。

添加程序集引用意在告诉编译器,我的

这个程序中使用了那些外部的库,他们都在哪里;

添加程序集引用意在告诉编译器,我的

这个程序中使用了那些外部的库,他们都在哪里;如添加

ESRI.ArcGIS.Controls程序集(放大

ControlsMapZoomInToolClass、缩小、打开文件、保存文件

等ArcMap中常用用的命令都在Controls库);

然后在全局定义前使用using命令引用,using命令意在告诉

编译器,我这个程序里使用了某个命名空间,不用再写他的

全名了,让编译器帮你去找。

命令意在告诉

编译器,我这个程序里使用了某个命名空间,不用再写他的

全名了,让编译器帮你去找。

引用命名空间主要是为了减少冗余代码,比如要使用

ControlsMapZoomInToolClass,如果在工程前添加了using

ESRI.ArcGIS.Controls,可以直接用“ControlsMapZoomInToolClass“简

称来调用他,否则用全称

称来调用他,否则用全称

GIS开发与应用——ArcEngine方法

利用地图控件MapControl.AddShapeFile(文件目录,文件名

(不含文件目录))方法加载ShapeFile文件的代码实现。

文件的代码实现。

如axMapControl1.AddShapeFile(几个参数?

Path类的两个方法

System.IO.Path.GetDirectory()

System.IO.Path.GetFileName()

GIS开发与应用——ArcEngine方法

加载ShapeFile的最简单的一种方法

地图控件名.AddShapeFile()

()

如axMapControl1.AddShapeFile(几个参数?

(文件目录,文件名)d:

\acd\China.shp

(d:

\acd,China.shp)Path类的两个方法

System.IO.Path.GetDirectory()

System.IO.Path.GetFileName()

GIS开发与应用——ArcEngine方法

通用对话框不同的Windows应用软件常常使用功能相同的对话框,比如

“打开”、“保存”、“打印”等对话框,这类对话框称为通用对话框。

C#中如何使用这些通用对话框?

使用通用对话框的两种方法:

在设计窗体时,从工具箱向窗体上拖放一个通用对话框控件,在程序中使

用到这个对话框时设置它的属性,并调用它的

在设计窗体时,从工具箱向窗体上拖放一个通用对话框控件,在程序中使

用到这个对话框时设置它的属性,并调用它的ShowDialog()方法。

在运行的时刻创建通用对话框对象、设置它的属性、调用它的

ShowDialog方法。

这种方法创建的通用对话框对象是临时的,生命期通

常很短,比较节约资源。

方法。

这种方法创建的通用对话框对象是临时的,生命期通

常很短,比较节约资源。

GIS开发与应用——ArcEngine方法

打开文件对话框,保存对话框

打开文件对话框:

所对应的类是OpenFileDialog。

OpenFileDialog类和

SaveFileDialog类都继承自抽象类FileDialog,它们有一些共同的属性和

方法。

,它们有一些共同的属性和

方法。

ShowDialog()方法显示;

if(pOpenFileDialog.ShowDialog()==DialogResult.OK)

{}

GIS开发与应用——ArcEngine方法

FileName:

String类型,返回用户选择的文件名称,包括文件

的路径和文件名。

这个属性只能返回一个文件的名称。

返回用户选择的文件名称,包括文件

的路径和文件名。

这个属性只能返回一个文件的名称。

string

pPath=openFileDialog1.FileName;

Fileter:

String类型,用来指定“文件类型”下拉列表框中的文

件过滤选项,每个文件的过滤选项包括描述和过滤器两部分

,它们之间用

下拉列表框中的文

件过滤选项,每个文件的过滤选项包括描述和过滤器两部分

,它们之间用“|”隔开。

当有多个文件过滤选项时,它们之间

也使用

隔开。

当有多个文件过滤选项时,它们之间

也使用“|”分隔开,openFileDialog1.Filter=“shapefile文件

(*.shp)|*.shp”;字符串“Textfiles(*.txt)|*.txt|Allfiles(*.*)|”指

定了两个文件的过滤选项。

定了两个文件的过滤选项。

InitialDirectory:

String类型,对话框显示时打开的文件夹的

名称。

类型,对话框显示时打开的文件夹的

名称。

openFileDialog1.InitialDirectory=@"D:

\GIS-Data";//

@符号作用使转意字符“\”作为一般字符对待;

GIS开发与应用——ArcEngine方法

3.4图层控制

3.4.1Command和Tool区别

3.4.2弹出右键菜单种方法

GIS开发与应用——ArcEngine方法

3.4.1Command和Tool

AE中内置的Command和Tool的两种插件,Command不需要用

鼠标等与地图交互,如全屏功能;Tool则需要用鼠标等与地

图交互,如选择功能。

CreateNewDocument,ControlsOpenDocCommandClass,

ControlsSaveAsDocCommandClass,

ControlsMapZoomInToolClass,ControlsMapPanToolClass等,

这些内置对象在Controls类库中。

UsingESRI.ArcGIS.Controls

GIS开发与应用——ArcEngine方法

命令Command应用

举例:

打开文档,代码如下:

应用

举例:

打开文档,代码如下:

ICommandpCommand=newControlsOpenDocCommandClass();

pCommand.OnCreate(axMapControl1.Object);//ICommand接口

接口

的OnCreate方法创建关联MapControl

pCommand.OnClick(); //OnClick方法实现对象的点击事件

GIS开发与应用——ArcEngine方法

举例:

放大和缩小工具,需要指定地图控件的当前工具

代码片段如下:

举例:

放大和缩小工具,需要指定地图控件的当前工具

代码片段如下:

ICommandpCommand=newControlsMapZoomInToolClass();

//ICommand接口的OnCreate方法创建关联MapControl

pCommand.OnCreate(axMapControl1.Object);

//指定当前工具

axMapControl1.CurrentTool=pCommandasITool;

GIS开发与应用——ArcEngine方法

3.4.2弹出右键菜单的方法

在AE开发中,右键菜单实现方式,使用VS2010自带的

ContextMenuStrip控件的Show方法。

图层控制的主要接口ITOCControl.HitTest,

GIS开发与应用——ArcEngine方法

ITOCControl.HitTestMethod(ESRI.ArcGIS.Controls)

voidHitTest(

intX,

intY,

refesriTOCControlItempTocItem

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

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

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