org.geotools.feature
Interface SimpleFeature

All Superinterfaces:
Attribute, ComplexAttribute, Feature, Property, SimpleFeature

Deprecated. use SimpleFeature

public interface SimpleFeature
extends Feature

A simple feature is one that does not have any nested attributes, and that has no multiplicity for each attribute. In non xml speak this means that the attributes returned are guaranteed to be the Objects you would expect - not Lists as is the case when Features are non-simple. This is thus a constraining extension - it essentially allows you to make a few more assumptions about the nature of the Feature you are getting back.

The notion of a Simple Feature is drawn from the OGC's Simple Features for SQL specification - where a simple feature represents a single row in a database table. This extends beyond databases though, to flat files, for example. A database does not necessarily only return simple features - indeed by relying on foreign keys much more complex structures can be created. But at the time of the creation of this class all GeoTools datastores return Simple Features - they just were not explicitly called that. Making explicit that they are Simple should hopefully encourage more complex Features to be returned.

The assumptions one can make with Simple Features are as follows:

To figure out if a Feature is a SimpleFeature one may call instanceof. For a number of Features returned from a DataStore it will save much energy if instanceof is called on the FeatureType, to check if it is a SimpleFeatureType. And in the future we should have FeatureCollections that know their types.

Since:
2.1
Author:
David Zwiers, Refractions, Chris Holmes, TOPP
Module:
modules/library/legacy (gt-legacy.jar)
TODO:
REVISIT: I am not sure that I like getAttribute returning the object straight away. It might be better to have a getFirstAttribute() method in Feature.java, and move people to get used to calling that, or else to expect a List (which in a SimpleFeature would always only contain one Object). This would seem to make the api a bit cleaner in my mind.

Nested Class Summary
 
Nested classes/interfaces inherited from interface Feature
Feature.NULL
 
Method Summary
 Object getAttribute(int index)
          Deprecated. Gets an attribute by the given zero-based index.
 Object getAttribute(String xPath)
          Deprecated. This is the same as the parent declaration, except that when the instance is not specified for the xPath, [0] will be added as there is only ever one Attribute value for an AttributeType
 FeatureType getFeatureType()
          Deprecated. Gets a reference to the schema for this feature.
 void setAttribute(int position, Object val)
          Deprecated. Sets an attribute by the given zero-based index.
 void setAttributes(Object[] attributes)
          Deprecated. Sets all attributes for this feature, passed as a complex object array.
 
Methods inherited from interface Feature
getAttributes, getBounds, getDefaultGeometry, getID, getNumberOfAttributes, setAttribute, setDefaultGeometry
 
Methods inherited from interface SimpleFeature
getAttribute, getAttributeCount, getAttributes, getType, setAttribute, setAttributes, setDefaultGeometry
 
Methods inherited from interface Feature
getDefaultGeometryProperty, getIdentifier, setDefaultGeometryProperty
 
Methods inherited from interface ComplexAttribute
getProperties, getProperties, getProperties, getProperty, getProperty, getValue, setValue, validate
 
Methods inherited from interface Attribute
getDescriptor
 
Methods inherited from interface Property
getName, getUserData, isNillable, setValue
 

Method Detail

getFeatureType

FeatureType getFeatureType()
Deprecated. 
Gets a reference to the schema for this feature. This method should always return DefaultFeatureType Object. This will be explicitly posible in Java 1.5 (dz)

Specified by:
getFeatureType in interface SimpleFeature
Returns:
A reference to this simple feature's schema.

setAttributes

void setAttributes(Object[] attributes)
                   throws IllegalAttributeException
Deprecated. 
Sets all attributes for this feature, passed as a complex object array. Note that this array must conform to the internal schema for this feature, or it will throw an exception. Checking this is, of course, left to the feature to do internally. Well behaved features should always fully check the passed attributes against thier schema before adding them. Since this is a SimpleFeature, the number of attributes will be exactly the same as the number of attribute types. Attribute values will be paired with attribute types based on array indexes.

Specified by:
setAttributes in interface SimpleFeature
Parameters:
attributes - All feature attributes.
Throws:
IllegalAttributeException - Passed attributes do not match schema.

getAttribute

Object getAttribute(String xPath)
Deprecated. 
This is the same as the parent declaration, except that when the instance is not specified for the xPath, [0] will be added as there is only ever one Attribute value for an AttributeType

Specified by:
getAttribute in interface SimpleFeature
Parameters:
xPath - XPath representation of attribute location.
Returns:
A copy of the requested attribute, null if the requested xpath is not found, or NULL_ATTRIBUTE.
See Also:
Feature.getAttribute(String)

getAttribute

Object getAttribute(int index)
Deprecated. 
Gets an attribute by the given zero-based index. Unlike the parent interface, this index is guaranteed to match the index of AttributeType in the FeatureType.

Specified by:
getAttribute in interface SimpleFeature
Parameters:
index - The requested index. Must be 0 <= idx < getNumberOfAttributes().
Returns:
A copy of the requested attribute, or NULL_ATTRIBUTE.

setAttribute

void setAttribute(int position,
                  Object val)
                  throws IllegalAttributeException,
                         IndexOutOfBoundsException
Deprecated. 
Sets an attribute by the given zero-based index. Unlike the parent interface, this index is guaranteed to match the index of AttributeType in the FeatureType.

Specified by:
setAttribute in interface SimpleFeature
Parameters:
position - The requested index. Must be 0 <= idx < getNumberOfAttributes()
val - An object representing the attribute being set
Throws:
IllegalAttributeException - if the passed in val does not validate against the AttributeType at that position.
ArrayIndexOutOfBoundsException - if an invalid position is given
IndexOutOfBoundsException


Copyright © 1996-2010 Geotools. All Rights Reserved.