ArcGIS Engine 类库介绍

时间:2024-04-04 07:20:12
       ArcGIS Engine 可以供开发人员使用的对象有几千个,这些对象分别位于各个不同的类库中。这些对象之间存在着各种各样的关系,例如:继承,实例化等。

ArcGIS 提供了用来描述这些对象之间关系的对象模型图,这些对象模型图以UML 的形式来展现,以 pdf 文档的形式随着 ArcGIS Engine 开发包安装在本地目录下面(例如:C:\Program Files\ArcGIS\DeveloperKit\Diagrams),每一个类库对于一个 pdf 文档,我们可以通过阅读这些 UML 模型图来了解这些对象之间的关系。下图是 UML 模型图的图例。

      ArcGIS Engine 类库介绍

上图中有三个类,这三个类分别属于不同的类型:
AbstractClass——抽象类不能被实例化,也就是不能用 new 关键字去产生对象。抽象类的成员一般都是部分实现或者根本不实现。
CoClass——可以通过 new 关键字直接实例化对象。
Class——不能直接使用 new 关键字创建对象,但是可以通过借助其它对象类创建实例。

类之间的关系有四种:
Inheritance——继承;在图中的空心三角箭头表示是继承关系。
Composition——组成;在图中的菱形表示是组成关系。

Association——关联;在图中的线表示是关联关系。
instantiation——实例化;在图中的虚线箭头表示是实例化关系。

ArcObjects 的类都实现了一个或多个接口,这些接口分两种类型,一种是入接口(Inbound interface),另一种是出接口(Outbound Interface),分别用空心和实心圆来表示。入接口封装了若干属性和方法;出接口主要是封装的事件,即对象支持哪些事件的触发。



ArcGIS Engine 包含了三十多个类库,这些类库分别负责完成一部分 GIS的功能,例如:地图显示,几何体操作,空间数据访问等。下面介绍一下常用的类库。
1、Carto
Carto 类库中的对象负责创建地图、显示图层。使用频率比较高的IMap,ILayer, IFeatureRenderer 都在 Carto 类库中,另外还包括地图元素IElement 接口和子接口,例如:ILineElement,ITextElement 等。

2、Geodatabase
该类库提供了统一的接口来访问空间数据,使用频率非常高的接口IFeatureClass, ITable,IQueryFilter 等接口都是位于该类库中。用户在打开要素类、打开表、查询数据、读取数据、更新数据时都需要引用此类库。

3、Geometry
Geometry 类库中提供了和矢量的几何体相关的对象,例如:点、线、面、三维模型等。矢量数据由最小的单元点组成,每个点都有 x,y,z,m 四个坐标值,z 表示高程,m 值表示测量值,一般用来存储里程值。对几何体的创建和修改,以及几何体之间的空间分析都通过该类库来实现。

4、DataSourcesFile
DataSourcesFile 类库中提供了文件型数据的访问。基于文件的数据源有:shapefile, coverage,TIN,CAD 等。不同的数据源通过各自的工作空间工厂来访问。

5、DataSourcesGDB
DataSourcesGDB 类库包含了对 Geodatabase 数据源的访问,这些数据源包括:MS Access, File Geodatabase 和 ArcSDE 数据源。在访问空间数据之前首 先 确 定 数 据 源 的 类 型 , 如 果 是 Geodatabase , 那 么 就 需 要 引 用DataSourcesGDB,如果是文件型的数据源,那么就需要引用 DataSourcesFile。

6、DataSourcesRaster
DataSourcesRaster 类库封装了对栅格数据的访问,DataSourcesFile 和DataSourcesGDB 类库中封装的数据访问接口都是针对矢量数据调用的,对于栅格数据的访问需要使用 DataSourcesRaster 类库,通过该类库用户可以各个ArcGIS 支持的栅格数据