ArcObjects Library Reference (GeoDatabase)  

IFeature Interface

Provides access to members that return and set properties of a feature.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.


Read-only property Class The Object Class for the row.
Method Delete Deletes the row.
Read-only property Extent The extent of the feature.
Read-only property FeatureType The type of the feature.
Read-only property Fields The fields Collection for this row buffer.
Read-only property HasOID Indicates if the row has an OID.
Read-only property OID The OID for the row.
Read/write property Shape A reference to the default shape for the feature.
Read-only property ShapeCopy A cloned copy of the default shape for the feature.
Method Store Stores the row.
Read-only property Table The Table for the row.
Read/write property Value The value of the field with the specified index.

Inherited Interfaces

Interfaces Description
IObject Provides access to the class the row belongs to.
IRow Provides access to members that return information about the row, the table the row belongs to and storing and deleting the row.
IRowBuffer Provides access to members used for getting and modifying a rows values and for getting the fields in the row.

CoClasses that implement IFeature

CoClasses and Classes Description
AnnotationFeature (esriCarto) An Esri annotation feature.
ComplexEdgeFeature Esri Complex edge geometric network feature object.
ComplexJunctionFeature Esri Complex junction geometric network feature.
CoverageAnnotationFeature Esri Coverage Annotation Feature.
DimensionFeature (esriCarto) Esri Dimension Feature class.
Feature Esri Feature.
GeocodedFeature (esriLocation) A feature created by a locator.
NALocationFeature (esriNetworkAnalyst) A network location which can be used like a feature or a row.
NALocationRangesFeature (esriNetworkAnalyst) A container of NALocationRanges which can be used like a feature or a row.
NATraversalResultElement (esriNetworkAnalyst) An individual element in a traversal result.
RasterCatalogItem Raster Catalog Feature Class.
RelQueryRow A row defined by a join of the datasets in a RelQueryTable.
SchematicInMemoryFeatureLink (esriSchematic) Schematic in memory feature link object.
SchematicInMemoryFeatureNode (esriSchematic) Schematic in memory feature node object.
SchematicInMemoryFeatureNodeOnLink (esriSchematic) Schematic in memory feature node on link object.
SchematicInMemoryFeatureSubLink (esriSchematic) Schematic in memory feature sublink object.
SchematicLink (esriSchematic) A schematic link object.
SchematicNode (esriSchematic) A schematic node object.
SchematicNodeOnLink (esriSchematic) A schematic node-on-link object.
SchematicSubLink (esriSchematic) A schematic sublink object.
SimpleEdgeFeature Esri Geometric network simple edge feature object.
SimpleJunctionFeature Esri Geometric network simple junction feature object.
TemporalFeature (esriTrackingAnalyst) Controls properties of the Temporal Feature object.
TopologyErrorFeature Esri Topology Error Feature object.


Features are spatial Objects. They are contained in a feature class in the same way that a row is contained in a table, and an object is contained in an object class. A feature has an associated shape, the type of which is defined by the feature class. The possible shape objects are Point, Multipoint, Multipatch, Polyline, and Polygon - these are all objects in the Geometry library. For more details, see the IGeometryDef interface.

One thing to note is that all features still have the same core geometry types of point, multipoint, polyline, polygon and multipatch; an example of this is the annotation feature, whose geometry type is polygon - this represents the envelope of the text element.

The IFeature interface extends the IObject and IRow interfaces, and as such, the documentation for those interfaces applies to this interface. The additional functionality relates to the features' shapes, accessed and set through the Shape property. This can be much more convenient than the alternative of using the Value property, since you donít have to determine the index of the shape field. The Shape property is the main link in ArcObjects between the geometry and geodatabase object models.

The ShapeCopy property is a cloned copy of the featureís Shape. When modifying the geometry of a feature or a set of features, use the ShapeCopy property to obtain a copy of the feature's geometry, perform the modification on the geometries, then apply the modifications by setting the geometry to the Shape property.

There are several Feature subclasses which can also be accessed using the IFeature interface. These include annotation, dimension, and network features.

See Also

IFeatureClass.LengthField Property | IFeatureClass.CreateFeatureBuffer Method | IFeatureClass.AreaField Property | IFeatureClass.ShapeFieldName Property | IFeatureClass.CreateFeature Method

.NET Snippets

Add Hyperlink | Get First Feature from Point Search in GeoFeatureLayer | Create Animation from Path | Zoom to Selected Globe Features | Create Graphic Buffers around Selected Features | Flip Line Direction

.NET Samples

Convert part to feature command (Code Files: ConvertPart) | Curve conversion add-in (Code Files: CurveConversionCmd CurveConversionDockWin) | Cut polygons without selection edit task (Code Files: CutPolygonsWithoutSelectionEditTask) | Editing using a custom form (Code Files: EditorForm) | Custom reshape polyline edit task (Code Files: ReshapePolylineEditTask) | Points along line construction tool (Code Files: PointsAlongLineForm) | ViperPin tool (Code Files: ViperPinForm) | Tabbed feature inspector (Code Files: TabbedInspector) | Implementing an XML builder external component (Code Files: XMLDocImpl) | Executing geoprocessing tools in the background (Code Files: RunGPForm) | Extending the replication synchronization process (Code Files: RasterSyncWorkspaceExtension) | Using HookActions in custom commands (Code Files: hookActionsCallout hookActionsFlash hookActionsGraphic hookActionsLabel hookActionsPan hookActionsZoom) | Implementing extended criteria for some predefined schematic rules (Code Files: CollapseRelatedElts ExpandLinks PlantOnCableDiameter PlantWithoutEquipment) | Calculate area geoprocessing function tool (Code Files: CalculateAreaFunction) | Implementing associations between GIS features and schematic features (Code Files: ElementFeatureAssociation) | RSS weather GraphicTracker (Code Files: RSSWeather) | Move a graphic along a path in ArcMap (Code Files: cmdMoveGraphicAlongPath) | ArcGIS Network Analyst extension barrier location editor (Code Files: EditorForm NABarrierLocationEditor) | Buffer snap agent (Code Files: BufferSnap) | StreetMap routing (Code Files: RoutingForm) | RSS weather layer (Code Files: AddWeatherItemTool RSSWeatherLayerClass) | Multivariate renderer (Code Files: MultivariateRenderer) | Create camera flyby from path (Code Files: frmCameraPath) | Play back tracking data (Code Files: PlaybackDataButton) | Add-in custom editor extension (Code Files: ValidateFeaturesExtension) | Tabbed feature inspector (Code Files: ObjectInspector) | Time Series Graph tool add-in (Code Files: TimeSeriesGraph)

.NET Related Topics

Updating features | 3DAnalyst | Building editor extensions using add-ins | Creating features | Creating features in the editor | DataSourcesRaster | Defining a renderer for a layer | Executing spatial queries | Geodatabase | Geodatabase API best practices | How to access source features referenced by a network dataset | How to add point IDs to a polyline | How to animate the camera along a path (line feature) in globe | How to create a union of several polygons | How to generate directions | How to load a raster dataset to the raster field in a feature class | How to load data into a network analysis problem | How to merge conflicting geometries during a reconcile | How to zoom to selected features in globe | Invalidating the display | Limiting query results and output | Querying geodatabase tables | Releasing COM references | Updating attributes of existing features | Using feature templates | Validating features | Working with query cursors