Interface GeometryAttribute

All Superinterfaces:
Attribute, Property
All Known Implementing Classes:
GeometryAttributeImpl

public interface GeometryAttribute extends Attribute
An attribute which has a geometric value.

The type of the value of the attribute is an arbitrary object and is implementation dependent. Implementations of this interface may wish to type narrow Property.getValue() to be specific about the type geometry. For instance to return explicitly a JTS geometry.

Past a regular attribute, GeometryAttribute provides a method for obtaining the bounds of the underlying geometry, getBounds(). The setBounds(BoundingBox) method is used to explicitly set the bounds which can be useful in situations where the data source stores the bounds explicitly along with the geometry.

Author:
Jody Garnett, Refractions Research, Justin Deoliveira, The Open Planning Project
  • Method Details

    • getType

      GeometryType getType()
      Override and type narrow to GeometryType.
      Specified by:
      getType in interface Attribute
      Specified by:
      getType in interface Property
      Returns:
      The attribute type.
      See Also:
    • getDescriptor

      GeometryDescriptor getDescriptor()
      Override and type narrow to GeometryDescriptor.
      Specified by:
      getDescriptor in interface Attribute
      Specified by:
      getDescriptor in interface Property
      Returns:
      The geometry descriptor, may be null if this is a top-level value
      See Also:
    • getBounds

      BoundingBox getBounds()
      The bounds of the attribute.

      This value should be derived unless explicitly set via setBounds(BoundingBox).

      In the case that the underlying geometry is null, this method should return an empty bounds as opposed to returning null.

      Returns:
      The bounds of the underlying geometry, possibly empty.
    • setBounds

      void setBounds(BoundingBox bounds)
      Sets the bounds of the geometry.

      This method should be used when the bounds is pre-computed and there is no need to derive it from scratch. This is mostly only relevant to data sources which store the bounds along with the geometry.

      Setting the bounds to null is allowed and will force the bounds to be derived manually on the next call to getBounds().

      Parameters:
      bounds - The bounds of the attribute.