Supported with:
- ArcView
- ArcEditor
- ArcInfo
Library dependencies: System, SystemUI, Geometry, Display, Server, Output, Geodatabase, GISClient, ArcWeb, DataSourcesFile, DataSourcesGDB, DataSourcesOleDB, DataSourcesRaster, DataSourcesNetCDF, GeoDatabaseDistributed, GeoDatabaseExtensions, Carto, NetworkAnalysis, Location, GeoAnalyst, Animation, Maplex, Geoprocessing, NetworkAnalyst, Schematic, SpatialAnalyst, 3DAnalyst, GlobeCore, Publisher, TrackingAnalyst, Framework, GeoDatabaseUI, DisplayUI, OutputUI, Catalog, CatalogUI, CartoUI, DataSourcesRasterUI, ArcCatalogUI, ArcCatalog, ArcMapUI, ArcMap, AnimationUI, Editor, GeoReferenceUIAdditional library information: Contents,
Object Model Diagram
The EditorExt library contains extensions to the ArcMap Editor and 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 has functionality, and associated UI, to support spatial adjustment and edgematching, managing topologies during editing, ArcPad integration, network tracing, and database loading.
Developers do not commonly extend this library; rather they create their own editor extensions in their own library.
The objects that implement this functionality are grouped into a number of library subsystems. These library subsystems are:SpatialAdjustment
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 GUI, 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 on the toolbar. The Set Adjust Data dialog determines if selected features or layers are adjusted. The adjustment method is then selected and finally the adjust command is run.
Programmatically the links are created via the DisplacementLinkElement coclass.
The Adjustment:IAdjustlayers interface determines which are the editable layers and if selected or all features from those layers will be adjusted.
The coordinates of the displacement links are then used as control points for the adjustment functions. Transformations include the AffineTransformationMethod, ProjectiveTransformationMethod, and ConformalTransformationMethod classes. For rubbersheeting the PiecewiseTransformationMethod coclass is used and for edgematching the EdgeSnapTransformationMethod. All these coclasses implement the ITransformationMethod interface; to establish a certain adjustment simply instantiate an object of the particular adjustment class via this interface. New adjustment methods can be created by implementing ITransformationMethod in your own class then registering it in the ‘ESRI Adjustment Transformation Methods’ component category.
Alternatively, if you have created displacement links programmatically or via the GUI, you may just set the transformation type through the Adjustment:IAdjust 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 within an edit session. The environment consists of the Attribute Transfer Mapping dialog 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 on a single source and single target feature. The AttributeTransfer coClass maintains the transfer environment, consisting of a fieldmap which contains the source/target field mapping. To perform an attribute transfer programmatically, first get reference to the AttributeTransfer class via the Editor::IAttributeTransfer interface.
[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
FieldMap is created via the
FieldMap coClass and 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
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 ITopologyExtension::Cache property.
ArcMap supports one or more geodatabase topologies and a map topology in a single session. Use ITopologyExtension::CurrentTopology method to retrieve or set the active topology inside 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 current topology's type the following method can be used:
[VB.NET]
Public Sub CheckCurrentTopologyType()
Dim topologtExtensionUID As UID
topologtExtensionUID = New UID
topologtExtensionUID.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 topologtExtensionUID = new UID();
topologtExtensionUID.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. The
TopologyExtension also supports an event sink
ITopologyExtensionEvents.
ITopologyExtensionEvents allows users to respond to different topological operations such as validating a topology, modifying the topology error selection, or when the current topology is changed.
ArcPad
The ArcPadExtension object represents the ArcPad extension to ArcMap - it is the main component and the focal point for all other objects in the ArcPad subsystem. Although the ArcPadExtension object is cocreateable, it is automatically created whenever a new ArcMap session starts; in fact, all ArcMap extension objects are automatically instantiated when ArcMap is first started.
The ArcPadExtension object is used to provide an environment for integration between ArcPad and ArcMap. Use the ArcPadExtension object to control the default settings of the Get Data For ArcPad wizard, to access the APTransLog object, or to Copyout, Checkout, or Checkin data from ArcPad programmatically.
TabletExtension
The TabletExt object represents the Tablet PC extension to ArcMap. Using the TabletExt object you can control the user interaction with digital ink inside of ArcMap. Although the TabletExt object is cocreateable, it is automatically created whenever a new ArcMap session starts; in fact, all ArcMap extension objects are automatically instantiated when ArcMap is first started.
The TabletExt object is used to set the options for working with Ink using 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 SDK.
To get a reference to the Tablet PC extension, use IApplication::FindExtensionByCLSID.
UtilityNetwork
The Utility Network Analysis extension allows you to analyze utility networks using the ArcMap user interface. 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. The extension also includes a number of ready-made trace tasks that you can use to analyze utility networks.
DataConverter
The DataConverter objects provide the ability to load data into existing feature classes or tables. Similar to the
FeatureDataConverter object found inside the
GeoDatabase library, the
ObjectLoader provides the functionality to load features inside 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.
Some 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.