org.geotools.data
Interface FeatureSource<T extends org.opengis.feature.type.FeatureType,F extends org.opengis.feature.Feature>

All Known Subinterfaces:
FeatureCache, FeatureLocking<T,F>, FeatureStore<T,F>, VersioningFeatureLocking, VersioningFeatureSource, VersioningFeatureStore, XmlFeatureSource
All Known Implementing Classes:
AbstractFeatureCache, AbstractFeatureLocking, AbstractFeatureSource, AbstractFeatureSource2, AbstractFeatureStore, ArcSdeFeatureSource, ArcSdeFeatureStore, CachingFeatureSource, ContentFeatureSource, ContentFeatureStore, DefaultView, DirectoryFeatureLocking, DirectoryFeatureStore, GridFeatureCache, JDBCFeatureLocking, JDBCFeatureSource, JDBCFeatureSource, JDBCFeatureStore, JDBCFeatureStore, OracleFeatureLocking, OracleFeatureSource, OracleFeatureStore, PostgisFeatureLocking, PostgisFeatureStore, PreGeneralizedFeatureSource, PropertyFeatureSource, SampleDataAccessFeatureSource, ShapefileFeatureLocking, ShapefileFeatureStore, StreamingGridFeatureCache, VersionedPostgisFeatureStore, WFSFeatureSource, WFSFeatureSource, WFSFeatureStore, WrappingPostgisFeatureSource

public interface FeatureSource<T extends org.opengis.feature.type.FeatureType,F extends org.opengis.feature.Feature>

Highlevel API for Features from a specific location.

Individual Shapefiles, databases tables , etc. are referenced through this interface. Compare and constrast with DataStore.

Differences from DataStore:

Version:
$Id: FeatureSource.java 30642 2008-06-12 17:52:06Z acuster $
Author:
Jody Garnett, Ray Gallagher, Rob Hranac, TOPP, Chris Holmes, TOPP

Method Summary
 void addFeatureListener(FeatureListener listener)
          Adds a listener to the list that's notified each time a change to the FeatureStore occurs.
 ReferencedEnvelope getBounds()
          Gets the bounding box of this datasource.
 ReferencedEnvelope getBounds(Query query)
          Gets the bounding box of the features that would be returned by this query.
 int getCount(Query query)
          Gets the number of the features that would be returned by this query.
 DataAccess<T,F> getDataStore()
          Access to the DataStore implementing this FeatureStore.
 FeatureCollection<T,F> getFeatures()
          Loads all features from the datasource into the return FeatureResults.
 FeatureCollection<T,F> getFeatures(org.opengis.filter.Filter filter)
          Loads features from the datasource into the returned FeatureResults, based on the passed filter.
 FeatureCollection<T,F> getFeatures(Query query)
          Loads features from the datasource into the returned FeatureResults, based on the passed query.
 ResourceInfo getInfo()
          Information describing the contents of this resoruce.
 org.opengis.feature.type.Name getName()
          Returns the qualified name for the Features this FeatureSource serves.
 QueryCapabilities getQueryCapabilities()
          Returns and indication of what query capabilities this FeatureSource supports natively.
 T getSchema()
          Retrieves the featureType that features extracted from this datasource will be created with.
 java.util.Set<java.awt.RenderingHints.Key> getSupportedHints()
          Returns the set of hints this FeatureSource is able to support.
 void removeFeatureListener(FeatureListener listener)
          Removes a listener from the list that's notified each time a change to the FeatureStore occurs.
 

Method Detail

getName

org.opengis.feature.type.Name getName()
Returns the qualified name for the Features this FeatureSource serves.

Note this is different from getSchema().getType().getName() (that is, the feature type name), this name specifies the AttributeDescriptor name for the Features served by this source. So, FeatureSoruce.getName() == FeatureSource.getFeatures().next().getAttributeDescriptor().getName().

Though it's a common practice when dealing with SimpleFeatureType and SimpleFeature to assume they're equal. There's no conflict (as per the dynamic typing system the org.opengis.feature package defines) in a Feature and its type sharing the same name, as well as in a GML schema an element declaration and a type definition may be named the same. Yet, the distinction becomes important as we get rid of that assumption and thus allow to reuse a type definition for different FeatureSoruces, decoupling the descriptor (homologous to the Feature element declaration in a GML schema) from its type definition.

So, even if implementors are allowed to delegate to getSchema().getName() if they want to call the fatures and their type the same, client code asking a DataAccess.getFeatureSource(Name) shall use this name to request for a FeatureSource, rather than the type name, as used in pre 2.5 versions of GeoTools. For example, if we have a FeatureSource named Roads and its type is named Roads_Type, the DataAccess shall be queried through Roads, not Roads_Type.

