ArcObjects Help for .NET developers



About the ArcObjects Help for .NET developers

ArcObjects is a library of Component Object Model (COM) components that make up the foundation of ArcGIS. To work with ArcObjects in the .NET development environment, a collection of .NET primary interop assemblies (PIAs) and COM object libraries have been generated to manage .NET–COM interaction. ArcObjects components are installed with ArcGIS for Desktop, ArcGIS Engine, and ArcGIS for Server and can be used in the following ways:
  • To customize ArcGIS for Desktop applications
  • To build stand-alone mapping applications
  • To develop Web applications 
The software development kit (SDK) for developing with ArcObjects in .NET assists you in writing your applications by providing best practices, conceptual documentation, code sections, and samples.
If you are new to ArcObjects development, first determine what type of application you need to build to address your problem. This topic presents the different development options and points you in the right direction. Once you know what type of application you are going to create, the Learning ArcObjects topic provides a foundation as you begin to build ArcObjects solutions.
Developers with existing solutions built on earlier releases of ArcGIS should read What's new for developers at 10.3x?, What's new for developers at 10.2?, What's new for developers at 10.1?What's new for developers at 10?, and the section on Migrating your code.
Although this SDK focuses on C# and VB.NET development, it also contains resources for the VC++ developer. To access those resources, select them as a part of your SDK installation. If you did not do so, you can modify your installation and select the VC++ option to get additional Help topics and samples.

Customizing ArcGIS for Desktop

ArcGIS for Desktop is a suite of integrated applications including ArcMap, ArcGlobe, ArcScene, and ArcCatalog. ArcGIS for Desktop applications allow you to perform geographic information system (GIS) tasks from simple to advanced, including mapping, geographic analysis, data compilation, data management, visualization, and geoprocessing. The ArcGIS for Desktop Help system provides topics about these applications.
ArcGIS for Desktop applications can be customized to automate GIS tasks or create unique workflows and environments suitable for your organization. The following are the ways you can customize ArcGIS for Desktop applications:
  • Configure the application user interface (UI), such as rearranging toolbars, tools, commands, and dockable windows
  • Python scripting to automate workflows
  • Develop add-ins to create custom applications and extensions
  • Develop custom components to add new functionality to ArcGIS applications
This SDK only addresses customization through developing add-ins and custom components. For UI configuration and Python scripting, developing with ArcObjects and .NET is not required. Those topics are covered in the ArcGIS for Desktop Help system.

User interface configuration

The ArcGIS for Desktop application graphical user interfaces (GUIs) are composed of menus, toolbars, and dockable windows that you can configure to meet your daily tasks and requirements without writing a single line of code. Configuration changes can be performed by any user, do not require programming, and are persisted between application sessions.
These tasks are accomplished by dragging and dropping within the application and do not require administrative privileges. The configuration changes are saved with your document, so that when your document is opened, the layout of the GUI remains the way you last configured it.
The following are examples of UI configurations:
  • You can add or remove new commands and tools on to the application's toolbar from the Customize dialog box.
  • You can create new toolbars and menus, or rearrange existing toolbars and menus to group the commands and tools that are frequently used. 
  • You can drag and drop geoprocessing tools and models on to the application's toolbar from the Customize dialog box.
  • You can hide and show, or close dockable windows, such as the Search window, table of contents (TOC), and so on. Dockable windows can also be positioned to float or remain docked in a specified area in the application.
  • You can assign and work with default geographic data (via templates).
See the following screen shot that shows the Customize dialog box in the ArcMap UI:
Since programming is not required, this SDK does not cover this type of customization. For more information, see About configuring the user interface in the ArcGIS for Desktop Help system.

Scripts to automate workflows

ArcGIS for Desktop provides automation through geoprocessing tools and ModelBuilder, which requires no coding. However, you can use scripting to automate batch processing of a number of different and large datasets, map documents (.mxd), and layer (.lyr) files.  You can automate execution of simple, repeatable tasks and complex processes that invoke other built-in geoprocessing tools. The scripts must be authored based on arcgisscripting and the arcpy.mapping module using the Python scripting language. The arcgisscripting module provides Python functions to access data and data properties. By using the Python functions in your script, you can automate data conversions, load data into geodatabases, project a set of feature classes, and so on.
The arcpy.mapping module provides Python functions to open and manipulate map documents (.mxd) and layer files (.lyr). By using the arcpy.mapping module, you can query and alter the contents, and print, export, or save the modified map documents and layer files.
The following are the advantages of scripting with Python:
  • Automate geoprocessing tasks with a single tool, multiple tools, or with other custom script tools.
  • Schedule the script's execution to run daily and weekly, or daily or weekly without user interaction.
  • Interoperable with other Python-based third party libraries and scientific packages available for advanced analysis.
  • Drag and drop script tools onto the application's toolbar for easy access.
  • Easy to share and can be executed independent of the ArcGIS for Desktop application UI across any platform. 
However, scripting with Python has some limitations. Not all areas of ArcGIS are exposed in Python, nor does it provide access to Esri's many COM extensibility points.
Since .NET programming is not required, this SDK does not cover this type of customization. For more information, see A quick tour of ArcPy and Geoprocessing scripts for map document management and output in the ArcGIS for Desktop Help system.

