内部文档,请勿外传
ArcGIS Engine 10 开发手册
ESRI 中国(北京)有限公司
2011 年 9 月
1/336
内部文档,请勿外传
制定及修订记录
版本
完成日期
编写/修订纪要 编写者
备 注
V0.1
2011.3.4
文 档 目 录 结
林 雪 淋 /
构
刘宇
完 善 控 件 介
V0.2
2011.4.8
绍 和 空 间 数
刘宇
V0.3
2011.5.18
V0.4
2011.6.25
V0.5
2011.7.18
V0.6
201.8.26
V0.7
2011.9.3
据库的介绍
完 善 栅 格 数
据介绍
完 善 符 号 化
介绍
完 善 网 络 分
析功能
完 善 参 考 系
的介绍
完 善 几 何 对
象的介绍
刘宇
刘宇
刘宇
刘宇
刘宇
3/336
内部文档,请勿外传
目 录
1 一. ArcGIS 介绍 .................................................................................................. 2
2 二.和 ArcGIS Engine 开发相关的 C#知识 .................................................... 10
3 三.使用控件创建第一个桌面应用程序 ........................................................ 22
4 四.空间数据库 ................................................................................................ 71
5 五.几何对象和空间参考 .............................................................................. 121
6 六.矢量数据空间分析 .................................................................................. 154
7 七.符号化 ...................................................................................................... 169
8 八.栅格数据分析 .......................................................................................... 202
9 九.编辑 .......................................................................................................... 237
10 十.地图输出 .................................................................................................. 260
11 十一.ArcGIS Engine 实战................................................................................ 263
12 十二.安装部署 ................................................................................................. 303
4/336
内部文档,请勿外传
1 一. ArcGIS 介绍
1.1
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 功能嵌入到已有
的应用程序中,如基于工业标准的产品以及一些商业应用,也可以创建自定义的应用程序,为组织机构中
5/336
内部文档,请勿外传
的众多用户提供 GIS 功能。
服务器 GIS(Server GIS)—ArcGIS Server、ArcIM S 和 ArcSDE 用于创建和管理基于服务的 GIS 应用程序,
在大型机构和互联网上众多用户之间共享地理信息。ArcGIS Server 是一个中心应用服务器,它包含一个可
共享的 GIS 软件对象库,能在企业和 Web 计算框架中建立服务器端的 GIS 应用。ArcIM S 是通过开放的
Internet 协议发布地图、数据和元数据的可伸缩的网络地图服务器。ArcSDE 是在各种关系型数据库管理系
统中管理地理信息的高级空间数据服务器。
移动 GIS(M obile GIS)—ArcPad,支持 GPS 的无线移动设备,越来越多地应用在野外数据采集和信息访
问中。ArcGIS 桌面和 ArcGIS Engine 可以运行在便携式电脑或平板电脑上,用户可以在野外进行数据采集、
分析和乃至制定决策。
1.2
ArcGIS Engine 介绍
ArcGIS Engine 是一组完备的并且打包的嵌入式 GIS 组件库和工具库,开发人员可用来创建新的或扩
展已有的桌面应用程序。使用 ArcGIS Engine,开发人员可以将 GIS 功能嵌入到已有的应用软件中,如自
定义行业专用产品;或嵌入到商业生产应用软件中,如 M irosoftf Word 和 Excel;还可以创建集中式自定义
应用软件,并将其发送给机构内的多个用户。
ArcGIS Engine 由两个产品组成:构建软件所用的开发工具包以及使已完成的应用程序能够运行的可
再发布的 Runtime(运行时环境)。ArcGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构
建自定义 GIS 和制图应用软件。它并不是一个终端用户产品,而是软件开发人员的工具包,适于为 Windows、
UNIX 或 Linux 用户构建基础制图和综合动态 GIS 应用软件。ArcGIS Engine Runtime 是一个使终端用户
软件能够运行的核心 ArcObjects 组件产品,并且将被安装在每一台运行 ArcGISEngine 应用程序的计算机
上。
ArcGIS Engine 是基于 COM 技术的可嵌入的组件库和工具包,ArcGIS Engine 可以帮助我们很轻松的构
建自定义应用程序.
6/336
内部文档,请勿外传
使用 ArcGIS Engine,开发人员可以将 GIS 功能嵌入到已有的应用软件中,如自定义行业专用产品;
或嵌入到商业生产应用软件中,如 Mirosoftf Word 和 Excel;还可以创建集中式自定义应用软件,并
将其发送给机构内的多个用户。
ArcGIS Engine 由两个产品组成:
面向开发人员的软件开发包(ArcGIS Engi ne Developer ki t)
面向最终用户的运行时(ArcGIS Engi ne Runtime)
ArcGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构建自定义 GIS 和制图应用软件。
它并不是一个终端用户产品,而是软件开发人员的工具包,支持四种开发环境(C++, COM , .NET,
以及 Java),适于为 Windows、UNIX 或 Linux 用户构建基础制图和综合动态 GIS 应用软件。
ArcGIS Engine Runtime 是一个使终端用户软件能够运行的核心 ArcObjects 组件产品,并且将被安装
在每一台运行 ArcGIS Engine 应用程序的计算机上。
ArcGIS Engine 的逻辑体系结构 :
◆ Base Services
包含了 ArcGIS Engine 中最核心的 ArcObjects 组件,几乎所有的 GIS 组件需要调用它们,如 Geometry
和 Display 等。
◆ Data Access
包含了访问矢量或栅格数据的 GeoDatabase 所有的接口和类组件。
◆ Map Presentation
包含了 GIS 应用程序用于数据显示、数据符号化、要素标注和专题图制作等需要的接口和类组件。
◆ Develper Components
包含了进行快速开发所需要的全部可视化控件,如 M apControl、PageLayoutControl、SceneControl、
GlobeControl、TOCControl、ToolbarControl、SymbologyControl 和 LicensenControl 控件等,除了这些,该
库还包括大量可以有 ToolbarControl 调用的内置 commands、tools、M enus,它们可以极大地简化二次开发
工作。
◆ Extensions
在图中我们可看出,ArcGIS Engine 的开发体系是一条纵线,功能丰富,层次清晰。最上层的 Extensions
7/336
内部文档,请勿外传
包含了许多高级开发功能,如 GeoDatabase Update、空间分析、三维分析、网络分析、Schematics 逻辑示意
图以及数据互操作等。ArcGIS Engine 标准版并不包含这些 ArcObjects 许可,他们只能作为扩展存在,需要
特定的 License 才能运行。
注意:
ArcGIS Engine 运行时有多种版本级别,从标准版本一直到企业版本。标准的 ArcGIS Engine 运行时提
供所有 ArcGIS 应用程序的核心功能。这个级别的 ArcGIS Engine 运行时可以操作几种不同的栅格和矢量格
式、进行地图表达和创建以及通过执行各种空间或属性查询查找要素。这个级别的 ArcGIS Engine 运行时
还可以进行基本数据创建、编辑 Shapefile 和简单的个人地理数据库(Personal Geodatabase)及 GIS 分析但
是如果遇到企业级数据库(ArcGIS SDE)数据库的编辑以及复杂数据模型的创建(网络,拓扑)就需要 Enterprise
GeodatabaseUpdate 许可.ArcGIS Engine 运行时的标准许可相当于 ArcGIS 桌面 View 级别的功能,而
Enterprise GeodatabaseUpdate 许可相当于 ArcGIS 桌面 Editor 级别的功能.
8/336
内部文档,请勿外传
1.3
ArcGIS Engine 中的类库
ArcGIS Engine 开发中,为了更好的管理这些 COM 对象,ESRI 将这些 COM 对象放在不同的组件库中,
而他们被物理的防盗 bin 目录下的 dll 中,而逻辑上被分散到不同的命名空间中,下面我们详细对一些类库进
行介绍:
Version
Version 库是 ArcGIS 10 新出来的一个类库,该类库包含了将独立应用程序绑定到特定的 ArcGIS 系列
产品的函数和方法,该类库是在运行 Engine 的应用程序的时候
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 、M ultiPoint 、Polyline 和 Polygon 。除了这些顶层的
实体,还有作为 Polylines 和 Polygons 构建模块的几何体(geometries)。这些是组成几何体的基元(primitives)。
它们是 Segments、Paths 和 Rings。Polylines 和 Polygons 由形成一条 Path 的依次相连的 Segments 组成。
一个 Segment 包含两个不同的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。这种 segments
有 CircularArc、Line、EllipticArc 和 BezierCurve。所有的几何对象都可以有与它们顶点相关的 Z、M 和 IDs。
9/336