public class Envelope2D extends Rectangle2D.Double implements BoundingBox, Envelope, Cloneable
Rectangle2D
. This implementation is provided for
interoperability between Java2D and GeoAPI.
Note: This class inherits x and y fields. But despite their names, they don't need to be oriented toward East and North respectively. The (x,y) axis can have any orientation and should be understood as "ordinate 0" and "ordinate 1" values instead. This is not specific to this implementation; in Java2D too, the visual axis orientation depend on the affine transform in the graphics context.
GeneralEnvelope
,
ReferencedEnvelope
,
GeographicBoundingBox
,
Serialized FormRectangle2D.Double, Rectangle2D.Float
height, width, x, y
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
Constructor and Description |
---|
Envelope2D()
Constructs an initially empty envelope with no CRS.
|
Envelope2D(CoordinateReferenceSystem crs)
Constructs an initially empty envelope with the defined CRS.
|
Envelope2D(CoordinateReferenceSystem crs,
double x,
double y,
double width,
double height)
Constructs two-dimensional envelope defined by the specified coordinates.
|
Envelope2D(CoordinateReferenceSystem crs,
Rectangle2D rect)
Constructs two-dimensional envelope defined by an other
Rectangle2D . |
Envelope2D(DirectPosition2D minDP,
DirectPosition2D maxDP)
Constructs two-dimensional envelope defined by the specified coordinates.
|
Envelope2D(Envelope envelope)
Constructs two-dimensional envelope defined by an other
Envelope . |
Modifier and Type | Method and Description |
---|---|
boolean |
boundsEquals(Envelope that,
int xDim,
int yDim,
double eps)
Returns
true if this envelope bounds is equals to that envelope
bounds in two specified dimensions. |
boolean |
contains(BoundingBox bounds)
Returns
true if the provided bounds are contained by this bounding box. |
boolean |
contains(DirectPosition location)
Returns
true if the provided location is contained by this bounding box. |
boolean |
equals(Object object)
Compares the specified object with this envelope for equality.
|
double |
getCenter(int dimension)
Deprecated.
Renamed as
getMedian(int) . |
CoordinateReferenceSystem |
getCoordinateReferenceSystem()
Returns the coordinate reference system in which the coordinates are given.
|
int |
getDimension()
Returns the number of dimensions.
|
double |
getLength(int dimension)
Deprecated.
Renamed as
getSpan(int) . |
DirectPosition |
getLowerCorner()
A coordinate position consisting of all the minimal ordinates for each dimension for all
points within the
Envelope . |
double |
getMaximum(int dimension)
Returns the maximal ordinate along the specified dimension.
|
double |
getMedian(int dimension)
Returns the median ordinate along the specified dimension.
|
double |
getMinimum(int dimension)
Returns the minimal ordinate along the specified dimension.
|
double |
getSpan(int dimension)
Returns the envelope span (typically width or height) along the specified dimension.
|
DirectPosition |
getUpperCorner()
A coordinate position consisting of all the maximal ordinates for each dimension for all
points within the
Envelope . |
int |
hashCode()
Returns a hash value for this envelope.
|
void |
include(BoundingBox bounds)
Includes the provided bounding box, expanding as necesary.
|
void |
include(double x,
double y)
Includes the provided coordinates, expanding as necessary.
|
boolean |
intersects(BoundingBox bounds)
Returns
true if the interior of this bounds intersects the interior of the provided
bounds. |
void |
setBounds(BoundingBox bounds)
Sets this bounding box to be the same as the specified box.
|
void |
setCoordinateReferenceSystem(CoordinateReferenceSystem crs)
Set the coordinate reference system in which the coordinate are given.
|
BoundingBox |
toBounds(CoordinateReferenceSystem targetCRS)
Transforms this box to the specified CRS and returns a new bounding box for the transformed
shape.
|
String |
toString()
Returns a string representation of this envelope.
|
createIntersection, createUnion, getBounds2D, getHeight, getWidth, getX, getY, isEmpty, outcode, setRect, setRect
add, add, add, contains, contains, getPathIterator, getPathIterator, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, union
clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
public Envelope2D()
Unlike a normal Envelope2D we set the width and height to -1 so we can tell the difference between:
public Envelope2D(CoordinateReferenceSystem crs)
crs
- The coordinate reference system, or null
.public Envelope2D(Envelope envelope)
Envelope
.envelope
- The envelope to copy.public Envelope2D(CoordinateReferenceSystem crs, Rectangle2D rect)
Rectangle2D
.crs
- The coordinate reference system, or null
.rect
- The rectangle to copy.public Envelope2D(CoordinateReferenceSystem crs, double x, double y, double width, double height)
crs
- The coordinate reference system, or null
.x
- The x minimal value.y
- The y minimal value.width
- The envelope width.height
- The envelope height.public Envelope2D(DirectPosition2D minDP, DirectPosition2D maxDP) throws MismatchedReferenceSystemException
The minDP
and maxDP
arguments usually contains the minimal and maximal
ordinate values respectively, but this is not mandatory. The ordinates will be rearanged as
needed.
minDP
- The fist position.maxDP
- The second position.MismatchedReferenceSystemException
- if the two positions don't use the same CRS.public final CoordinateReferenceSystem getCoordinateReferenceSystem()
getCoordinateReferenceSystem
in interface Envelope
null
.public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs)
crs
- The new coordinate reference system, or null
.public final int getDimension()
getDimension
in interface Envelope
public DirectPosition getLowerCorner()
Envelope
.getLowerCorner
in interface Envelope
public DirectPosition getUpperCorner()
Envelope
.getUpperCorner
in interface Envelope
public final double getMinimum(int dimension) throws IndexOutOfBoundsException
getMinimum
in interface Envelope
dimension
- The dimension to query.IndexOutOfBoundsException
- If the given index is out of bounds.RectangularShape.getMinX()
,
RectangularShape.getMinY()
public final double getMaximum(int dimension) throws IndexOutOfBoundsException
getMaximum
in interface Envelope
dimension
- The dimension to query.IndexOutOfBoundsException
- If the given index is out of bounds.RectangularShape.getMaxX()
,
RectangularShape.getMaxY()
@Deprecated public final double getCenter(int dimension)
getMedian(int)
.dimension
- The dimension to query.public final double getMedian(int dimension) throws IndexOutOfBoundsException
(getMaximum(dimension) -
getMinimum(dimension)) / 2
.getMedian
in interface Envelope
dimension
- The dimension to query.IndexOutOfBoundsException
- If the given index is out of bounds.RectangularShape.getCenterX()
,
RectangularShape.getCenterY()
@Deprecated public final double getLength(int dimension)
getSpan(int)
.dimension
- The dimension to query.public final double getSpan(int dimension) throws IndexOutOfBoundsException
getMaximum(dimension) - getMinimum(dimension)
.getSpan
in interface Envelope
dimension
- The dimension to query.IndexOutOfBoundsException
- If the given index is out of bounds.RectangularShape.getWidth()
,
RectangularShape.getHeight()
public int hashCode()
hashCode
in class Rectangle2D
public boolean equals(Object object)
equals
in class Rectangle2D
object
- The object to compare with this envelope.true
if the given object is equals to this envelope.public boolean boundsEquals(Envelope that, int xDim, int yDim, double eps)
true
if this
envelope bounds is equals to that
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.that
- The envelope to compare to.xDim
- The dimension of that
envelope to compare to the x dimension
of this
envelope.yDim
- The dimension of that
envelope to compare to the y dimension
of this
envelope.eps
- A small tolerance number for floating point number comparaisons. This value will
be scaled according this envelope width and height.true
if the envelope bounds are the same (up to the specified tolerance
level) in the specified dimensions, or false
otherwise.public String toString()
CoordinateFormat
.toString
in class Rectangle2D.Double
public void setBounds(BoundingBox bounds)
BoundingBox
setBounds
in interface BoundingBox
bounds
- The new bounds.public void include(BoundingBox bounds)
BoundingBox
include
in interface BoundingBox
bounds
- The bounds to add to this geographic bounding box.public void include(double x, double y)
BoundingBox
include
in interface BoundingBox
x
- The first ordinate value.y
- The second ordinate value.public boolean intersects(BoundingBox bounds)
true
if the interior of this bounds intersects the interior of the provided
bounds.
Note this method conflicts with RectangularShape.intersects(Rectangle2D)
so you may
need to call it via envelope2d.intersects( (Envelope2D) bounds ) in order to correctly check
that the coordinate reference systems match.
intersects
in interface BoundingBox
bounds
- The bounds to test for intersection.true
if the two bounds intersect.public boolean contains(BoundingBox bounds)
BoundingBox
true
if the provided bounds are contained by this bounding box.contains
in interface BoundingBox
bounds
- The bounds to test for inclusion.true
if the given bounds is inside this bounds.public boolean contains(DirectPosition location)
BoundingBox
true
if the provided location is contained by this bounding box.contains
in interface BoundingBox
location
- The direct position to test for inclusion.true
if the given position is inside this bounds.public BoundingBox toBounds(CoordinateReferenceSystem targetCRS) throws TransformException
BoundingBox
Example: if box
is a bounding box using a geographic CRS with WGS84 datum, then one can write:
Be aware thatGeographicCRS 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.
toBounds
in interface BoundingBox
targetCRS
- The target CRS for the bounding box to be returned.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.Copyright © 1996–2019 Geotools. All rights reserved.