标题：ArcObject类库
简介
ArcObject，是一套ArcGIS的可重用的通用的二次开发组件集。可以毫不夸张地说，使用ArcObjects进行的二次开发是现在GIS次开发中最底层和最流行的开发方式。ESRI的程序员们将GIS的不同功能—从数据管理到图形显示—做成一个个COM组件，他们自己也使用这些组件开发出了ArcGIS这套软件。 ArcObject是ArcGIS软件的核心，从理论上讲，如果水平足够高，也可以使用ArcObjects开发出一套的ArcGIS软件来。
ESRI公司将其软件使用GIS技术重新建构以后，于1999年推出了全新的GIS产品Arclnfo8. 2001年，ArcGIS8.1出现了。2004年，ArcGIS的版本变为ArcGIS9X是一套全面的、完善的和可伸缩的软件平台。无论是单用户还是多用户，无论是在桌面端、服务器端还是在互联网上，ArcGIS都可以提供地理信息系统服务。
如图I -7所示，ArcGIS是ESRI全套软件产品的总称，其软件体系分为四个部分:桌面版GIS，嵌人式GIS , GIS服务器和移动GIS。桌面版GIS、嵌入式GIS和服务器GIS的一部分，都是使用ArcObjects开发的，这些GIS程序正是通过ArcObjects组件对象来获取数据，完成地理分析任务并输出地图的。
对象组件模型(COM)与ArcObjects
ArcObjects(简称AO)是美国ESRI ( Environmental Systems Research Institute,Inc,)公司提供的一个GIS技术框架，它是基于Microsoft的CUM技术开发的一套COM组件对象集，这个组件集提供了几乎全部的底层GIS功能，就连ArcGIS软件本身都是使用ArcObjects的组件开发出来的。由于ESRI开放了这个组件库的APIs ,因此普通程序员也可以使用ArcObjects开发自己的GIS应用程序，这个过程和ESRI的程序员的工作是一样的。
使用AO进行的GIS二次开发，就是在一定的开发平台上，如VBA,Visual Basic,VisualC+ +或.NET平台等，按照项目的具体需求将这些底层功能组件重新进行组装，以集成一个更强大、更复杂的CUM对象的过程。使用AO进行的组件式GIS二次开发，是目前最流行、最灵活和最稳定的GIS开发方式。
AO参考类库
（ArcObjects library reference）
AO的参考类库对于AE开发者以及DESKTOP和SERVER是一样的。每个AO库都像是一个.NET程序集。因此，本文的余下部分按照.NET的风格来引述这些类库。
每个程序集同其它程序集之间都是独立的，知道这一点很重要。因为这影响程序员在开发软件时同程序集之间的交互。理解独立性也能在发布成果时有所帮助。
1.system
ArcGis构架中最低层的类库。此程序集中包含的组件为其它组成ArcGis的类库提供服务。
2.SystemUI
定义ArcGis系统中的用户界面组件使用的类型。接口如ICommand和ITool都定义在此程序集内。实现这些类型通常在一个或多个更高级的库中完成
3.ADF assembly
提供.NET基类，组件类别唯一ID(CATIDS)，以及先前在UTILITY程序集中提供的实体类。
4.Utility 
在9.2版本之前遭受批评。大多数功能先转移到新的ADF程序集中了。
部署提示：你仍然可以使用UTILITY类发布程序，并且任何参考他们的项目会继续正常运行；然而，注意UTILITY现在被反对，并且在以后的版本中将全部移除。 
5.Geometry
包含核心几何对象，比如点、多边形、折线，等等。以及几何类型和定义。Geometry程序集也为投影系统和地理坐标系统定义和实现空间参考对象。
6.Display
包含支持绘制符号到输出设备的组件。屏幕显示，符号，颜色和反馈对象，并且他们支持的所有对象都在这个程序集中定义了。
7.Server
包含获取ArcGIS Server连接的对象. 这个连接通过此类库中的e对象来管理，但其它类库中的对象能通过使用server对象的函数来创建。
8.Output
包含需要生成输出的对象，大部分都是MAPS和PAGELAYOUTS，到打印机和绘图仪以及输出到文件。
9.GeoDatabase
包含所有关于数据获取的定义类型。要素，表格，网络，TIN都在GeoDatabase程序集中定义。许多类型的实现包含在各自数据源的程序集里。 部署提示：此类库中有些对象的使用要求Geodatabase Update extension for ArcGIS Engine Runtime.  
10.GISClient 
包含远程GIS服务的对象。这些服务可由ArcIMS或是ArcGIS Server提供.   
11.ArcWeb
提供ArcWeb服务连接.   
12.DataSourcesFile 
包含GeoDatabase API支持的矢量数据的workspace factories以及workspace。
13.DataSourcesGDB 
包含GeoDatabase支持的矢量数据和栅格数据格式的workspace factories以及workspace。
14.DataSourcesOleDB
为基于OLEDB的数据源提供workspace.   
15.DataSourcesRaster
包含文件栅格数据的workspace factories以及workspace。
16.DataSourcesNetCDF
包含用于读取netCDF文件的对象，以及在ArcGis中创建栅格、要素及表。
17.GeoDatabaseDistributed
包含支持分布式GeoDatabase perform、 checkout / checkin的对象.   
18.GeoDatabaseExtensions
包含创建、管理和使用地形数据集（terrain datasets）以及地籍数据（cadastral fabrics）的对象. 
注意：在9.2版本中，地籍相关对象还没有完全实现，因此我们建议开发者在Cadastral Analyst extension发布前不要使用它们。
19.Carto
包含显示数据的对象。对应地图图层的PageLayout和Map对象都在此类库中，渲染所有支持的数据类型。这个程序集也包括
MxdServer和MapServer对象，被server用于在客户服务器模式（client server environment）中显示地图数据.
20.NetworkAnalysis
支持实体网络（utility networks）的创建和分析.
21.Location
包含与位置数据工作相关的对象。这既可能是路径事件（route events），也可能是地理编码（geocoding locations）.
22.GeoAnalyst
包含核心的空间分析运算，被用于SpatialAnalyst和3DAnalyst extensions.
部署提示：要求3D or Spatial extension for ArcGIS Engine runtime.  
23.Animation
包含在Map, Scene and Globe中使用动画（Animation）的对象. 在ArcGIS 9.2中,包括ArcGIS Desktop,animation functionality在ArcMap, ArcScene, and ArcGlobe中都可以使用.然而,当使用ArcGIS Engine时, animation functionality对于Map control是无效的.它只能在Scene和Globe controls中使用, 这些是由3D Analyst extension支持的.   
24.Maplex 
包含通过使用Maplex Extension来标注要素的对象.其它的Maplex对象能在Carto程序集中找到.
部署提示：需要Maplex extension for ArcGIS Engine Runtime.  
25.Geoprocessing 
实现空间处理框架（Geoprocessing framework）来补充空间处理工具（Geoprocessing tools）的基础设置. 这些工具是否有效取决于你的licenses范围.参见individual tools for specific license information. 
部署提示：有些geoprocessing tools和functionality要求extension license.参见documentation for each tool for specifics. 
26.NetworkAnalyst
提供网络数据集（network datasets）工作的对象.这些对象允许你在你的程序中运行网络分析（network analysis）.
部署提示：需要Network Analyst extension for ArcGIS Engine Runtime.  
27.Schematic
实现图表扩展项（Schematics extension）的无用户界面功能性（non user-interface functionality）.它掌握ArcGIS Schematics extension的核心对象, 被用于管理图表数据及加工（schematic data and processes）.Schematics extension支持ArcGis中图表数据（schematic data）的分析、显示和操作. 
部署提示：需要Schematic extension for ArcGIS Engine Runtime.  
28.SpatialAnalyst
包含在栅格数据和矢量数据上运行空间分析（spatial analyst）的对象.  
部署提示：需要Spatial extension for ArcGIS Engine Runtime.  
30.3DAnalyst
包含数据的三维分析（3D analysis）对像，以及三维数据（3D data）显示.
部署提示：需要3D extension for ArcGIS Engine Runtime.  
31.GlobeCore
包含地球数据（globe data）分析的对象,以及支持地球数据（globe data）的显示.在此程序集中有个控件（control）开发者可以使用。  
部署提示：需要3D extension for ArcGIS Engine Runtime.  
32.Controls
包含程序开发的控件（controls），包括相应的命令（commands）和工具（tools）.  
部署提示：使用GlobeControl或SceneControl的程序需要3D extension for ArcGIS Engine Runtime.  
33.TrackingAnalyst
对ArcMap实现追踪分析扩展的无用户界面功能性（non-user interface functionality of the Tracking Analyst extension）to ArcMap.Tracking Analyst extension在ArcGis中支持时间数据（temporal data）的显示、分析和操作.  
部署提示：需要Tracking extension for ArcGIS Engine Runtime 
注
一个WorkspaceFactory是一个workspace的分配者，并允许一个客户连接到一个由一系列连接属性指定的workspace中。一个workspace代表一个数据库（database）或者一个包含一个或多个数据集（dataset）的数据源（datasource）。数据集（dataset）的例子包括表格（table）、要素类（feature class）和关系类（relationship class）。一个workspaceFactory是一个可联合创建的（cocreatable）、singleton（单独）的对象。一个workspacefactory维护当前程序引用的活动工作（workspace）连接的一个池（pool）。连接属性通过使用一个属性设置对象（propertyset object）来说明，并且可以存储到一个连接文件.一个workspaceFactory也支持浏览和管理文件系统工作（workspace）的方法，以及管理远程数据库工作（workspace）的连接文件的方法。
Remarks
A WorkspaceFactory is a dispenser of workspaces and allows a client to connect to a workspace specified by a set of connection properties. A workspace represents a database or a datasource that contains one or more datasets. Examples of datasets include tables, feature classes and relationship classes. A WorkspaceFactory is a cocreatable, singleton object. A WorkspaceFactory maintains a pool of currently connected, active workspaces that are being referenced by the application. Connection properties are specified using a PropertySet object and can be saved to a connection file. A WorkspaceFactory also supports methods that can be used to browse and manage file system workspaces, and methods to manage connection files for remote database workspaces.