- ArcGIS for Desktop Basic
- ArcGIS for Desktop Standard
- ArcGIS for Desktop Advanced
Additional library information: Contents, Object Model Diagram
The EditorExt library contains extensions to the ArcMap object editor as well as components dependant on the editor. The functionality supported by this library is diverse, with the commonality being its reliance on the object editor. The library's functionality and associated user interface (UI) support spatial adjustment and edgematching, managing topologies during editing, network tracing, and database loading.
Developers do not commonly extend this library; rather, they create their own editor extensions in their own library.
See the following sections for more information about this namespace:
- Spatial adjustment
- Topology extension
- Tablet extension
- Utility network analysis extension
- Data converters
Spatial adjustment
The spatial adjustment functions provide the ability to transform, rubber sheet, edgematch, and transfer attributes within your data. All these functions occur within the current edit session and, if used via a graphical user interface (GUI), are enclosed within an edit operation. The Spatial Adjustment toolbar provides the tools and menus to access these functions and environments, all of which are available programmatically.
Transformations, rubber sheeting, and edgematching
These functions use displacement links to determine the from and to locations of adjusted data. To perform an adjustment in the GUI, the links are first created via the New Displacement Link tool. The Set Adjust Data dialog box is where you determine if selected features or layers are adjusted. When you select the adjustment method, the Adjust command is run.
Programmatically, the links are created via the DisplacementLinkElement coclass. The IAdjustLayers interface determines the editable layers and if all features, or only those selected, from those layers will be adjusted.
The coordinates of the displacement links are then used as control points for the adjustment functions. Transformation classes include the following:
For rubber sheeting, use the PiecewiseTransformationMethod coclass; for edgematching, the EdgeSnapTransformationMethod. These coclasses implement the ITransformationMethod interface. To establish a certain adjustment, instantiate an object of the particular adjustment class via this interface. A new adjustment method can be created by implementing ITransformationMethod in your own class, then registering it in the ESRI Adjustment Transformation Methods component category.
Alternatively, if you've created displacement links programmatically or via the GUI, you can set the transformation type through the IAdjustment interface and call the ArcMap Adjust command (esriEditorExt.TransformCommand) to perform the adjustment.
Attribute transfer
The attribute transfer tool in spatial adjustment allows you to transfer attributes between features in an edit session. The environment consists of the Attribute Transfer Mapping dialog box, which determines which fields will be transferred between source and target features. The attribute transfer tool is then used to perform the transfer by clicking a single source and a single target feature. The AttributeTransfer coclass maintains the transfer environment, consisting of a field map that contains the source/target field mapping. To perform an attribute transfer programmatically, first get reference to the AttributeTransfer class via the Editor.IAttributeTransfer interface as shown in the following code example:
[VB.NET] Public Function getAttributeTransfer() As IAttributeTransfer
Dim attributeTransferType As IAttributeTransferType
attributeTransferType=m_application.FindExtensionByName("ESRI Object Editor")
Dim attributeTransfer As IAttributeTransfer
attributeTransfer=attributeTransferType.AttributeTransfer
Return attributeTransfer
End Function
[C#] public IAttributeTransfer getAttributeTransfer()
{
IAttributeTransferType attributeTransferType=m_application.FindExtensionByName
("ESRI Object Editor")as IAttributeTransferType;
//Get IAttributeTransfer from AttributeTransferType.
IAttributeTransfer attributeTransfer=attributeTransferType.AttributeTransfer;
return attributeTransfer;
}
The field map is created via the FieldMap coclass then set on the AttributeTransfer object. The transfer is performed via the IAttributeTransfer.Transfer method (which the tool calls) by passing in an IFeature or IRow object for the source and target features.
Topology extension
The TopologyExtension object represents the main component for working with topology in an edit session. The TopologyExtension object provides functionality for editing features participating in a geodatabase topology or a map topology. From the ITopologyExtension interface, you can work with topology errors and access the TopologyGraph object via the ITopology.Cache property.
ArcMap supports one or more geodatabase topologies and a map topology in a single session. Use the ITopologyExtension.CurrentTopology property to retrieve or set the active topology in ArcMap. Only topologies that reside in the editor's workspace can be set as the current topology. The type of topology returned by ITopologyExtension.CurrentTopology determines the functionality available via the TopologyExtension object. Before using some methods on ITopologyExtension, the type of topology returned should be checked.
To determine the current topology's type, the method shown in the following code example can be used:
[VB.NET] Public Sub CheckCurrentTopologyType()
Dim topologyExtensionUID As UID
topologyExtensionUID=New UID
topologyExtensionUID.Value="esriEditorExt.TopologyExtension"
Dim topologyExtension As ITopologyExtension
topologyExtension=m_application.FindExtensionByCLSID(topologtExtensionUID)
If TypeOf topologyExtension.CurrentTopology Is ITopology Then
Dim currentTopology As ITopology
currentTopology=topologyExtension.CurrentTopology
Else
If TypeOf topologyExtension.CurrentTopology Is IMapTopology Then
Dim mapTopology As IMapTopology
mapTopology=topologyExtension.CurrentTopology
End If
End If
End Sub
[C#] public void CheckCurrentTopologyType()
{
UID topologyExtensionUID=new UID();
topologyExtensionUID.Value="esriEditorExt.TopologyExtension";
ITopologyExtension topologyExtension=m_application.FindExtensionByCLSID
(topologtExtensionUID)as ITopologyExtension;
if (topologyExtension.CurrentTopology is ITopology)
{
//Do something with the geodatabase topology.
ITopology currentTopology=topologyExtension.CurrentTopology as ITopology;
}
else if (topologyExtension.CurrentTopology is IMapTopology)
{
//Do something with the map topology.
IMapTopology mapTopology=topologyExtension.CurrentTopology as IMapTopology;
}
}
If ITopologyExtension.CurrentTopology returns a geodatabase topology, you can manage the selection of topology errors inside the topology. TopologyExtension also supports an event sink, ITopologyExtensionEvents. ITopologyExtensionEvents allows you to respond to different topological operations such as validating a topology, modifying the topology error selection, or when the current topology is changed.
Tablet extension
The TabletExt object represents the Tablet PC extension to ArcMap. Using the TabletExt object, you can control the interaction with digital ink in ArcMap. Although the TabletExt object is cocreateable, it is automatically created when a new ArcMap session starts.
The TabletExt object is used to set the options for working with the Ink tool on the Tablet toolbar, starting and stopping ink collection, and working with an ink sketch. You can work with an ink sketch either as an ESRI polyline geometry object or as digital ink using the Ink software development kit (SDK).
To get a reference to the Tablet PC extension, use IApplication.FindExtensionByCLSID.
Utility network analysis extension
The UtilityNetworkAnalysisExt object allows you to analyze utility networks using the ArcMap UI. As a developer, you can use these objects to get parameters for custom trace tasks based on user input from the Utility Network Analyst toolbar. This extension also includes a number of ready-made trace tasks you can use to analyze utility networks.
Data converters
The data converter objects provide the ability to load data into existing feature classes or tables. Similar to the FeatureDataConverter object in the Geodatabase library, the ObjectLoader provides the functionality to load features in an edit session. The IObjectLoader.LoadObjects method is used to execute the data loading operation. The LoadObjects method accepts a number of parameters to control the manner in which features are loaded, such as whether attribute rules or network connectivity should be checked, or if features should be snapped during the load.
Other objects and interfaces in the Geodatabase library are useful in support of ObjectLoader and FeatureDataConverter and perform the following functions:
- Check for potential problems in your field names with IFieldChecker.
- Inspect data that is rejected during the conversion process with IEnumInvalidObject.
- Keep the end user informed with IFeatureProgress.