org.geotools.data
Interface FeatureReader<T extends org.opengis.feature.type.FeatureType,F extends org.opengis.feature.Feature>
- All Known Subinterfaces:
- DelegatingFeatureReader<T,F>
- All Known Implementing Classes:
- ArcSDEFeatureReader, CollectionFeatureReader, CombiningCachingFeatureReader, DefaultFeatureReader, DelegateFeatureReader, DiffFeatureReader, EmptyFeatureReader, FCBuffer, FIDFeatureReader, FilteringFeatureReader, ForceCoordinateSystemFeatureReader, GridCacheFeatureReader, JDBCClosingFeatureReader, JDBCFeatureReader, JDBCFeatureReader, JDBCInsertFeatureWriter, JDBCUpdateFeatureWriter, JDBCUpdateInsertFeatureWriter, MapServerWFSStrategy.MapServerWFSFeatureReader, MaxFeatureReader, PreGeneralizedFeatureReader, PropertyFeatureReader, ReprojectFeatureReader, ReTypeFeatureReader, VPFFeatureReader, VPFFileFeatureReader, WFSFeatureReader
public interface FeatureReader<T extends org.opengis.feature.type.FeatureType,F extends org.opengis.feature.Feature>
The low-level interface for reading Features. Will use the underlying
AttributeReader and the given FeatureType to create new Features.
Typical use is as follows:
FeatureReader reader = null;
try{
for( reader = data.getFeatureReader( filter ); reader.hasNext(); ){
f = reader.next();
...
}
}
catch (IOException problem){
...
}
finally {
if( reader != null ){
try {
reader.close();
}
catch( IOException eek){
}
}
}
Questions and Suggestions
- Q: Should FeatureReader provide access to the AttributeReaders it uses?
A:
No, it looks like we will make a lazy Feature in order to cleanly
allow for lazy parsing of attribtues.
- Q:FeatureReader has a close method, but no open method?
A: This is by design allowing FeatureReader to encapsulate its InputStream
or Rowset). Please assume that FeatureReaders are a single use proposition.
- Q: All that exception handling is a pain!
A:
Yes it is, we have constructed semi-normal Java iterators to cut down on the
pain. But you *do* still have to close 'em - this is IO after all.
- Q: Can we include skip(int) - SeanG
A:
The order of the contents is not "known" or predicatable to the end user, so
skip( int ) would be useless. For random access (a higher order
of abstraction then FeatureReader) please look at FeatureList.
- Version:
- $Id: FeatureReader.java 30642 2008-06-12 17:52:06Z acuster $
- Author:
- Ian Schneider, Sean Geoghegan, Defence Science and Technology Organisation.
Method Summary |
void |
close()
Release the underlying resources associated with this stream. |
T |
getFeatureType()
Return the FeatureType this reader has been configured to create. |
boolean |
hasNext()
Query whether this FeatureReader has another Feature. |
F |
next()
Reads the next Feature in the FeatureReader. |
getFeatureType
T getFeatureType()
- Return the FeatureType this reader has been configured to create.
- Returns:
- the FeatureType of the Features this FeatureReader will create.
next
F next()
throws java.io.IOException,
java.lang.IllegalArgumentException,
java.util.NoSuchElementException
- Reads the next Feature in the FeatureReader.
- Returns:
- The next feature in the reader.
- Throws:
java.io.IOException
- If an error occurs reading the Feature.
IllegalAttributeException
- If the attributes read do not comply
with the FeatureType.
java.util.NoSuchElementException
- If there are no more Features in the
Reader.
java.lang.IllegalArgumentException
hasNext
boolean hasNext()
throws java.io.IOException
- Query whether this FeatureReader has another Feature.
- Returns:
- True if there are more Features to be read. In other words, true
if calls to next would return a feature rather than throwing an
exception.
- Throws:
java.io.IOException
- If an error occurs determining if there are more
Features.
close
void close()
throws java.io.IOException
- Release the underlying resources associated with this stream.
- Throws:
java.io.IOException
- DOCUMENT ME!
Copyright © 1996-2010 Geotools. All Rights Reserved.