Class ReferencedEnvelope
- All Implemented Interfaces:
Serializable
,Comparable
,BoundingBox
,Bounds
- Direct Known Subclasses:
ReferencedEnvelope3D
- Since:
- 2.2
- Author:
- Jody Garnett, Martin Desruisseaux, Simone Giannecchini
- See Also:
-
org.geotools.geometry.Envelope2D
GeneralBounds
GeographicBoundingBox
- Serialized Form
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CoordinateReferenceSystem
The coordinate reference system, ornull
.static ReferencedEnvelope
A ReferencedEnvelope containing "everything" -
Constructor Summary
ConstructorsConstructorDescriptionCreates a null envelope with a null coordinate reference system.ReferencedEnvelope
(double x1, double x2, double y1, double y2, CoordinateReferenceSystem crs) Creates an envelope for a region defined by maximum and minimum values.ReferencedEnvelope
(Rectangle2D rectangle, CoordinateReferenceSystem crs) Creates an envelope for a Java2D rectangle.Creates a new envelope from an existing bounding box.ReferencedEnvelope
(Bounds bounds) Creates a new bounds from an existing OGC bounds.Creates a null envelope with the specified coordinate reference system.ReferencedEnvelope
(ReferencedEnvelope envelope) Creates a new envelope from an existing envelope.ReferencedEnvelope
(Envelope envelope, CoordinateReferenceSystem crs) Creates a new envelope from an existing JTS envelope. -
Method Summary
Modifier and TypeMethodDescriptionboolean
boundsEquals
(Bounds that, int xDim, int yDim, double eps) Returnstrue
ifthis
envelope bounds is equals tothat
envelope bounds in two specified dimensions.boolean
boundsEquals2D
(Rectangle2D other, double eps) Compare the bounds of this envelope with those of another.boolean
boundsEquals2D
(Bounds other, double eps) Compare the bounds of this envelope with those of another.protected void
Convenience method for checking coordinate reference system validity.boolean
contains
(BoundingBox bbox) Check if provided bbox is contained by this ReferencedEnvelope.boolean
Returnstrue
if the provided location is contained by this bounding box.boolean
contains
(ReferencedEnvelope bounds) Check if provided bounds are contained by this ReferencedEnvelope.static ReferencedEnvelope
create
(Rectangle2D rectangle, CoordinateReferenceSystem crs) Utility method to create a ReferencedEnvelope from a Java2D Rectangle class, supporting empty rectangles.static ReferencedEnvelope
Utility method to create a ReferencedEnvelope from an opengis Envelope class, supporting 2d as well as 3d envelopes (returning the right class).static ReferencedEnvelope
create
(Bounds env, CoordinateReferenceSystem crs) Utility method to create a ReferencedEnvelope from providedBounds
.static ReferencedEnvelope
Factory method to create the correct ReferencedEnvelope implementation for the provided CoordinateReferenceSystem.static ReferencedEnvelope
create
(ReferencedEnvelope original) Factory method to create the correct ReferencedEnvelope.protected void
Make sure that the specified bounding box uses the same CRS than this one.protected void
ensureCompatibleReferenceSystem
(Position location) Make sure that the specified location uses the same CRS as this one.static ReferencedEnvelope
envelope
(Envelope env, CoordinateReferenceSystem crs) Utility method to create a ReferencedEnvelope a plain JTS Envelope class, supporting 2d as well as 3d envelopes (returning the right class).boolean
Compares the specified object with this envelope for equality.void
void
Expand to include the provided DirectPositionvoid
expandToInclude
(Envelope other) Include the provided envelope, expanding as necessary.double
Returns the X coordinate of the center of the rectangle.double
Returns the Y coordinate of the center of the rectangle.Returns the coordinate reference system associated with this envelope.int
Returns the number of dimensions.A coordinate position consisting of all the minimal ordinates for each dimension for all points within theEnvelope
.double
getMaximum
(int dimension) Returns the maximal ordinate along the specified dimension.double
getMedian
(int dimension) Returns the center ordinate along the specified dimension.double
getMinimum
(int dimension) Returns the minimal ordinate along the specified dimension.double
getSpan
(int dimension) Returns the envelope length along the specified dimension.A coordinate position consisting of all the maximal ordinates for each dimension for all points within theEnvelope
.int
hashCode()
Returns a hash value for this envelope.void
include
(double x, double y) Include the provided coordinates, expanding as necessary.void
include
(BoundingBox bbox) Include the provided bounding box, expanding as necessary.void
init
(BoundingBox bounds) Sets this envelope to the specified bounding box.intersection
(Envelope env) Check if this bounding box intersects the provided bounds.boolean
intersects
(BoundingBox bbox) Check if this bounding box intersects the provided bounds.boolean
isEmpty()
Returnstrue
if lengths along all dimension are zero.static ReferencedEnvelope
rect
(double x, double y, double width, double height) Construct 2D WGS84 referenced envelope using rectangle conventions using width and height.static ReferencedEnvelope
rect
(double x, double y, double width, double height, CoordinateReferenceSystem crs) Construct referenced envelope using rectangle conventions using width and height.static ReferencedEnvelope
rect
(Rectangle2D rectangle) Construct 2D WGS84 referenced envelope using rectangle conventions using width and height.static ReferencedEnvelope
rect
(Rectangle2D rectangle, CoordinateReferenceSystem crs) Construct referenced envelope using rectangle conventions using width and height.static ReferencedEnvelope
Cast to a ReferencedEnvelope (used to ensure that an Envelope if a ReferencedEnvelope).static ReferencedEnvelope
Utility method to ensure that an BoundingBox in a ReferencedEnvelope.static ReferencedEnvelope
Cast to a ReferencedEnvelope (used to ensure that an Envelope is a ReferencedEnvelope).void
setBounds
(BoundingBox bbox) Initialize the bounding box with another bounding box.void
Set the coordinate reference system in which the coordinate are given.void
setFrame
(double x, double y, double width, double height) Rectangle style x,y,width,height bounds definitionvoid
setFrameFromCenter
(Point2D center, Point2D corner) Initialize the bounding box using a line from the center to a corner.void
setFrameFromDiagonal
(Point2D lowerLeft, Point2D upperRight) Initialize the bounding box using a line from the lower left to upper right corners.toBounds
(CoordinateReferenceSystem targetCRS) Returns a new bounding box which contains the transformed shape of this bounding box.toString()
Returns a string representation of this envelope.transform
(CoordinateReferenceSystem targetCRS, boolean lenient) Transforms the referenced envelope to the specified coordinate reference system.transform
(CoordinateReferenceSystem targetCRS, boolean lenient, int numPointsForTransformation) Transforms the referenced envelope to the specified coordinate reference system using the specified amount of points.Methods inherited from class Envelope
centre, compareTo, contains, contains, contains, containsProperly, copy, covers, covers, covers, disjoint, distance, expandBy, expandBy, expandToInclude, expandToInclude, getArea, getDiameter, getHeight, getMaxX, getMaxY, getMinX, getMinY, getWidth, init, init, init, init, init, intersects, intersects, intersects, intersects, intersects, intersects, isNull, maxExtent, minExtent, overlaps, overlaps, overlaps, setToNull, translate
-
Field Details
-
EVERYTHING
A ReferencedEnvelope containing "everything" -
crs
The coordinate reference system, ornull
.
-
-
Constructor Details
-
ReferencedEnvelope
public ReferencedEnvelope()Creates a null envelope with a null coordinate reference system. -
ReferencedEnvelope
Creates a null envelope with the specified coordinate reference system.- Parameters:
crs
- The coordinate reference system.- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.
-
ReferencedEnvelope
public ReferencedEnvelope(double x1, double x2, double y1, double y2, CoordinateReferenceSystem crs) throws MismatchedDimensionException Creates an envelope for a region defined by maximum and minimum values.- Parameters:
x1
- The first x-value.x2
- The second x-value.y1
- The first y-value.y2
- The second y-value.crs
- The coordinate reference system.- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.
-
ReferencedEnvelope
public ReferencedEnvelope(Rectangle2D rectangle, CoordinateReferenceSystem crs) throws MismatchedDimensionException Creates an envelope for a Java2D rectangle.NOTE: if the rectangle is empty, the resulting ReferencedEnvelope will not be. In case this is needed use
ReferencedEnvelope.create(rectangle, crs)
- Parameters:
rectangle
- The rectangle.crs
- The coordinate reference system.- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.- Since:
- 2.4
-
ReferencedEnvelope
Creates a new envelope from an existing envelope.- Parameters:
envelope
- The envelope to initialize from- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.- Since:
- 2.3
-
ReferencedEnvelope
Creates a new envelope from an existing bounding box.NOTE: if the bounding box is empty, the resulting ReferencedEnvelope will not be. In case this is needed use
ReferencedEnvelope.create(bbox, bbox.getCoordinateReferenceSystem())
- Parameters:
bbox
- The bounding box to initialize from.- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.- Since:
- 2.4
-
ReferencedEnvelope
Creates a new bounds from an existing OGC bounds.NOTE: if the bounds is empty, the resulting ReferencedEnvelope will not be. In case this is needed use
ReferencedEnvelope.create(bounds, bounds.getCoordinateReferenceSystem())
- Parameters:
bounds
- The bounds to initialize from.- Throws:
MismatchedDimensionException
- if the CRS dimension is not valid.- Since:
- 2.4
-
ReferencedEnvelope
public ReferencedEnvelope(Envelope envelope, CoordinateReferenceSystem crs) throws MismatchedDimensionException Creates a new envelope from an existing JTS envelope.- Parameters:
envelope
- The envelope to initialize from.crs
- The coordinate reference system.- Throws:
MismatchedDimensionExceptionif
- the CRS dimension is not valid.MismatchedDimensionException
-
-
Method Details
-
init
Sets this envelope to the specified bounding box. -
checkCoordinateReferenceSystemDimension
Convenience method for checking coordinate reference system validity.- Throws:
IllegalArgumentException
- if the CRS dimension is not valid.MismatchedDimensionException
-
ensureCompatibleReferenceSystem
protected void ensureCompatibleReferenceSystem(BoundingBox bbox) throws MismatchedReferenceSystemException Make sure that the specified bounding box uses the same CRS than this one.- Parameters:
bbox
- The other bounding box to test for compatibility.- Throws:
MismatchedReferenceSystemException
- if the CRS are incompatible.
-
ensureCompatibleReferenceSystem
Make sure that the specified location uses the same CRS as this one.- Throws:
MismatchedReferenceSystemException
- if the CRS are incompatible.
-
getCoordinateReferenceSystem
Returns the coordinate reference system associated with this envelope.- Specified by:
getCoordinateReferenceSystem
in interfaceBounds
- Returns:
- The envelope CRS, or
null
if unknown.
-
setCoordinateReferenceSystem
Set the coordinate reference system in which the coordinate are given.- Parameters:
crs
- The new coordinate reference system, ornull
.
-
getDimension
public int getDimension()Returns the number of dimensions.- Specified by:
getDimension
in interfaceBounds
- Returns:
- The dimensionality of this envelope.
-
getMinimum
public double getMinimum(int dimension) Returns the minimal ordinate along the specified dimension.- Specified by:
getMinimum
in interfaceBounds
- Parameters:
dimension
- The dimension for which to obtain the ordinate value.- Returns:
- The minimal ordinate at the given dimension.
- See Also:
-
getMaximum
public double getMaximum(int dimension) Returns the maximal ordinate along the specified dimension.- Specified by:
getMaximum
in interfaceBounds
- Parameters:
dimension
- The dimension for which to obtain the ordinate value.- Returns:
- The maximal ordinate at the given dimension.
- See Also:
-
getMedian
public double getMedian(int dimension) Returns the center ordinate along the specified dimension. -
getSpan
public double getSpan(int dimension) Returns the envelope length along the specified dimension. This length is equals to the maximum ordinate minus the minimal ordinate. -
getLowerCorner
A coordinate position consisting of all the minimal ordinates for each dimension for all points within theEnvelope
.- Specified by:
getLowerCorner
in interfaceBounds
- Returns:
- The lower corner.
-
getUpperCorner
A coordinate position consisting of all the maximal ordinates for each dimension for all points within theEnvelope
.- Specified by:
getUpperCorner
in interfaceBounds
- Returns:
- The upper corner.
-
isEmpty
public boolean isEmpty()Returnstrue
if lengths along all dimension are zero.- Specified by:
isEmpty
in interfaceBoundingBox
- Returns:
true
if this bounding box is empty.- Since:
- 2.4
-
contains
Returnstrue
if the provided location is contained by this bounding box.- Specified by:
contains
in interfaceBoundingBox
- Parameters:
pos
- The direct position to test for inclusion.- Returns:
true
if the given position is inside this bounds.- Since:
- 2.4
-
contains
Check if provided bounds are contained by this ReferencedEnvelope.- Parameters:
bounds
-- Returns:
true
if bounds are contained by this ReferencedEnvelope
-
contains
Check if provided bbox is contained by this ReferencedEnvelope.- Specified by:
contains
in interfaceBoundingBox
- Parameters:
bbox
-- Returns:
true
if bbox is contained by this ReferencedEnvelope- Since:
- 2.4
-
intersects
Check if this bounding box intersects the provided bounds.- Specified by:
intersects
in interfaceBoundingBox
- Parameters:
bbox
- The bounds to test for intersection.- Returns:
true
if the two bounds intersect.- Since:
- 2.4
-
intersection
Check if this bounding box intersects the provided bounds.- Overrides:
intersection
in classEnvelope
-
include
Include the provided bounding box, expanding as necessary.- Specified by:
include
in interfaceBoundingBox
- Parameters:
bbox
- The bounds to add to this geographic bounding box.- Since:
- 2.4
-
expandToInclude
Expand to include the provided DirectPosition -
expandToInclude
-
getCenterX
public double getCenterX()Returns the X coordinate of the center of the rectangle.Method compatibility with
XRectangle2D.getCenterX()
-
getCenterY
public double getCenterY()Returns the Y coordinate of the center of the rectangle.Method compatibility with
XRectangle2D.getCenterY()
-
expandToInclude
Include the provided envelope, expanding as necessary.- Overrides:
expandToInclude
in classEnvelope
-
include
public void include(double x, double y) Include the provided coordinates, expanding as necessary.- Specified by:
include
in interfaceBoundingBox
- Parameters:
x
- The first ordinate value.y
- The second ordinate value.- Since:
- 2.4
-
setBounds
Initialize the bounding box with another bounding box.- Specified by:
setBounds
in interfaceBoundingBox
- Parameters:
bbox
- The new bounds.- Since:
- 2.4
-
setFrameFromCenter
Initialize the bounding box using a line from the center to a corner.- Parameters:
center
- location of the new bounding boxcorner
- location of a corner establishing the extent of the bounding box
-
setFrameFromDiagonal
Initialize the bounding box using a line from the lower left to upper right corners.- Parameters:
lowerLeft
- Lower left extent of the new bounding boxupperRight
- Upper right extent of the new bounding box
-
setFrame
public void setFrame(double x, double y, double width, double height) Rectangle style x,y,width,height bounds definition -
toBounds
Returns a new bounding box which contains the transformed shape of this bounding box. This is a convenience method that delegate its work to thetransform
method.- Specified by:
toBounds
in interfaceBoundingBox
- 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.- Since:
- 2.4
-
transform
public ReferencedEnvelope transform(CoordinateReferenceSystem targetCRS, boolean lenient) throws TransformException, FactoryException Transforms the referenced envelope to the specified coordinate reference system.This method can handle the case where the envelope contains the North or South pole, or when it cross the ±180� longitude.
- Parameters:
targetCRS
- The target coordinate reference system.lenient
-true
if datum shift should be applied even if there is insuffisient information. Otherwise (iffalse
), an exception is thrown in such case.- Returns:
- The transformed envelope.
- Throws:
FactoryException
- if the math transform can't be determined.TransformException
- if at least one coordinate can't be transformed.- See Also:
-
transform
public ReferencedEnvelope transform(CoordinateReferenceSystem targetCRS, boolean lenient, int numPointsForTransformation) throws TransformException, FactoryException Transforms the referenced envelope to the specified coordinate reference system using the specified amount of points.This method can handle the case where the envelope contains the North or South pole, or when it cross the ±180� longitude.
- Parameters:
targetCRS
- The target coordinate reference system.lenient
-true
if datum shift should be applied even if there is insuffisient information. Otherwise (iffalse
), an exception is thrown in such case.numPointsForTransformation
- The number of points to use for sampling the envelope.- Returns:
- The transformed envelope.
- Throws:
FactoryException
- if the math transform can't be determined.TransformException
- if at least one coordinate can't be transformed.- Since:
- 2.3
- See Also:
-
hashCode
public int hashCode()Returns a hash value for this envelope. This value need not remain consistent between different implementations of the same class. -
equals
Compares the specified object with this envelope for equality. -
boundsEquals2D
Compare the bounds of this envelope with those of another.Note: in this test:
- the coordinate reference systems of the envelopes are not examined
- only the first two dimensions of the envelopes are compared
- it is assumed that each dimension equates to the same axis for both envelopes
- Parameters:
other
- other envelopeeps
- a small tolerance factor (e.g. 1.0e-6d) which will be scaled relative to this envlope's width and height- Returns:
- true if all bounding coordinates are equal within the set tolerance; false otherwise
-
boundsEquals2D
Compare the bounds of this envelope with those of another.Note: in this test:
- the coordinate reference systems of the envelopes are not examined
- only the first two dimensions of the envelopes are compared
- it is assumed that each dimension equates to the same axis for both envelopes
- Parameters:
other
- other envelopeeps
- a small tolerance factor (e.g. 1.0e-6d) which will be scaled relative to this envlope's width and height- Returns:
- true if all bounding coordinates are equal within the set tolerance; false otherwise
-
boundsEquals
Returnstrue
ifthis
envelope bounds is equals tothat
envelope bounds in two specified dimensions. The coordinate reference system is not compared, since it doesn't need to have the same number of dimensions.- Parameters:
that
- The envelope to compare to.xDim
- The dimension ofthat
envelope to compare to the x dimension ofthis
envelope.yDim
- The dimension ofthat
envelope to compare to the y dimension ofthis
envelope.eps
- A small tolerance number for floating point number comparaisons. This value will be scaled according this envelope width and height.- Returns:
true
if the envelope bounds are the same (up to the specified tolerance level) in the specified dimensions, orfalse
otherwise.
-
toString
Returns a string representation of this envelope. The default implementation is okay for occasional formatting (for example for debugging purpose). -
create
Factory method to create the correct ReferencedEnvelope.- Parameters:
original
- ReferencedEnvelope being duplicated- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if it is 3d
-
create
Factory method to create the correct ReferencedEnvelope implementation for the provided CoordinateReferenceSystem.- Parameters:
crs
- CoordinateReferenceSystem used to select ReferencedEnvelope implementation- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if it is 3d
-
create
Utility method to create a ReferencedEnvelope from an opengis Envelope class, supporting 2d as well as 3d envelopes (returning the right class).- Parameters:
bounds
- The opgenis Envelope object- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if it is 3d,
results in a null/an empty envelope, if input envelope was a null/an empty envelope
-
create
Utility method to create a ReferencedEnvelope from providedBounds
.Uses
crs
to determine ifReferencedEnvelope
orReferencedEnvelope3D
is required.- Parameters:
env
- Bounds representing extentcrs
- CRS- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if crs is 3d,
results in a null/an empty envelope, if input envelope was a null/an empty envelope.
-
rect
Construct 2D WGS84 referenced envelope using rectangle conventions using width and height.- Parameters:
rectangle
- Rectangle defining extend of Referenced Envelope.
-
rect
Construct referenced envelope using rectangle conventions using width and height.- Parameters:
rectangle
- Rectangle defining extend of Referenced Envelope.
-
rect
Construct 2D WGS84 referenced envelope using rectangle conventions using width and height.Migration method, previously
new Envelope2D(crs,x,y,w,h)
.- Parameters:
x
-y
-width
-height
-
-
rect
public static ReferencedEnvelope rect(double x, double y, double width, double height, CoordinateReferenceSystem crs) Construct referenced envelope using rectangle conventions using width and height.Migration method, previously
new Envelope2D(crs,x,y,w,h)
.- Parameters:
x
-y
-width
-height
-- Returns:
- ReferencedEnvelope WGS84
-
envelope
Utility method to create a ReferencedEnvelope a plain JTS Envelope class, supporting 2d as well as 3d envelopes (returning the right class).- Parameters:
env
- The JTS Envelope object- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if it is 3d,
results in a null/an empty envelope, if input envelope was a null/an empty envelope
-
reference
Cast to a ReferencedEnvelope (used to ensure that an Envelope is a ReferencedEnvelope).This method first checks if e is an instanceof
ReferencedEnvelope
, if it is, itself is returned. If notnew ReferencedEnvelpe(e,null)
is returned.If e is null, null is returned.
- Parameters:
e
- The envelope. Can be null.- Returns:
- A ReferencedEnvelope using the specified envelope, or null if the envelope was null.
-
reference
Utility method to ensure that an BoundingBox in a ReferencedEnvelope.This method first checks if e is an instanceof
ReferencedEnvelope
, if it is, itself is returned. If notnew ReferencedEnvelpe(e)
is returned.- Parameters:
e
- The envelope.
-
reference
Cast to a ReferencedEnvelope (used to ensure that an Envelope if a ReferencedEnvelope). Supporting 2d as well as 3d envelopes (returning the right class).- Parameters:
env
- The opgenis Envelope object- Returns:
- ReferencedEnvelope, ReferencedEnvelope3D if it is 3d,
results in a null/an empty envelope, if input envelope was a null/an empty envelope (by JTS Envelope definition: getMaximum(0) < getMinimum(0))
-
create
Utility method to create a ReferencedEnvelope from a Java2D Rectangle class, supporting empty rectangles.- Parameters:
rectangle
- The Java2D Rectangle object- Returns:
- ReferencedEnvelope,
results in a null/an empty envelope, if input rectangle was empty
-