Add-ins for interactive tasks

The desktop add-in model provides developers with a declaratively-based framework for creating blocks of custom functionality within a single compressed file. These add-in files can then be easily shared between users without relying on installation programs or COM registration. Add-in files can be installed by copying them to a well known folder location and uninstalled by deleting them from that folder location.
Desktop add-ins can be authored using VB.NET, C#, Java, or Python. To simplify development, Esri provides add-in wizards that integrate with popular development environments including Eclipse and Microsoft Visual Studio and, for Python developers, there is a stand-alone wizard.
You can obtain information concerning the source, content, and other details through Extensible Markup Language (XML) metadata contained within the add-in file. This information can be used to discover add-ins within Web portals, filter or restrict add-ins based on polices in the consuming organization, and generally manage add-ins when copied on your machine. Add-in files can also be shared between users within an organization using a centralized network share.
See the following screen shot that shows the Add-In Manager option and dialog box in the ArcMap UI:
Add-ins support the following fixed set of add-in types:
  • Commands and tools
  • Combo boxes
  • Menus and context menus
  • Toolbars
  • Tool palettes
  • Dockable windows
  • Application and editor extensions
For more information on using add-ins, see Building add-ins for ArcGIS for Desktop.

Custom components to add new functionality

ArcGIS applications are built on a common and extensible framework known as ArcObjects. You can add custom components to ArcGIS applications by extending the ArcObjects framework. These custom components can interact with other ArcObjects components and add new functionality to ArcGIS applications. Examples of custom components that you can create are tools, renderers, feature symbols, layers, editor customizations, geodatabase class extensions, and plug-in data sources.
The following screen shot shows the Layer Properties dialog box with a custom created PointDispersal renderer that disperses coincident points in a layer:
The custom component is created by developing components in .NET (C# and VB.NET) or Java using the appropriate ArcObjects application programming interface (API). The custom components must be COM visible and registered to specific Esri component categories. Also, the installation of custom components requires administrative privileges.
The following are the advantages of custom components:
  • You can create custom components that are specific to your data, domain, or organization by leveraging the wide spectrum of ArcObjects APIs.
  • You can build domain-specific customizations and advanced extensions. Some of the ArcGIS extensions, such as Production Line Tool Set (PLTS) for ArcGIS are examples of advanced application extensions created by extending the ArcObjects framework.
  • Can be easily delivered to end users via custom setup programs.
For more information on extending ArcObjects, see Extending ArcObjects.

Building stand-alone applications with ArcGIS Engine and ArcGIS for Desktop

Building stand-alone applications with ArcGIS Engine and ArcGIS for Desktop leverage the functionality available through the ArcGIS for Desktop and ArcGIS Engine applications while providing a customizable user experience. These applications can take advantage of the mapping functionality available through ArcObjects without requiring the use of the ArcGIS for Desktop applications. Developers often create the following types of applications:
  • Cost-effective ArcGIS Engine applications for mapping and visualization.
  • Stand-alone Windows form applications with embedded GIS functionality.
  • Command line applications utilizing ArcObjects functionality without a GUI to perform large processing tasks.
For more information on building stand-alone applications with ArcObjects, see Building stand-alone applications.

Developing Web applications with ArcGIS for Server

As an ArcGIS for Server developer, you have access to the Web Application Developer Framework (ADF) and, if you choose, ArcObjects on the server. While the Web ADF provides Web controls and convenience classes to work with multiple data sources, it might be necessary to work with functionality only available in ArcObjects via ArcGIS for Server. 
You can build a number of different types of applications using ArcGIS for Server. If you are working with the ArcGIS for Server ArcObjects API using the Microsoft .NET Framework, you can build server applications, such as Web applications, Web services, desktop client applications, and mobile applications. If you are using ArcGIS Engine, you can build desktop applications that work with ArcObjects both locally and remotely via ArcGIS for Server. If you are using ArcGIS for Desktop, you can extend ArcGIS for Desktop applications to include functionality that uses the GIS server.

While this SDK does not cover developing with the .NET ADF, it is intended to help server developers who are using ArcObjects in their applications. For information on developing Web applications with ArcGIS for Server, see Developing with ArcGIS for Server. For information on developing with the .NET ADF, see the .NET Web ADF SDK available with ArcGIS for Server.

References

The following are reference links to get you started:
  • Developing with ArcGIS—Introduction to the ArcObjects platform and its capabilities. 
  • ArcObjects namespaces—Application programming interface (API) help for every ArcObjects library.
  • Using geoprocessing—Introduction to the spatial analysis and visualization tools available through the ArcGIS geoprocessing framework.
  • Building stand-alone applications—Guide to your development options for stand-alone ArcObjects applications.
  • Developing with ArcGIS for Server—Guide to your development options for developing ArcGIS for Server Web applications.
  • Tips for using the ArcObjects .NET SDK—Tips and tricks that makes you more productive and successful when using the ArcObjects .NET SDK.