ArcObjects学习教程
一、ArcObjects概述
1、AO的定义
ArcObjects简称AO,是指基于Microsoft COM技术所构建的一系列COM组件集,是Esri公司ARCGIS家族中应用程序Desk Top、ArcGIS Server、ArcGIS Pro等软件开发的基础组件模型库。
AO是基于微软的COM技术来构建的,因此,它具有很强的开放性和扩展性。开放性是指开发环境上的选择可以有VBA·、VB、C#、VC++、DELPHI、JAVA等多种支持COM标准的开发工具;扩展性是指AO组件没有提供的功能,如需要定义一种新的数据格式或者实现新的功能,可以利用COM技术来写自己的COM组件,对AO组件库进行扩展补充。
2、AO的开发模式和方法
- 基于Desk Top的开发模式
VBA\Python\Addin
- 基于ArcGIS Mobile的开发模式
Windows Mobile
- 基于ArcGIS Engine的开发模式
c#\JAVA\VB\VC
- 基于ArcGIS API的移动端开发模式
Android\iOS
- 基于ArcGIS Server的开发模式
Javascript\Flex
3、AO支持的文件和数据类型
- Document File
MXT File、 MXD File
- Data File
Vector Data、Raster Data、Tin
Prj
Relationship
- Layer File
Lyr File
4、AO的特点
- Class
Abstract
Inheritance
Encapsulation
Polymorphism
- Object
Properties
Methods
Events
- Interface
5、AO的三种类
- 抽象类(Abstract class)
- 组件类(Co class)
- 类(Class)
6、AO三种类之间的关系
- 继承关系(Inheritance)(子类与父类之间的关系)
- 关联关系(Assosiation)(类的对象之间的关系)
- 实例化关系(Initialization)(类的对象应用自己内部的方法来创建另外一种类的对象)
- 组合关系(Composition)(一个或多个类的对象是另外一种类的对象的组成部分)
二、Geometry类库
1、Geometry类库概述
Geometry库处理存储再要素类或其他图形元素中的要素的几何体或形状,绝大部分与用户交互的基本几何对象为点、多点、折线和多边形,除了那些顶层的实体作为建筑物群的折线和多边形的集合体外,还有一些构成这些几何体的基本元素,他们为线段、路线和圆环。
GIS中的实体指的是现实世界中的要素;现实世界中要素的位置由一个带有空间参考的几何图形来定义。空间参考对象,包括投影坐标和地理坐标系统,都包括在Geometry类库中,开发者可以通过添加新的空间参考和投影来扩展空间参考系统。
2、Geometry及其相关的类
- Geometry类
Geometry类是抽象类,它是其他几何图形类的父类,它实现了IGeometry接口
- Envelope类
Envelope是组件类,通过其最小和最大的x,y坐标定义一个矩形。因此,Envelope类总是与其空间参考正交的。Envelope类还可以定义最小和最大z值和m值,这取决于所实现的zaware和Izaware接口。
IEnvelope接口
- Point类
point类是二维的,可以选择度量值,高度和ID属性。
IPoint接口
- Segment类
Segment是抽象类,它表示从起点到终点之间能用函数表达的段,主要包括四种类型的段
①BezierCurve(贝塞尔曲线)
②CircularArc(圆弧段)
③ElipticArc(椭圆弧段)
④Line(直线段)
- Path类
Path是组件类,它表示一系列连接的段(Segment)。
- Ring类
Ring是组件类,它表示一个闭合的连接段序列所限定的区域;可以选择每个顶点处的测量、高度和ID属性。
- Polyline类
polyline是组件类,它表示一个路径的有序集合;可以选择度量值、高度和ID属性。
- Polygon类
Polygon是组件类,它表示按包含关系排序的环的集合;可以选择度量值、高度和ID属性。Polygon包含内环(Interior Ring)和外环(Exterior Ring)。
- SpatiaIReferenceEnvironment及其相关的类
SpatiaIReferenceEnvironment是组件类,它用于创建各种空间参照对象。
ISpatiaIReferenceFactory接口
- GeographicCoordinateSystem类
GeographicCoordinateSystem是组件类,它用于创建地理坐标系统。
IGeographicCoordinateSystem接口
- ProjectedCoordinateSystemClass类
ProjectedCoordinateSystemClass是组件类,它用于创建一个投影坐标系统。
IProjectedCoordinateSystem接口
- Datum类
Datum是组件类,它用于创建水平参照基准对象。
IDatum接口
- Spheroid类
Spheroid是组件类,它用于创建球体。
ISpheroid接口
- Projection类
Projection是组件类,它用于创建地图投影。
IProjection接口