ArcObjects libraries shared across the platform


Summary
Many ArcObjects libraries included with ArcGIS Desktop are actually shared across the entire ArcGIS platform. These shared libraries are available through ArcGIS Engine and contain components that are not part of the ArcGIS user interface (UI). These shared libraries are summarized in this topic. Understanding the library structure, dependencies, and basic functionality helps you as a developer navigate through the components of ArcGIS.

In this topic


About ArcObjects libraries shared across the ArcGIS platform

The libraries in this topic 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 following libraries that precede it in this discussion:
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. For a comprehensive discussion on each library, refer to the ArcObjects library reference section in the Help system.

System library

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. A number of interfaces defined in the System library can be implemented by the developer. The AoInitialize object is defined in System. All developers must use this object to initialize and uninitialize ArcGIS Engine in applications that use ArcGIS Engine functionality. The developer does not extend this library but can extend the ArcGIS system by implementing interfaces contained in this library.

SystemUI library

The SystemUI library contains the interface definitions for UI components that can be extended in 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 in this library are utility objects available to the developer to simplify some UI developments. The developer does not extend this library but can extend the ArcGIS system by implementing interfaces contained in this library.

Geometry library

The Geometry library handles the geometry (or shape) of features stored in feature classes or other graphic elements. The general geometry objects with which most users interact are Point, MultiPoint, Polyline, and Polygon. Beside these top-level entities are the following primitive geometries that serve as building blocks for polylines and polygons:
Polylines and polygons are composed of a sequence of connected segments that form a path. A segment consists of two distinguished points (the start point and endpoint) and an element type that defines the curve from beginning to end. The kinds of segments are CircularArc, Line, EllipticArc, and BézierCurve. All geometry objects can have z- and m-values, 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 in a geographic information system (GIS) refer to real-world features. The location of these real-world features is defined by a geometry with a spatial reference. Spatial reference objects for a projected coordinate system (PCS) and a geographic coordinate system (GCS) are included in the Geometry library. Developers can extend the spatial reference system by adding new spatial references and projections between spatial references.

Display library

The Display library contains objects used to display 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 library

The Server library contains objects that allow you to connect and work with ArcGIS Server. Developers gain access to 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 ArcGIS Server.

Output library

The Output library is used to create graphic output to devices; for example, printers, plotters, and hard-copy formats, such as enhanced metafiles and raster image formats (for example, Joint Photographic Experts Group [JPEG], bitmap [BMP], and so on). The developer uses the objects in the library with other parts of ArcGIS to create graphic output. Commonly, these are objects in the Display and Carto libraries. Developers can extend the Output library for custom devices and export formats.

GeoDatabase library

The GeoDatabase library provides the application programming interface (API) for the geodatabase. The geodatabase is a repository of geographic data built on standard industry relational and object relational database technology. The objects in the library provide a unified programming model for all supported data sources in 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 on). 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 library

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, directly or through a Web service catalog. ArcObjects running on 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.

DataSourcesFile library

The DataSourcesFile library contains the implementation of the GeoDatabase API for file-based data sources. These file-based data sources include the following formats:
The DataSourcesFile library is not extended by developers.

DataSourcesGDB library

The DataSourcesGDB library contains the implementation of the GeoDatabase API for the database data sources. These data sources include Microsoft Access and Spatial Database Engineer (SDE) software-supported relational database management systems (RDBMSs). The DataSourcesGDB library is not extended by developers.

DataSourcesOleDB library

The DataSourcesOleDB library contains the implementation of the GeoDatabase API for the Microsoft Object Linking and Embedding database (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 Component Object Model (COM) API that provides display and analysis support for file-based raster data.

DataSourcesRaster library

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 library

The DataSourcesNetCDF library contains objects used for accessing netCDF files and for creating rasters, features, or tables from netCDF variables in ArcGIS.

GeoDatabaseDistributed library

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 library

The GeoDatabaseExtensions library contains objects to aid in the creation, management, and use of terrain datasets and cadastral fabrics.
At ArcGIS 9.2, the cadastral fabrics related objects are not fully implemented. It is recommended that developers do not utilize them until the Cadastral Analyst extension is released.

Carto library

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 (for example, north arrows, legends, scale bars, and so on).
The Map object is a container of layers. The Map object has properties that operate on all layers in the map (for example, spatial reference, map scale, and so on), along with methods that manipulate the map's layers. Many different types of layers 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 on). 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 shows on the map. Renderers commonly use symbols from the Display library for the actual drawing. The renderer matches a particular symbol with the properties of the entity that is to be drawn. A Map object, along with a PageLayout object, 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 on. The Carto library also contains support for map annotation and dynamic labeling.
ArcGIS Server uses the MapServer object for its MapService.
Although developers can directly use 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. Both MxdServer and MapServer objects 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 in 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 on, are common. A custom layer is often the easiest method of adding custom data support to a mapping application.

Defense Solutions

The Defense Solutions library contains objects for building defense applications that provide military symbology (MIL-STD-2525B or APP-6A), coordinate conversion, creation of geodetically correct geometries, creation and display of Military Analyst layers, control of the GeoSym Renderer, and other defense analysis tools.  The Defense Solutions library combines two distinct libraries from previous releases of ArcGIS, the Military Overlay Editor (MOLE) library and the Military Analyst library. Either MOLE or Military Analyst is required to leverage the objects in this library, depending on the required features.

NetworkAnalysis library

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 on).

Location library

The Location library contains objects that support geocoding and working with route events. Geocoding functionality can be accessed through fine-grained objects for full control or the GeocodeServer objects offer a simplified API. Developers can create their 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 library

The GeoAnalyst library contains objects that support core spatial analysis functions. These functions are used in the ArcGIS Spatial Analyst and ArcGIS 3D Analyst libraries. Developers can extend the library by creating a type of raster operation. An ArcGIS Spatial Analyst or 3D Analyst license is required to use the objects in this library.

Animation library

The Animation library contains objects to work with animations in map, scene, and globe. In ArcGIS Desktop 9.2, the animation functionality is available in ArcMap, ArcScene, and ArcGlobe. 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 library

The Maplex library contains objects that control the Maplex label placement engine. It is the main library of the Maplex for ArcGIS extension.

Geoprocessing library

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 library

The NetworkAnalyst library contains objects for working with network datasets. Developers can extend this library by creating network solvers. A license for the Network Analyst extension or the ArcGIS Engine Runtime Network option is required to use the objects in this library.

Schematic library

The Schematic library implements the non-user interface functionality of the ArcGIS Schematics extension. It handles the core objects of the Schematics extension, used to manage schematic data and processes. The Schematics extension supports the analysis, display, and manipulation of schematic data in ArcGIS.

SpatialAnalyst library

The SpatialAnalyst library contains objects for performing spatial analysis on raster and vector data. Developers commonly consume the objects in this library and do not extend it. An ArcGIS Spatial Analyst license is required to work with objects in this library.

3DAnalyst library

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 library

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 library

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 in ArcGIS.

Controls library

The Controls library is used by developers to build or extend applications with ArcGIS functionality. ArcGIS controls simplify the development process by encapsulating ArcObjects components and providing a coarser-grained API. Although the controls encapsulate the fine-grained ArcObjects components, access to them is not restricted. The Controls library contains the MapControl, PageLayoutControl, TOCControl (table of contents), ToolbarControl, GlobeControl, SceneControl, and SymbologyControl 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. A full library overview of the Controls library is available in the ArcObjects software development kit (SDK) for the Java platform.
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 commands and tools to 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.