https://socsci.flinders.edu.au/geog/sisl/ESRI_Library/Developing_with_ArcObjects/Engine_Developers_Guide.pdf 原文更形象

三种软件的整体体系结构,基础服务-数据访问-地图分析-地图展示

具体的类库如下:

 

英文原文的图像更加清晰,英文说明能看清楚了。

下面根据依赖关系的顺序对类库进行讨论。模型图中在每个类库框的右上角显示了其序列号。例如,作为ArcGIS体系结构基础的System类库,其编号为1,而编号为7的GeoDatabase类库依赖于模型图中其前面的6个类库—SyStem、SystemUI、Geometry、Display、Server和Output。

 

System类库SYSTEM
The System library is the lowest level library in the ArcGIS architecture. The
library contains components that expose services used by the other libraries
composing ArcGIS. There are a number of interfaces defined within the system
library that can be implemented by the developer. The AoInitializer object is
defined in System; all developers must use this object to initialize and uninitialize
ArcGIS Engine in applications that make use of ArcGIS Engine functionality.
The developer does not extend this library but can extend the ArcGIS system by
implementing interfaces contained within this library.

System类库是ArcGIS体系结构中最底层的类库。System类库包含给构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGISEngine的初始化。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

SystemUI类库The SystemUI library contains the interface definitions for user interface components
that can be extended within ArcGIS Engine. These include the ICommand,
ITool, and IToolControl interfaces. The developer uses these interfaces to extend
the UI components that ArcGIS Engine developer components use. The objects
contained within this library are utility objects available to the developer to
simplify some user interface developments. The developer does not extend this
library but can extend the ArcGIS system by implementing interfaces contained
within this library.

SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。包含ICommand、ITool和IToolControl接口。开发者用这些接口来扩展UI组件,ArcGIS Engine开发人员自己的组件将使用这些UI组件。这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

Geometry类库The Geometry library handles the geometry, or shape, of features stored in feature
classes or other graphical elements. The fundamental geometry objects with
which most users will interact are Point, MultiPoint, Polyline, and Polygon. Besides
those top-level entities are geometries that serve as building blocks for Polylines
and Polygons. Those are the primitives that compose the geometries. They are
Segment, Path, and Ring. Polylines and Polygons are composed of a sequence of
connected Segments that form a Path. A Segment consists of two distinguished
points, the start and the endpoint, and an element type that defines the curve
from start to end. The kinds of segments are CircularArc, Line, EllipticArc, and
BézierCurve. All geometry objects can have Z, M, and IDs associated with their
vertices. The fundamental geometry objects all support geometric operations such
as Buffer, Clip, and so on. The geometry primitives are not meant to be extended
by developers.

Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。它们是Segement、Path和Ring。Polyline和Polygon由一系列相连接的、构成列Path的片段组成。一个片段由两个不同的点,即起始点和结束点,以及一个定义这两点之间弯曲度的元素类型组成。片段的类型有Circular Arc、Line、Elliptic Arc和Bezier Curve。所有几何图形对象都可以有与其顶点相关联的Z、M和IDs。所有的基本几何图形对象都支持诸如Buffer,Clip等几何操作。几何子要素不可以由开发者扩展。

GIS中的实体指的是现实世界中的要素;现实世界中要素的位置由一个带有空间参考的几何图形来定义。空间参考对象,包括投影坐标和地理坐标系统,都包括在Geometry类库中。开发者可以通过添加新的空间参考和投影来扩展空间参考系统。

Display类库

Display类库包含用于显示GIS数据的对象。除了负责实际输出图像的主要显示对象外,这个类库还包含表示符号和颜色的对象,它们用来控制在显示上绘制时实体的属性。Display类库还包含在与显示交互时提供给用户可视化反馈的对象。开发者与Display最常用的交互方式就是类似于Map对象或PageLayout对象提供的视图。Display类库的所有部分都能进行扩展;通常扩展的对象包括符号、颜色和显示反馈。

Server类库

Server类库包含允许用户连接并操作ArcGIS Server的对象。开发人员用GIS Server Connection对象来访问ArcGIS Server。通过GIS Server Connection可以访问Server Objects Mananger对象。用这个对象,开发人员可以操作Server Context对象,以处理运行于服务器上的ArcObjects。开发人员还可以用GIS Client类库与ArcGIS Server进行交互。

