Package org.geotools.api.geometry
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 ofGeographicBoundingBox
with those ofBounds
. It provides convenience methods to assist in accessing the formal properties of this object. Those methods (for examplegetMinX()
) 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 Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description boolean
contains(double x, double y)
Returnstrue
if the provided location is contained by this bounding box.boolean
contains(BoundingBox bounds)
Returnstrue
if the provided bounds are contained by this bounding box.boolean
contains(Position location)
Returnstrue
if the provided location is contained by this bounding box.double
getHeight()
double
getMaxX()
Provides the maximum ordinate along the first axis.double
getMaxY()
Provides the maximum ordinate along the second axis.double
getMinX()
Provides the minimum ordinate along the first axis.double
getMinY()
Provides the minimum ordinate along the second axis.double
getWidth()
void
include(double x, double y)
Includes the provided coordinates, expanding as necessary.void
include(BoundingBox bounds)
Includes the provided bounding box, expanding as necesary.boolean
intersects(BoundingBox bounds)
Returnstrue
if the interior of this bounds intersects the interior of the provided bounds.boolean
isEmpty()
Returnstrue
if spans along all dimension are zero or negative.void
setBounds(BoundingBox bounds)
Sets this bounding box to be the same as the specified box.BoundingBox
toBounds(CoordinateReferenceSystem targetCRS)
Transforms this box to the specified CRS and returns a new bounding box for the transformed shape.-
Methods inherited from interface Bounds
getCoordinateReferenceSystem, getDimension, getLowerCorner, getMaximum, getMedian, getMinimum, getSpan, getUpperCorner
-
-
-
-
Method Detail
-
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 togetMinimum(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 togetMaximum(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 togetMinimum(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 togetMaximum(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 togetLength(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 togetLength(1)
. There is no guarantee that this axis is oriented toward North.- Returns:
- The span along the second axis.
-
isEmpty
boolean isEmpty()
Returnstrue
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 necesary.- 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)
Returnstrue
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)
Returnstrue
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)
Returnstrue
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)
Returnstrue
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
BoundingBox toBounds(CoordinateReferenceSystem targetCRS) throws TransformException
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();
"EPSG:4326"
has (latitude, longitude) axis order, thus the inversion of X and Y in the above code.Sophesticated applications will typically provide more efficient way to perform similar transformations in their context. For example Canvas store precomputed objective to display transforms.
- 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.
-
-