Interface SimpleFeature

  • All Superinterfaces:
    Attribute, ComplexAttribute, Feature, Property
    All Known Implementing Classes:
    DecoratingFeature, JDBCFeatureReader.ResultSetFeature, MongoDBObjectFeature, MongoFeature, PreGeneralizedSimpleFeature, SimpleFeatureImpl

    public interface SimpleFeature
    extends Feature
    An instance of SimpleFeatureType composed of fixed list values in a known order.

    The definition of a "simple feature" can be summed up as the following:

    • made up of only non-complex attributes, no associations
    • attributes are of multiplicity 1
    • attributes are ordered
    • attribute names are unqualified (namespaceURI == null)

    Attribute Access

    The order and multiplicity restrictions on simple feature make attribute values accessible via an index. For example consider the following shapefile entry:
      | GEOMETRY   | INT | STRING |
      | POINT(0 0) |  0  | "zero" |
      
    Accessing attributes via index would look like:
      SimpleFeature feature = ...;
    
      Geometry g = (Geometry) feature.getAttribute( 0 );
      Integer i = (Integer) feature.getAttribute( 1 );
      String s = (String) feature.getAttribute( 2 );
      
    One could also access by name:
      SimpleFeature feature = ...;
    
      Geometry g = (Geometry) feature.getAttribute( "GEOMETRY" );
      Integer i = (Integer) feature.getAttribute( "INT" );
      String s = (String) feature.getAttribute( "STRING" );
      

    Note: Attribute access via getAttribute() methods returns attribute values, and not the attributes themselves. For access to the actual attributes ComplexAttribute.getProperty(String) can be used.

    Since:
    2.5
    Author:
    Jody Garnett (LISAsoft), Justin Deoliveira (The Open Planning Project)
    See Also:
    SimpleFeatureType
    • Method Detail

      • getID

        String getID()
        Unique Identifier for the SimpleFeature

        This value is non-null and should be the same as getIdentifier().toString(). Please note that an ID may be provided

        Returns:
        A unique identifier for the attribute, or null if the attribute is non-identifiable.
      • getAttributes

        List<Object> getAttributes()
        Returns a list of the values of the attributes contained by the feature.

        This method is a convenience for:

         List values = new ArrayList();
         for ( Property p : getProperties(); ) {
           values.add( p.getValue() );
         }
        
         return values;
         
        Returns:
        List of attribute values for the feature.
      • setAttributes

        void setAttributes​(List<Object> values)
        Sets the values of the attributes contained by the feature.

        The values must be in the order of the attributes defined by the feature type.

        This method is a convenience for:

         int i = 0;
         for ( Property p : getProperties() ) {
           p.setValue( values.get( i++ ) );
         }
         
        Parameters:
        values - The attribute values to set.
      • setAttributes

        void setAttributes​(Object[] values)
        Sets the values of the attributes contained by the feature.

        The values must be in the order of the attributes defined by the feature type.

        This method is a convenience for:

         for ( Property p : getProperties() ) {
           p.setValue( values[i] );
         }
         
        Parameters:
        values - The attribute values to set.
      • getAttribute

        Object getAttribute​(String name)
        Gets an attribute value by name.

        This method is a convenience for:

         Property p = getProperty( name );
         return p.getValue();
         
        Parameters:
        name - The name of the attribute whose value to retrieve.
        Returns:
        The attribute value, or null if no such attribute exists with the specified name.
      • setAttribute

        void setAttribute​(String name,
                          Object value)
        Sets an attribute value by name.

        This method is a convenience for:

         Property p = getProperty( name );
         p.setValue(value);
         
        Parameters:
        name - The name of the attribute whose value to set.
        value - The new value of the attribute.
      • getAttribute

        Object getAttribute​(Name name)
        Gets an attribute value by name.

        This method is a convenience for:

         Property p = getProperty( name );
         return p.getValue();
         

        Since attribute names in simple features do not have a namespace uri this method is equivalent to calling getAttribute(name.getLocalPart()).

        Parameters:
        name - The name of the attribute whose value to retrieve.
        Returns:
        The attribute value, or null if no such attribute exists with the specified name.
      • setAttribute

        void setAttribute​(Name name,
                          Object value)
        Sets an attribute value by name.

        This method is a convenience for:

         Property p = getProperty( name );
         p.setValue(value);
         

        Since attribute names in simple features do not have a namespace uri this method is equivalent to calling setAttribute(name.getLocalPart(), value).

        Parameters:
        name - The name of the attribute whose value to set.
        value - The new value of the attribute.
      • getAttribute

        Object getAttribute​(int index)
                     throws IndexOutOfBoundsException
        Gets an attribute value by index.

        This method is a convenience for:

         Property p = ((List)getProperties()).get( i ) ;
         return p.getValue();
         
        Parameters:
        index - The index of the attribute whose value to get.
        Returns:
        The attribute value at the specified index.
        Throws:
        IndexOutOfBoundsException - If the specified index is out of bounds.
      • setAttribute

        void setAttribute​(int index,
                          Object value)
                   throws IndexOutOfBoundsException
        Sets an attribute value by index.

        This method is a convenience for:

         Property p = ((List)getProperties()).get( i ) ;
         p.setValue(value);
         
        Parameters:
        index - The index of the attribute whose value to set.
        value - The new value of the attribute.
        Throws:
        IndexOutOfBoundsException - If the specified index is out of bounds.
      • getAttributeCount

        int getAttributeCount()
        The number of attributes the feature is composed of.

        This is a convenience for:

           return getAttributes().size();
         
        Returns:
        Number of attributes of the feature.
      • getDefaultGeometry

        Object getDefaultGeometry()
        Returns the value of the default geometry of the feature.

        This method is convenience for:

         return getDefaultGeometryProperty().getValue();
         
        Returns:
        The default geometry, or null if no default geometry attribute exists.
      • setDefaultGeometry

        void setDefaultGeometry​(Object geometry)
        Sets the value of the default geometry for the feature.

        This method is convenience for:

         getDefaultGeometryProperty().setValue(geometry);
         
        Parameters:
        geometry - The new default geometry value.