Output类库

Output类库用于创建图形输出到诸如打印机和绘图仪等设备及诸如增强型元文件和栅格图像格式(JPG、BMP等)等硬拷贝格式。开发人员用这个类库中的对象及ArcGIS系统的其他部分创建图形输出。通常是Display和Carto类库中的对象。开发者可以为自定义设备和输出格式扩展Output类库。

GeoDatabase类库

Geodatabase类库为地理数据库提供了编程API。地理数据库是建立在标准工业关系型和对象关系数据库技术之上的地理数据仓库。Geodatabase类库中的对象为ArcGIS支持的所有数据源提供了一个统一编程模型。GeoDatabase类库定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。开发者可以扩展地理数据库,以支持特定类型的数据对象(要素、类等);此外,Geodatabase类库还有用PlugInDataSource对象添加的自定义矢量数据源。地理数据库支持的本地数据类型不能扩展。

GISClient类库

GISClient类库允许开发者使用Web服务;这些Web服务可以由ArcIMS和ArcGIS Server提供。GISClient类库中包含用于连接GIS服务器以使用Web服务的对象。该类库支持ArcIMS的图像和要素服务。GISClient类库提供以无态方式直接或通过Web服务目录操作ArcGISServer对象的通用编程模型。在ArcGISServer上运行的ArcObjects组件不能通过GISClient接口来访问。要直接获得访问在服务器上运行的ArcObjects,开发人员应使用Server类库中的功能。

DataSourcesFile类库

DataSourcesFile类库包含用于基于文件数据源的GeoDatabaseAPI实现。这些基于文件的数据源包括shapefile、coverage、TIN、CAD、SDC、StreetMap和VPF。开发者不能扩展DtaSourcesFile类库。

DataSourcesGDB类库

DataSourcesGDB类库包含用于数据库数据源的GeoDatabaseAPI实现。这些数据源包括MicrosoftAccess和ArcSDE支持的关系型数据库管理系统—IBM、DB2、Informix、MicrosoftSQLServer和Oracle。开发者不能扩展DataSourcesGDB类库。

DataSourcesOleDB类库

DataSourcesOleDB类库包含用于MicrosoftOLEDB数据源的GeoDatabaseAPI实现。此类库只能用在MicrosoftWindows操作系统上。这些数据源包括支持数据提供者和文本文件工作空间的所有OLEDB。开发者不能扩展DataSourcesOleDB类库。

DataSourcesRaster类库

DataSourcesRaste类库包含用于栅格数据源的GeoDatabaseAPI实现。这些数据源包括ArcSDE支持的关系型数据库管理系统—IBM、DB2、Informix、MicrosoftSQLServer和Oracle,以及其支持的RDO栅格文件格式。当需要支持新的栅格格式时,开发者不扩展这个类库,而是扩展RDO。开发者不能扩展DataSourcesRaster类库。

GeoDatabaseDistributed类库

GeoDatabaseDistributed类库通过提供地理数据库数据导入和导出工具,可以支持对企业级地理数据库的分布式访问。开发者不能扩展GeoDatabaseDistribute类库。

Carto类库

Carto类库支持地图的创建和显示;这些地图可以在一幅地图或由许多地图及其地图元素组成的页面中包含数据。PageLayout对象是驻留一幅或多幅地图及其底土元素的容器。地图元素包括指北针、图例、比例尺等。Map对象包括地图上所有图层都有的属性—空间参考、地图比例尺等,以及操作地图图层的方法。可以将许多不同类型的图层加载到地图中。

 

