A number of the libraries of ArcObjects that are included with ArcGIS Desktop are actually shared across the entire ArcGIS platform. These shared libraries are the ones we make available through ArcGIS Engine and they contain components that are not part of the ArcGIS UI. These shared libraries are summarized below. Understanding the library structure, dependencies, and basic functionality will help you as a developer navigate through the components of ArcGIS.
For a comprehensive discussion on each library, refer to the overview topic for each in the ArcObjects Library Reference section of the help system.
The libraries are discussed in dependency order. For example, System, as the library at the base of the ArcGIS architecture, is discussed first, while GeoDatabase depends on the six libraries that precede it in this discussion—System, SystemUI, Geometry, Display, Server, and Output.
Knowing the library dependency order is important, since it affects the way in which developers interact with the libraries as they develop software. For example, C++ developers must include the type libraries in the library dependency order to ensure correct compilation. Understanding the dependencies also helps when deploying your developments.
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 comprising 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 the ArcGIS Engine in applications that make use of Engine functionality. The developer does not extend this library but can extend the ArcGIS system by implementing interfaces contained within this library.
SystemUI
The SystemUI library contains the interface definitions for user interface components that can be extended within the ArcGIS Engine. These include the ICommand, ITool, and IToolControl interfaces. The developer uses these interfaces to extend the UI components that the 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.
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. Beside 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 Segments, Paths, and Rings. 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 beginning to end. The kinds of segments are CircularArc, Line, EllipticArc, and BezierCurve. All geometry objects can have Z, M, and IDs associated with their vertices. The fundamental geometry objects all support geometric operations, such as Buffer and Clip. The geometry primitives are not meant to be extended by developers.
Entities within a GIS refer to real-world features; the location of these real-world features is defined by a geometry along with a spatial reference. Spatial reference objects for both projected and geographic coordinate systems are included in the Geometry library. Developers can extend the spatial reference system by adding new spatial references and projections between spatial references.
Display
The Display library contains objects used for the display of GIS data. In addition to the main display objects responsible for the actual output of the image, the library contains objects that represent symbols and colors used to control the properties of entities drawn on the display. The library also contains objects that provide the user with visual feedback when interacting with the display. Developers most often interact with the display through a view like the ones provided by the Map or PageLayout objects. All parts of the library can be extended, with the commonly extended areas being symbols, colors, and display feedbacks.
Server
The Server library contains objects that allow you to connect and work with ArcGIS Servers. Developers gain access to an ArcGIS Server using the GISServerConnection object. The GISServerConnection object gives access to the ServerObjectManager. Using this object a developer works with ServerContext objects to manipulate ArcObjects running on the server. The Server library is not extended by developers. Developers can also use the GISClient library when interacting with the ArcGIS Server.
Output
The Output library is used to create graphical output to devices, such as printers and plotters, and hardcopy formats, such as enhanced metafiles and raster image formats (JPG, BMP, and so forth). The developer uses the objects in the library with other parts of the ArcGIS system to create graphical output. Commonly, these would be objects in the Display and Carto libraries. Developers can extend the output library for custom devices and export formats.
GeoDatabase
The GeoDatabase library provides the programming API for the geodatabase. The geodatabase is a repository of geographic data built on standard industry relational and object relational database technology. The objects within the library provide a unified programming model for all supported data sources within ArcGIS. The GeoDatabase library defines many of the interfaces that are implemented by data source providers higher in the architecture. The geodatabase can be extended by developers to support specialized types of data objects (Features, Classes, and so forth); in addition, it can have custom vector data sources added using the PlugInDataSource objects. The native data types supported by the geodatabase cannot be extended.
GISClient
The GISClient library allows developers to consume Web services; these Web services can be provided by ArcIMS and ArcGIS Server. The library includes objects for connecting to GIS servers to make use of Web services. There is support for ArcIMS Image Services and Feature Services. The library provides a common programming model for working with ArcGIS Server objects in a stateless manner, either directly or through a Web service catalog. ArcObjects running on the ArcGIS Server is not accessible through the GISClient interface. To gain direct access to ArcObjects running on the server, you should use functionality in the Server library.
ArcWeb
The ArcWeb library contains objects used for accessing ArcWeb Services. ArcWeb Services are hosted Web services that include map data and on-demand geospatial capabilities needed to add real-time locations, addresses, points of interest, dynamic maps, and routing directions to Web and wireless applications. Map data storage, maintenance, and updates are handled by ESRI, eliminating up-front map database, geospatial software, and ongoing maintenance expenses.
DataSourcesFile
The DataSourcesFile library contains the implementation of the GeoDatabase API for file-based data sources. These file-based data sources include shapefile, coverage, TIN, CAD, SDC, and VPF. The DataSourcesFile library is not extended by developers.
DataSourcesGDB
The DataSourcesGDB library contains the implementation of the GeoDatabase API for the database data sources. These data sources include Microsoft Access and SDE® software-supported RDBMSs. The DataSourcesGDB library is not extended by developers.
DataSourcesOleDB
The DataSourcesOleDB library contains the implementation of the GeoDatabase API for the Microsoft OLE DB data sources. This library is only available on the Microsoft Windows operating system. These data sources include any OLE DB-supported data provider and text file workspaces. The DataSourcesOleDB library is not extended by developers.
Raster Data Objects (RDO) is a COM API that provides display and analysis support for file-based raster data.
DataSourcesRaster
The DataSourcesRaster library contains the implementation of the GeoDatabase API for the Raster data sources. These data sources include SDE software-supported RDBMSs, along with all the supported RDO raster file formats. Developers do not extend this library when support for new raster formats is required; rather, they extend RDO. The DataSourcesRaster library is not extended by developers.
DataSourcesNetCDF
The DataSourcesNetCDF library contains objects used for accessing netCDF files and for creating rasters, features, or tables from netCDF variables in ArcGIS.
GeoDatabaseDistributed
The GeoDatabaseDistributed library supports distributed access to an enterprise geodatabase by providing tools for importing data into and exporting data out of a geodatabase. The GeoDatabaseDistributed library is not extended by developers.
GeoDatabaseExtensions
The GeoDatabaseExtensions library contains objects to aid in the creation, management, and use of terrain datasets and cadastral fabrics.
At the 9.2 release, the cadastral fabrics related objects are not yet fully implemented and we recommend that developers do not utilize them until the Cadastral Analyst extension is released.
MilitaryAnalyst
The MilitaryAnalyst library implements the non-user interface functionality of the Military Analyst extension. It contains objects used for converting coordinates, creating geodetically correct geometric objects, creating and displaying MA Layers in ArcGIS, and controlling the GeoSym Renderer. The Military Analyst extension is required to leverage the objects in this library.
MOLE
The MOLE library contains objects that display and edit military war fighting symbology per the MIL-STD-2552B Change 1 and APP-6A symbology specifications. These objects implement the non-user-interface functionality of the Military Overlay Editor (MOLE) software application and compose a collection of custom renderers and tools that conform to MIL-STD-2552B Change 1 and APP-6A. The Military Overlay Editor application is required to leverage the objects in this library.
Carto
The Carto library supports the creation and display of maps; these maps can consist of data in one map or a page with many maps and associated marginalia. The PageLayout object is a container for hosting one or more maps and their associated marginalia: North arrows, legends, scalebars, and so forth. The Map object is a container of layers. The Map object has properties that operate on all layers within the map: spatial reference, map scale, and so forth, along with methods that manipulate the map's layers. There are many different types of layers that can be added to a map. Different data sources often have an associated layer responsible for displaying the data on the map; vector features are handled by the FeatureLayer object, raster data by the RasterLayer, TIN data by the TinLayer, and so forth. Layers can, if required, handle all the drawing operations for their associated data, but it is more common for layers to have an associated Renderer object. The properties of the Renderer object control how the data is displayed in the map. Renderers commonly use symbols from the Display library for the actual drawing; the renderer simply matches a particular symbol with the properties of the entity that is to be drawn. A Map, along with a PageLayout, can contain elements. An element has geometry to define its location on the map or page, along with behavior that controls the display of the element. There are elements for basic shapes, text labels, complex marginalia, and so forth. The Carto library also contains support for map annotation and dynamic labeling.
The ArcGIS Server uses the MapServer object for its MapService.
Although developers can directly make use of the Map or PageLayout objects in their applications, it is more common for developers to use a higher-level object, such as the MapControl, PageLayoutControl, or ArcGIS Application. These higher-level objects simplify some tasks, although they always provide access to the lower-level Map and PageLayout objects, allowing the developer fine control of the objects.
The Map and PageLayout objects are not the only objects in Carto that expose the behavior of Map and Page drawing. The MxdServer and MapServer objects both support the rendering of Maps and Pages, but instead of rendering to a window, these objects render directly to a file.
Using the MapDocument object, developers can persist the state of the Map and PageLayout within a Map Document (MXD), which can be used in ArcMap, or one of the ArcGIS controls.
The Carto library is commonly extended in a number of areas. Custom renderers, layers, and so forth, are common. A custom layer is often the easiest method of adding custom data support to a mapping application.
NetworkAnalysis
The NetworkAnalysis library provides objects for populating a geodatabase with network data and objects to analyze the network when it is loaded in the geodatabase. Developers can extend this library to support custom network tracing. The library is meant to work with utility networks—gas lines, electricity supply lines, and so forth.
Location
The Location library contains objects that support geocoding and working with route events. The geocoding functionality can be accessed through fine-grained objects for full control, or the GeocodeServer objects offer a simplified API. Developers can create their own geocoding objects. The linear referencing functionality provides objects for adding events to linear features and rendering these events using a variety of drawing options. The developer can extend the linear reference functionality.
GeoAnalyst
The GeoAnalyst library contains objects that support core spatial analysis functions. These functions are used within both the ArcGIS Spatial Analyst and ArcGIS 3D Analyst™ libraries. Developers can extend the library by creating a new type of raster operation. An ArcGIS Spatial Analyst or 3D Analyst license is required to make use of the objects in this library.
Animation
The Animation library contains objects to work with animations in Map, Scene and Globe. In ArcGIS 9.2, with ArcGIS Desktop, the animation functionality is available in the ArcMap, ArcScene, and ArcGlobe applications. However, when working with ArcGIS Engine, animation functionality is not available for the Map control. It is only available for the Scene and Globe controls, which are supported with the 3D Analyst extension.
Maplex
The Maplex library contains objects that control the Maplex label placement engine. It is the main library of the Maplex for ArcGIS extension.
Geoprocessing
The Geoprocessing library contains the objects that implement the unified geoprocessing framework. The geoprocessing framework is intended to meet the functional requirements to perform many GIS tasks and to provide a flexible framework for tool use, tool creation, and tool sharing.
NetworkAnalyst
The NetworkAnalyst library contains objects for working with network datasets. Developers can extend this library by creating new network solvers. A license for the Network Analyst extension or the ArcGIS Engine Runtime Network option is required to make use of the objects in this library.
Schematic
The Schematic library implements the non user-interface functionality of the Schematics extension. It handles the core objects of the ArcGIS Schematics extension, used to manage schematic data and processes. The Schematics extension supports the analysis, display, and manipulation of schematic data within ArcGIS.
SpatialAnalyst
The SpatialAnalyst library contains objects for performing spatial analysis on raster and vector data. Developers most commonly consume the objects within this library and do not extend it. An ArcGIS Spatial Analyst license is required to work with objects in this library.
3DAnalyst
The 3DAnalyst library contains objects for working with three-dimensional scenes in a similar way that the Carto library contains objects for working with two-dimensional maps. The Scene object is one of the main objects of the library, since it is the container for data similar to the Map object. The Camera and Target objects specify how the scene is viewed regarding the positioning of the features relative to the observer. A scene consists of one or more layers; these layers specify the data in the scene and how the data is drawn.
GlobeCore
The GlobeCore library contains objects for working with globe data similar to the way that the Carto library contains objects for working with two-dimensional maps. The Globe object is one of the main objects of the library, since it is the container for data similar to the Map object. The GlobeCamera object specifies how the Globe is viewed regarding the positioning of the globe relative to the observer. The Globe can have one or more layers; these layers specify the data on the Globe and how the data is drawn.
TrackingAnalyst
The TrackingAnalyst library implements the non-user interface functionality of the Tracking Analyst extension to ArcGIS. The Tracking Analyst extension supports the display, analysis, and manipulation of temporal data within ArcGIS.
Controls
The Controls library is used by developers to build or extend applications with ArcGIS functionality. The ArcGIS Controls simplify the development process by encapsulating ArcObjects and providing a coarser-grained API. Although the controls encapsulate the fine-grained ArcObjects, they do not restrict access to them. The Controls library contains the MapControl, PageLayoutControl, TOCControl (Table of Contents), ToolbarControl, GlobeControl, SceneControl, LicenseControl and SymbologyControl together with a collection of Control Commands. The control commands are a set of commands, tools, menus and palettes that work with the ArcGIS Engine Controls.
Developing with the controls requires an ArcGIS Engine Developer license. In addition, a 3D Analyst extension license is required for applications that use the GlobeControl and SceneControl.
Developers extend the Controls library by creating their own commands and tools for use with the controls. To support this the library has the HookHelper object. This object makes it straightforward to create a command that works with any of the controls, in addition to ArcGIS applications, such as ArcMap.
In addition to the ArcGIS Engine Controls contained in this library, an ArcReaderControl and ArcReaderGlobeControl exist in the ArcGIS Desktop PublisherControls library.