Returns:
the name of the AttributeDescriptor for the Features served by this FeatureSource
Since:
2.5

getInfo

ResourceInfo getInfo()
Information describing the contents of this resoruce.

Please note that for FeatureContent:


getDataStore

DataAccess<T,F> getDataStore()
Access to the DataStore implementing this FeatureStore.

Returns:
DataStore implementing this FeatureStore

getQueryCapabilities

QueryCapabilities getQueryCapabilities()
Returns and indication of what query capabilities this FeatureSource supports natively.

Returns:
a QueryCapabilities object containing the native query capabilities.
Since:
2.5

addFeatureListener

void addFeatureListener(FeatureListener listener)
Adds a listener to the list that's notified each time a change to the FeatureStore occurs.

Parameters:
listener - FeatureListener

removeFeatureListener

void removeFeatureListener(FeatureListener listener)
Removes a listener from the list that's notified each time a change to the FeatureStore occurs.

Parameters:
listener - FeatureListener

getFeatures

FeatureCollection<T,F> getFeatures(Query query)
                                                                                                                    throws java.io.IOException
Loads features from the datasource into the returned FeatureResults, based on the passed query.

Parameters:
query - a datasource query object. It encapsulates requested information, such as typeName, maxFeatures and filter.
Returns:
Collection The collection to put the features into.
Throws:
java.io.IOException - For all data source errors.
See Also:
Query

getFeatures

FeatureCollection<T,F> getFeatures(org.opengis.filter.Filter filter)
                                                                                                                    throws java.io.IOException
Loads features from the datasource into the returned FeatureResults, based on the passed filter.

Parameters:
filter - An OpenGIS filter; specifies which features to retrieve. null is not allowed, use Filter.INCLUDE instead.
Returns:
Collection The collection to put the features into.
Throws:
java.io.IOException - For all data source errors.

getFeatures

FeatureCollection<T,F> getFeatures()
                                                                                                                    throws java.io.IOException
Loads all features from the datasource into the return FeatureResults.

Filter.INCLUDE can also be used to get all features. Calling this function is equivalent to using Query.ALL

Returns:
Collection The collection to put the features into.
Throws:
java.io.IOException - For all data source errors.

getSchema

T getSchema()
Retrieves the featureType that features extracted from this datasource will be created with.

The schema returned is the LCD supported by all available Features. In the common case of shapfiles and database table this schema will match that of every feature available. In the degenerate GML case this will simply reflect the gml:AbstractFeatureType.

Returns:
the schema of features created by this datasource.

getBounds

ReferencedEnvelope getBounds()
                             throws java.io.IOException
Gets the bounding box of this datasource.

With getBounds(Query) this becomes a convenience method for getBounds(Query.ALL), that is the bounds for all features contained here.

If getBounds() returns null due to expense consider using getFeatures().getBounds() as a an alternative.

Returns:
The bounding box of the datasource or null if unknown and too expensive for the method to calculate.
Throws:
java.io.IOException - if there are errors getting the bounding box.

getBounds

ReferencedEnvelope getBounds(Query query)
                             throws java.io.IOException
Gets the bounding box of the features that would be returned by this query.

To retrieve the bounds of the DataSource please use getBounds( Query.ALL ).

This method is needed if we are to stream features to a gml out, since a FeatureCollection must have a boundedBy element.

If getBounds(Query) returns null due to expense consider using getFeatures(Query).getBounds() as a an alternative.

Parameters:
query - Contains the Filter, and optionally MaxFeatures and StartIndex to find the bounds for.
Returns:
The bounding box of the datasource or null if unknown and too expensive for the method to calculate or any errors occur.
Throws:
java.io.IOException - DOCUMENT ME!

getCount

int getCount(Query query)
             throws java.io.IOException
Gets the number of the features that would be returned by this query.

If getBounds(Query) returns -1 due to expense consider using getFeatures(Query).getCount() as a an alternative.

This method should take into account the Query's maxFeatures and startIndex, if present, in order to consistently return the number of features the query would return.

Parameters:
query - Contains the Filter, and optionally MaxFeatures and StartIndex to find the count for.
Returns:
The number of Features provided by the Query or -1 if count is too expensive to calculate or any errors or occur.
Throws:
java.io.IOException - if there are errors getting the count

getSupportedHints

java.util.Set<java.awt.RenderingHints.Key> getSupportedHints()
Returns the set of hints this FeatureSource is able to support.

Hints are to be specified in the Query, for each data access where they may be required.
Depending on the actual value provide by the user, the FeatureSource may decide not to honor the hint.

Returns:
a set of RenderingHints#Key objects (eventually empty, never null).


Copyright © 1996-2010 Geotools. All Rights Reserved.