不同的数据源通常有相应的图层负责数据在地图上的显示,矢量要素由FeatureLayer对象处理,栅格数据由RasterLayer对象处理,TIN数据由TinLayer对象处理,等等。必要的话,图层可以处理与之相关数据的所有绘图操作,但通常图层都是一个相关的Renderer对象。Renderer对象的属性控制着数据在地图中的显示方式。Renderers通常用Display类库中的符号来进行实际绘制,而Renderer只是将特定符号与待绘实体的属性相匹配。Map对象和PageLayout对象可以包含元素。元素用其几何图形定义其在地图或页面上的位置,用行为控制元素的显示。包括用于基本形状、文字标注和复杂标注等的元素。Carto类库还支持地图注释和动态标注。尽管开发者可以在其应用程序中直接使用Map和PageLayout对象,但通常来说开发者更经常使用更高级的对象,如MapControl、PageLayoutControl或ArcGIS应用程序。这些高级对象简化了一些任务,尽管它们也提供对更低级别的Map和PageLayout对象的访问,允许开发者更好的控制对象。Map和Pagelayout对象并不是Carto类库中提供地图和页面绘制的仅有对象。MxdServer和MapServer对象都支持地图和页面的绘制,但不是绘制到窗口中,而是直接绘制到文件中。开发者可以用MapDocument对象保存地图和地图文档(.mxd)中页面布局的状态,以便在ArcMap或ArcGIS控件中使用。Carto类库通常可以在许多方面进行扩展。自定义Renderer、Layer等都很普遍。自定义图层通常是向地图应用程序中加载自定义数据最简单的方法。

Location类库

Location类库包含支持地理编码和操作路径事件的对象。地理编码功能可以通过细粒度对象来完全控制访问,或通过GeocodeServer对象提供的简化API来访问。开发者可以创建自己的地理编码对象。线性参考功能提供对象用于向线性要素添加事件,用各种绘制方法来绘制这些事件。开发者可以扩展线性参考功能。

NetworkAnalysis类库

NetworkAnalysis类库提供用于在地理数据库中加载网络数据的对象并提供对象用于分析加载到地理数据库中的网络。开发者开以扩展NetworkAnalysis类库以便支持自定义网络追踪。这个类库目的在于操作公共网络:供气管线、电力供应线网等。

Controls类库

开发者用Controls类库来构建或扩展具有ArcGIS功能的应用程序。ArcGISControls通过封装ArcObjects并提供粗粒度的API简化了开发过程。尽管这些控件封装了细粒度的ArcObjects,但是并不限制对这些细粒度的ArcObjects的访问。MapControl和PageLayoutControl分别封装了Carto类库的的Map和PageLayout对象。ReaderControl同时封装了Map和PageLayout对象,且在操作控件时提供了简化的API。如果授权了地图发布程序,开发者可以以访问Map和PageLayout控件类似的方式访问内部对象。Controls类库还包含实现一个目录表的TOCControl及驻留操作合适控件的命令和工具的ToolbarControl。开发者通过创建自己的用于操作控件的命令和工具来扩展Controls类库。为此Controls类库提供HookHelper对象。这个对象使得创建一个操作任何控件及操作诸如ArcMap这样的ArcGIS应用程序的命令变得非常简单。

GeoAnalyst类库

GeoAnalyst类库包含支持核心空间分析功能的对象。这些功能用在SpatialAnalyst和3Danalyst两个类库中。开发者可以通过创建新类型的栅格操作来扩展GeoAnalyst类库。为使用这个类库中的对象,需要ArcGISSpatialAnalyst或3DAnalyst扩展模块许可,或者ArcGISEngine运行时空间分析或3D分析选项许可。

3DAnalyst类库

3Danalyst类库包含操作3D场景的对象,其方式与Carto类库包含操作2D地图的对象类似。Scene对象是3Danalyst类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。Camera和Target对象规定在考虑要素位置与观察者关系时场景如何浏览。一个场景由一个和多个图层组成;这些图层规定了场景中包含的数据及这些数据如何显示。开发者很少扩展3Danalyst类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。

GlobeCore类库

GlobeCore类库包含操作globe数据的对象,其方式与Carto类库包含操作2D地图的对象类似。Globe对象是GlobeCore类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。GlobeCamera对象规定在考虑globe位置与观察者关系时golbe如何浏览。一个golbe有一个和多个图层;这些图层规定了golbe中包含的数据及这些数据如何显示。

GlobeCore类库中有一个开发控件及与其一起使用的命令和工具。该开发控件可以与Controls类库中的对象协同使用。

SpatialAnalyst类库

这个类库中的对象,需要ArcGIS空间分析扩展模块许可或ArcGISEngine运行时空间分析选项许可。开发者很少扩展GlobeCore类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。SpatialAnalyst类库包含在栅格数据和矢量数据上执行空间分析的对象。开发者通常使用这个类库中的对象,而不扩展这个类库。