Interface BoundingBox

All Superinterfaces:
Bounds
All Known Subinterfaces:
BoundingBox3D
All Known Implementing Classes:
Envelope2DArchived, ReferencedEnvelope, ReferencedEnvelope3D

public interface BoundingBox extends Bounds
Represents a two-dimensional envelope. This interface combines the ideas of GeographicBoundingBox with those of Bounds. It provides convenience methods to assist in accessing the formal properties of this object. Those methods (for example getMinX()) match common usage in existing libraries like Java2D.

This object contains no additional information beyond that provided by Bounds.

Since:
GeoAPI 2.1
Author:
Jody Garnett (Refractions Research), Martin Desruisseaux (Geomatys)
  • Method Details

    • setBounds

      void setBounds(BoundingBox bounds)
      Sets this bounding box to be the same as the specified box.
      Parameters:
      bounds - The new bounds.
    • getMinX

      double getMinX()
      Provides the minimum ordinate along the first axis. This is equivalent to getMinimum(0). There is no guarantee that this axis is oriented toward East.
      Returns:
      The minimum ordinate along the first axis.
    • getMaxX

      double getMaxX()
      Provides the maximum ordinate along the first axis. This is equivalent to getMaximum(0). There is no guarantee that this axis is oriented toward East.
      Returns:
      The maximum ordinate along the first axis.
    • getMinY

      double getMinY()
      Provides the minimum ordinate along the second axis. This is equivalent to getMinimum(1). There is no guarantee that this axis is oriented toward North.
      Returns:
      The minimum ordinate along the second axis.
    • getMaxY

      double getMaxY()
      Provides the maximum ordinate along the second axis. This is equivalent to getMaximum(1). There is no guarantee that this axis is oriented toward North.
      Returns:
      The maximum ordinate along the second axis.
    • getWidth

      double getWidth()
      Provides the difference between minimum and maximum ordinate along the first axis. This is equivalent to getSpan(0). There is no guarantee that this axis is oriented toward East.
      Returns:
      The span along the first axis.
    • getHeight

      double getHeight()
      Provides the difference between minimum and maximum ordinate along the second axis. This is equivalent to getSpan(1). There is no guarantee that this axis is oriented toward North.
      Returns:
      The span along the second axis.
    • isEmpty

      boolean isEmpty()
      Returns true if spans along all dimension are zero or negative.
      Returns:
      true if this bounding box is empty.
    • include

      void include(BoundingBox bounds)
      Includes the provided bounding box, expanding as necessary.
      Parameters:
      bounds - The bounds to add to this geographic bounding box.
    • include

      void include(double x, double y)
      Includes the provided coordinates, expanding as necessary. Note that there is no guarantee that the (x, x) values are oriented toward (East, North), since it depends on the envelope CRS.
      Parameters:
      x - The first ordinate value.
      y - The second ordinate value.
    • intersects

      boolean intersects(BoundingBox bounds)
      Returns true if the interior of this bounds intersects the interior of the provided bounds.
      Parameters:
      bounds - The bounds to test for intersection.
      Returns:
      true if the two bounds intersect.
    • contains

      boolean contains(BoundingBox bounds)
      Returns true if the provided bounds are contained by this bounding box.
      Parameters:
      bounds - The bounds to test for inclusion.
      Returns:
      true if the given bounds is inside this bounds.
    • contains

      boolean contains(Position location)
      Returns true if the provided location is contained by this bounding box.
      Parameters:
      location - The direct position to test for inclusion.
      Returns:
      true if the given position is inside this bounds.
    • contains

      boolean contains(double x, double y)
      Returns true if the provided location is contained by this bounding box. Note that there is no guarantee that the (x, x) values are oriented toward (East, North), since it depends on the envelope CRS.
      Parameters:
      x - The first ordinate value.
      y - The second ordinate value.
      Returns:
      true if the given position is inside this bounds.
    • toBounds

      Transforms this box to the specified CRS and returns a new bounding box for the transformed shape. This method provides a convenient (while not always efficient) way to get minimum and maximum ordinate values toward some specific axis directions, typically East and North.

      Example: if box is a bounding box using a geographic CRS with WGS84 datum, then one can write:

       GeographicCRS targetCRS   = crsAuthorityFactory.createGeographicCRS("EPSG:4326");
       BoundingBox   targetBox   = box.toBounds(targetCRS);
       double        minEasting  = targetBox.getMinY();
       double        minNorthing = targetBox.getMinX();
       
      Be aware that "EPSG:4326" has (latitude, longitude) axis order, thus the inversion of X and Y in the above code.

      Sophisticated applications will typically provide more efficient way to perform similar transformations in their context. This method is provided for convenience in simple cases.

      Parameters:
      targetCRS - The target CRS for the bounding box to be returned.
      Returns:
      A new bounding box wich includes the shape of this box transformed to the specified target CRS.
      Throws:
      TransformException - if no transformation path has been found from this box CRS to the specified target CRS, or if the transformation failed for an other reason.