![](https://csdnimg.cn/release/download_crawler_static/6574467/bg1.jpg)
一. ArcGIS 介绍
ArcGIS 软件架构
ArcGIS 是 ESRI 在全面整合了 GIS 与数据库、软件工程、人工智能、网络技术及其它多方面的计算机主流
技术之后,成功地推出了代表 GIS 最高技术水平的全系列 GIS 产品。ArcGIS 是一个全面的,可伸缩的 GIS
平台,为用户构建一个完善的 GIS 系统提供完整的解决方案。ArcGIS 的基本体系能够让用户在任何需要的
地方部署 GIS 功能和业务逻辑,无论是在桌面、服务器、还是在野外:
桌面 GIS(ArcGIS Desktop)—ArcGIS 桌面 GIS 软件产品是用来编辑、设计、共享、管理和发布地理信息
和概念。ArcGIS 桌面可伸缩的产品结构,从 ArcReader,向上扩展到 ArcView、ArcEditor 和 ArcInfo。目
前 ArcInfo 被公认为是功能最强大的 GIS 产品。通过一系列的可选的软件扩展模块,ArcGIS Desktop 产品
的能力还可以进一步得到扩展。
嵌入式 GIS(Embedded GIS)—ArcGIS Engine 是一个完整的嵌入式 GIS 组件库和工具包,开发者能用它创
建一个新的、或扩展原有的可定制的桌面应用程序。使用 ArcGIS Engine,开发者能将 GIS 功能嵌入到已
有的应用程序中,如基于工业标准的产品以及一些商业应用,也可以创建自定义的应用程序,为组织机构
中的众多用户提供 GIS 功能。
服务器 GIS(Server GIS)—ArcGIS Server、ArcIMS 和 ArcSDE 用于创建和管理基于服务的 GIS 应用程序,
在大型机构和互联网上众多用户之间共享地理信息。ArcGIS Server 是一个中心应用服务器,它包含一个
可共享的 GIS 软件对象库,能在企业和 Web 计算框架中建立服务器端的 GIS 应用。ArcIMS 是通过开放的 I
![](https://csdnimg.cn/release/download_crawler_static/6574467/bg2.jpg)
nternet 协议发布地图、数据和元数据的可伸缩的网络地图服务器。ArcSDE 是在各种关系型数据库管理系
统中管理地理信息的高级空间数据服务器。
移动 GIS(Mobile GIS)—ArcPad,支持 GPS 的无线移动设备,越来越多地应用在野外数据采集和信息访
问中。ArcGIS 桌面和 ArcGIS Engine 可以运行在便携式电脑或平板电脑上,用户可以在野外进行数据采集、
分析和乃至制定决策。
ArcGIS Engine 介绍
ArcGIS Engine 是一组完备的并且打包的嵌入式 GIS 组件库和工具库,开发人员可用来创建新的或扩展已
有的桌面应用程序。使用 ArcGIS Engine,开发人员可以将 GIS 功能嵌入到已有的应用软件中,如自定义
行业专用产品;或嵌入到商业生产应用软件中,如 Mirosoftf Word 和 Excel;还可以创建集中式自定义
应用软件,并将其发送给机构内的多个用户。
ArcGIS Engine 由两个产品组成:构建软件所用的开发工具包以及使已完成的应用程序能够运行的可再发
布的 Runtime(运行时环境)。ArcGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构建
自定义 GIS 和制图应用软件。它并不是一个终端用户产品,而是软件开发人员的工具包,适于为 Windows、
UNIX 或 Linux 用户构建基础制图和综合动态 GIS 应用软件。ArcGIS Engine Runtime 是一个使终端用户
软件能够运行的核心 ArcObjects 组件产品,并且将被安装在每一台运行 ArcGISEngine 应用程序的计算机
上。
ArcGIS Engine 是基于 COM 技术的可嵌入的组件库和工具包,ArcGIS Engine 可以帮助我们很轻松的构
建自定义应用程序.
使用 ArcGIS Engine,开发人员可以将 GIS 功能嵌入到已有的应用软件中,如自定义行业专用产品;
或嵌入到商业生产应用软件中,如 Mirosoftf Word 和 Excel;还可以创建集中式自定义应用软件,并
将其发送给机构内的多个用户。
ArcGIS Engine 由两个产品组成:
面向开发人员的软件开发包(ArcGIS Engine Developer ki t)
面向最终用户的运行时(ArcGIS Engi ne Runtime)
ArcGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构建自定义 GIS 和制图应用软件。它
并不是一个终端用户产品,而是软件开发人员的工具包,支持四种开发环境(C++, COM, .NET,以及
Java),适于为 Windows、UNIX 或 Linux 用户构建基础制图和综合动态 GIS 应用软件。
ArcGIS Engine Runtime 是一个使终端用户软件能够运行的核心 ArcObjects 组件产品,并且将被安装在
每一台运行 ArcGIS Engine 应用程序的计算机上。
![](https://csdnimg.cn/release/download_crawler_static/6574467/bg3.jpg)
ArcGIS Engine 的逻辑体系结构 :
◆ Base Services
包含了 ArcEngine 中最核心的 ArcObjects 组件,几乎所有的 GIS 组件需要调用它们,如 Ge
ometry 和 Display 等。
◆ Data Access
包含了访问矢量或栅格数据的 GeoDatabase 所有的接口和类组件。
◆ Map Presentation
包含了 GIS 应用程序用于数据显示、数据符号化、要素标注和专题图制作等需要的接口和类
组件。
◆ Develper Components
包含了进行快速开发所需要的全部可视化控件,如 MapControl、PageLayoutControl、SceneControl、Glo
beControl、TOCControl、ToolbarControl、SymbologyControl 和 LicensenControl 控件等,除了这些,
该库还包括大量可以有 ToolbarControl 调用的内置 commands、tools、Menus,它们可以极大地简化二次
开发工作。
◆ Extensions
在图中我们可看出,ArcEngine 的开发体系是一条纵线,功能丰富,层次清晰。最上层的 Extensions 包含
了许多高级开发功能,如 GeoDatabase Update、空间分析、三维分析、网络分析、Schematics 逻辑示意图
以及数据互操作等。ArcEngine 标准版并不包含这些 ArcObjects 许可,他们只能作为扩展存在,需要特定
的 License 才能运行。
![](https://csdnimg.cn/release/download_crawler_static/6574467/bg4.jpg)
ArcGIS Engine 中的类库
ArcGIS Engine 开发中,为了更好的管理这些 COM 对象,ESRI 将这些 COM 对象放在不同的组件库中,而他
们被物理的防盗 bin 目录下的 dll 中,而逻辑上被分散到不同的命名空间中
System
System 库是ArcGIS 架构中最底层的库。该库包含了暴露组成ArcGIS 的其它库所使用的服务的组件。
System 库中定义了许多接口,它们可以由开发者来实现。AoInitializer 对象在System 中定义;所有开
发者必须使用该对象在使用Engine 功能的应用程序中初始化和uninitialize ArcGIS Engine。开发者不扩
展该库,但可以通过实现其中的接口来扩展ArcGIS系统。
SystemUI
SystemUI 库中包含了可在ArcGIS Engine 中扩展的用户界面组件的接口定义,包括ICommand、ITool 和
IToolControl 接口。开发者使用这些接口来扩展UI 组件。该库所包含的对象是utility 对象,开发者可
用于简化某些用户界面的开发。开发者不扩展该库,但可以通过实现其中的接口来扩展ArcGIS 系统。
Geometry
Geometry 库处理存储在特征类(feature classes)或其它图形要素(graphical elements)中的特征的
geometry 或shape。大多数用户交互的基本几何对象有Point 、MultiPoint 、Polyline和Polygon 。除了
这些顶层的实体,还有作为Polylines 和Polygons 构建模块的几何体(geometries)。这些是组成几何体的
基元(primitives)。它们是Segments、Paths 和Rings。Polylines和Polygons 由形成一条Path 的依次相
连的Segments 组成。一个Segment 包含两个不同的点,
起点和终点,和一个定义从起点到终点的曲线的要素类型。这种segments 有CircularArc、Line、
EllipticArc 和BezierCurve。所有的几何对象都可以有与它们顶点相关的Z、M 和IDs。基本的几何对象都
支持几何操作,如Buffer 和Clip。开发者不可以扩展几何基元。GIS 中的实体是指现实世界中的特征;这
些现实世界中的特征的位置由具有空间参考的几何体来定义。投影和地理坐标系统的空间参考对象都包含
在Geometry 库中。开发者可以通过在空间参考间添加新的空间参考和投影来扩展空间参考系统。
Display
Display 库包含了用于GIS 数据显示的对象。除了负责实际图像输出的主要显示对象,该库中还包含了表
示颜色和符号的对象,这些颜色和符号用于控制显示上所绘制实体的属性。库中也包含了为用户在与显示
交互时提供可视化反馈的对象。开发者大都通过类似于Map 或PageLayout 对象提供的视图与显示交互。该
库的所有部分都可以被扩展,常被扩展的有符号、颜色和显示反馈(display feedbacks)。
Output
Output 库被用于创建图形输出到设备,如打印机、绘图仪和硬拷贝格式,如增强型图元文件(enhanced
metafiles)和栅格影像格式(JPG、BMP 等)。开发者使用该库和ArcGIS 系统其它部分中的对象来创建图形
输出。通常这些是Display 和Carto 库中的对象。开发者可以扩展output 库用于定制的设备和输出格式。
GeoDatabase
GeoDatabase 库提供了用于geodatabase 的编程API。Geodatabase 是一个构建在标准工业关系和对象数据
![](https://csdnimg.cn/release/download_crawler_static/6574467/bg5.jpg)
库技术基础上的地理数据储存库。库中的对象为ArcGIS 支持的所有数据源提供了统一的编程模型。
GeoDatabase 库定义了许多由架构中较高层次数据源提供者实现的接口。开发者可以扩展geodatabase 来
支持特殊的数据对象(Features、Classes 等)类型。此外,还可以使用PlugInDataSource 对象添加自定义
的矢量数据源。geodatabase 支持的native
数据类型不可以被扩展。
DataSourcesFile
DataSourcesFile 库包含用于基于文件数据源的GeoDatabase API 的实现。这些基于文件的数据源包括
shapefile、coverage、TIN、CAD、SDC、ArcGIS StreetMap™和VPF。开发者不能扩展DataSourcesFile 库。
DataSourcesGDB
DataSourcesGDB 库包含了用于数据库数据源的GeoDatabase API 的实现。这些数据源包括Microsoft
Access 和SDE®软件支持的RDBMSs。开发者不能扩展DataSourcesGDB库。
DataSourceOleDB
DataSourcesOleDB 库包含用于Microsoft OLE DB 数据源的GeoDatabase API 的实现。该库只有在
Microsoft Windows 操作系统上才可以使用。这些数据源包括任何OLE DB 支持的数据提供者和文本文件工
作空间。开发者不能扩展DataSourcesOleDB库。
DataSourceRaster
DataSourcesRaster 库包含了用于Raster 数据源的GeoDatabase API 的实现。这些数据源包括SDE 软件支
持的RDBMSs,和所有支持的RDO栅格文件格式。当需要支持新的栅格
格式时,开发者不扩展该库,而是扩展RDO。开发者不扩展DataSourcesRaste 库。
GeoDatabaseDistributed
GeoDatabaseDistributed 库通过提供数据导入、导出geodatabase 的工具来支持到企业geodatabase 的分
布式访问。开发者不扩展GeoDatabaseDistributed 库。
Carto
Carto 库支持地图的创建和显示;这些地图可以包含一幅地图或具有多幅地图和相关旁注的页中的数据。
PageLayout 对象是宿主一幅或多幅地图和相关旁注(指北针、图例、比例尺条等)的容器。Map 对象是图层
的容器。Map 对象有操作地图中所有图层的属性:空间参考、地图比例尺等,还有操作地图图层的方法。
有多种不同类型的图层可以被加载到地图中。不同数据源通常有一个相关图层负责在地图上显示数据;矢
量特征由FeatureLayer 对象处理,栅格数据由RasterLayer 对象处理,TIN 数据由TinLayer 对象处理等。
若需要,图层可以为它们的相关数据处理所有的绘制操作。但更常见的是图层拥有一个相关的Renderer 对
象。Renderer 对象的属性控制数据在地图中怎样显示。Renderers 一般使用Display 库中的symbols 进行
实际绘图;renderer 只是匹配指定的符号与要绘制的实体的属性。一个Map 和一个PageLayout 可以包含
要素(elements)。要素利用几何体来定义它在地图或页面上的位置,以及控制要素显示的行为。有用于基
本形状、文本标注、复杂旁注等的要素。Carto 库也包含对地图注记和动态标注的支持。
Location
Location 库包含支持地理编码和与route 事件一起工作的对象。可通过full 控件的finegrained对象访问
地理编码功能,或GeocodeServer 对象提供了一个简化的API。开发者可以创建他们自己的地理编码对象。
线性参考功能提供了添加事件到线性特征的对象,并使用多种绘制方法渲染这些事件。开发者可以扩展线
性参考功能。
NetworkAnalysis
NetworkAnalysis 库提供的对象在网络加载到geodatabase 中时,使用网络数据和对象populating a
geodatabase 来分析网络。开发者可以扩展该库来支持定制的网络跟踪。该库是用于utility 网络的——
gas lines、electricity supply lines 等。