# Package com.mapinfo.midev.feature

The Feature package consists of a series of interfaces, classes and enumerations that allow users to work with features at their geometry and attribute data levels.

See: Description

Interface Summary
IAttributeDefinition: Describes an attribute of a feature.
IAttributeValue: Defines typed access to get and set an attribute value.
IFeature: Represents a simple feature.
IFeatureAttributeDefinition: Describes an attribute of a feature that contains values that are IFeature instances.
IFeatureCollection: Represents a collection of simple features.
IFeatureCollectionIterator: An iterator over `IFeatureCollection` instances contained within an `IMultiFeatureCollection`.
IFeatureCollectionMetadata: Contains information that describes a feature collection.
IFeatureIterator: An iterator over `IFeatures`.
IFeatureMetadata: Contains information that describes an `IFeature`.
IGeometryAttributeDefinition: Describes an attribute of a feature that contains feature geometry values.
IKey: An abstraction of a primary key.
IMultiFeatureCollection: Represents a collection of `IFeatureCollection`s.
IMultiFeatureCollectionMetadata: Metadata that describes an `IMultiFeatureCollection`.

Class Summary
AttributeType: Enumeration class for the data types supported by the Feature and Data Access models.
Key: A 'canonical' `IKey` implementation that represents a key as a string.
KeyType: Enumeration class for the types of keys that may be defined for a feature collection.
PrimaryKeyMetadata: Metadata that describes the primary key of an `IDataSourceTable` or `IFeature`.

## Package com.mapinfo.midev.feature Description

The Feature package consists of a series of interfaces, classes and enumerations that allow users to work with features at their geometry and attribute data levels.

The interfaces within the Feature package define the general composition of `IFeature` objects, while the concrete classes provide a way to directly manage their internal data values. Enumerations are supplied that define the data types supported within such `IFeature` attribute data, along with the "key types" that are supported. In general, if a user will be working with `IFeature` objects, then they will be working with the members of this package.

An `IFeature` object represents one single record within a target data source table. An `IFeature` object typically contains a geometry that defines its shape as well as a collection of attribute data values. Attribute data values can be any of the "data types" commonly used in computer programming that are supported by the data source table. For example: integers, doubles, boolean values, time, and date values are all examples of data types that are contained within `IFeature` attribute data.

Each record within the target data source table (accessed via the `ITable` or `IDataSourceTable` object) is loaded into an `IFeature` object.