About ArcObjects
ArcGIS products are built on thousands of components called ArcObjects. When you use an application, such as ArcMap, usually you are looking at or working with ArcObjects. Every command or tool you use for adding data, editing, or performing spatial analysis is running code that includes ArcObjects. The same ArcObjects that were used to develop ArcGIS products are available to you as a developer to use in your customizations and stand-alone applications. They are grouped into more than 65 assemblies based on the relationships between the objects. Examples of the core assemblies include Carto, Display, Map, and Geodatabase. There are also assemblies for the ArcGIS extensions, such as 3D Analyst, Spatial Analyst, and Network Analyst. To develop, you need to be familiar with the ArcObjects that provide the functionality you require.
ArcObjects are COM-based and as such, ArcObjects developers will need to have a basic understanding of COM. For more information, see Introduction to COM for ArcObjects developers and Using ArcObjects (COM-based) in .NET.
Object model diagrams
Each assembly consists of ArcObjects that can be diagrammed based on their class relationships. These diagrams are referred to as object model diagrams (OMDs). The diagrams provide information such as how to work with certain classes and how classes relate to each other. For more information about using OMDs, see Reading OMDs.
ArcObjects functionality
The benefit of using ArcObjects in your geographic information system (GIS) development is that the objects already know how to behave in a GIS application. For example, you can have the map refresh in a single line of code instead of having to write all the code to do the actual drawing. As previously mentioned, there are thousands of ArcObjects; consequently, the remainder of this topic focuses on directing you to the required objects for your customization's functionality.
Configuring maps, layers, and graphics
Most applications will need to interact with your map. Adding data, designing a page layout, setting symbols and colors, and labeling your map are some of these common tasks. These types of tasks are covered in Interacting with and configuring maps, layers, and graphics. The main assemblies used for these tasks are ArcMap and Carto.
Exporting and printing maps
Once you have a map, you might want to export it or print it. These types of tasks are covered in Exporting and printing maps. The main assembly used for these tasks is Output.
Interacting with the map display
In addition to the data included in your map, you might want to draw on the map, display time-aware data, add animations, or display moving objects, such as those from a Global Positioning System (GPS) feed. These types of tasks are covered in Interacting with the map display. The main assemblies used for these tasks are Display, Animation, and EngineCore.
Managing data
Beyond visualization of data, the data itself can be managed through ArcObjects. Some examples of tasks include accessing and querying features and geodatabases, creating topologies and relationships, accessing and processing raster and image data, managing shapefiles, creating geometries, and using the spatial reference set. These types of tasks are covered in Managing data. The main assemblies used for these tasks include Geodatabase, DataSourcesFile, DataSourcesGDB, DataSourcesRaster, and Geometry.
Spatial query and analysis
A GIS is used to answer spatial questions, such as the following:
- Where might this fire spread?
- Where should I look at houses if I want to be within three miles of work?
- How do I get to the store from here?
- What is the soil type?
These types of tasks are covered in Spatial query and analysis. This section makes extensive use of the geoprocessing tools discussed later in this topic, along with the Location, NetworkAnalysis, NetworkAnalyst, and SpatialAnalyst assemblies.
Editing data
Information from a GIS is only as good as the data on which it is built, and sometimes that data needs to be updated or changed. Roads are built and cities developed. Editing tasks are covered in Editing data, and the ArcGIS for Desktop editing for developers and ArcGIS Engine editing topics are good starting points. The main assemblies used for editing tasks are Editor, Controls, and Geodatabase.
ArcGIS extensions
Sometimes a customization requires additional functionality that is not available in out-of-the-box ArcGIS products. In ArcGIS, advanced capabilities are provided through extensions to the applications, and the same extensions and their functionality are also available to developers. Extensions include advanced analysis capabilities through assemblies, such as SpatialAnalyst, 3DAnalyst, and TrackingAnalyst.
Geoprocessing tools
A variety of geoprocessing tools are available in ArcGIS products and those same tools are available to developers. While the tools are built on ArcObjects, they provide a simpler and optimized way to perform many common tasks, ranging from data management to overlay and proximity analysis, to functionality available through the many available extensions. Using geoprocessing shows how to work with geoprocessing tools as a developer, by using the Geoprocessing assembly and the Geoprocessor managed assembly. Spatial query and analysis tasks, located in the section of the same name, make heavy use of the geoprocessing tools and show developers when to use geoprocessing, and when fine-grained ArcObjects should be used instead.
See Also:
Getting started with ArcObjects in .NETBest practices for using ArcObjects in .NET
Interacting with and configuring maps, layers, and graphics
Exporting and printing maps
Interacting with the map display
Using geoprocessing
Managing data
Spatial query and analysis
Editing data
ArcGIS extensions
General ArcObjects references
Extending ArcObjects