|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
ObjectRectangularShape
Rectangle2D
Rectangle2D.Double
Envelope2D
public class Envelope2D
A two-dimensional envelope on top of Rectangle2D. This implementation is provided for
inter-operability between Java2D and GeoAPI.
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.
Spanning the anti-meridian of a Geographic CRS
The Web Coverage Service (WCS) specification authorizes (with special treatment)
cases where upper < lower at least in the longitude case. They are
envelopes spanning the anti-meridian, like the red box below (the green box is the usual case).
For Envelope2D objects, they are rectangle with negative width or
height field values. The default implementation of methods listed in the
right column can handle such cases.
|
Supported methods:
|
getMinX(), getMinY(), getMaxX(), getMaxY(),
getCenterX(), getCenterY(), getWidth() and getHeight()
methods delegate to the above-cited methods.
GeneralEnvelope,
org.geotoolkit.geometry.jts.ReferencedEnvelope,
GeographicBoundingBox,
Serialized Form
| referencing/geotk-referencing (download) | View source code for this class |
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class Rectangle2D |
|---|
Rectangle2D.Double, Rectangle2D.Float |
| Field Summary |
|---|
| Fields inherited from class Rectangle2D.Double |
|---|
height, width, x, y |
| Fields inherited from class Rectangle2D |
|---|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP |
| Constructor Summary | |
|---|---|
Envelope2D()
Constructs an initially empty envelope with no 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(DirectPosition lower,
DirectPosition upper)
Constructs two-dimensional envelope defined by the specified coordinates. |
|
Envelope2D(Envelope envelope)
Constructs two-dimensional envelope defined by an other Envelope. |
|
Envelope2D(GeographicBoundingBox box)
Constructs a new envelope with the same data than the specified geographic bounding box. |
|
| Method Summary | |
|---|---|
void |
add(double px,
double py)
Adds a point to this rectangle. |
void |
add(Rectangle2D rect)
Adds an other rectangle to this rectangle. |
boolean |
boundsEquals(Envelope that,
int xDim,
int yDim,
double eps)
Returns true if this envelope bounds is equal to that envelope
bounds in two specified dimensions. |
boolean |
contains(double px,
double py)
Tests if a specified coordinate is inside the boundary of this envelope. |
boolean |
contains(double rx,
double ry,
double rw,
double rh)
Returns true if this envelope completely encloses the specified rectangle. |
boolean |
contains(Rectangle2D rect)
Returns true if this envelope completely encloses the specified rectangle. |
Envelope2D |
createIntersection(Rectangle2D rect)
Returns the intersection of this envelope with the specified rectangle. |
Envelope2D |
createUnion(Rectangle2D rect)
Returns the union of this envelope with the specified rectangle. |
boolean |
equals(Object object)
Compares the specified object with this envelope for equality. |
double |
getCenterX()
Returns the median ordinate value for dimension 0. |
double |
getCenterY()
Returns the median ordinate value for dimension 1. |
CoordinateReferenceSystem |
getCoordinateReferenceSystem()
Returns the coordinate reference system in which the coordinates are given. |
int |
getDimension()
Returns the number of dimensions, which is always 2. |
double |
getHeight()
Returns the span for dimension 1. |
DirectPosition2D |
getLowerCorner()
A coordinate position consisting of all the starting ordinates for each dimension for all points within the Envelope. |
double |
getMaximum(int dimension)
Returns the maximal ordinate along the specified dimension. |
double |
getMaxX()
Returns the maximal ordinate value for dimension 0. |
double |
getMaxY()
Returns the maximal ordinate value for dimension 1. |
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 |
getMinX()
Returns the minimal ordinate value for dimension 0. |
double |
getMinY()
Returns the minimal ordinate value for dimension 1. |
double |
getSpan(int dimension)
Returns the envelope span along the specified dimension. |
DirectPosition2D |
getUpperCorner()
A coordinate position consisting of all the ending ordinates for each dimension for all points within the Envelope. |
double |
getWidth()
Returns the span for dimension 0. |
boolean |
intersects(double rx,
double ry,
double rw,
double rh)
Returns true if this envelope intersects the specified envelope. |
boolean |
intersects(Rectangle2D rect)
Returns true if this envelope intersects the specified envelope. |
boolean |
isEmpty()
Determines whether the envelope is empty. |
void |
setCoordinateReferenceSystem(CoordinateReferenceSystem crs)
Sets the coordinate reference system in which the coordinate are given. |
void |
setEnvelope(Envelope envelope)
Sets this envelope to the same values than the given Envelope. |
String |
toString()
Formats this envelope in the Well Known Text (WKT) format. |
| Methods inherited from class Rectangle2D.Double |
|---|
getBounds2D, getX, getY, outcode, setRect, setRect |
| Methods inherited from class Rectangle2D |
|---|
add, getPathIterator, getPathIterator, hashCode, intersect, intersectsLine, intersectsLine, outcode, setFrame, union |
| Methods inherited from class RectangularShape |
|---|
clone, contains, getBounds, getFrame, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal |
| Methods inherited from class Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface Cloneable |
|---|
clone |
| Constructor Detail |
|---|
public Envelope2D()
public Envelope2D(Envelope envelope)
throws MismatchedDimensionException
Envelope.
envelope - The envelope to copy.
MismatchedDimensionException - If the given envelope is not two-dimensional.GeneralEnvelope.GeneralEnvelope(Envelope)public Envelope2D(GeographicBoundingBox box)
box - The bounding box to copy.GeneralEnvelope.GeneralEnvelope(GeographicBoundingBox)
public Envelope2D(CoordinateReferenceSystem crs,
Rectangle2D rect)
Rectangle2D.
If the given rectangle has negative width or height, they will be interpreted
as envelope spanning the anti-meridian.
crs - The coordinate reference system, or null.rect - The rectangle to copy.GeneralEnvelope.GeneralEnvelope(Rectangle2D)
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. May be negative for envelope spanning the anti-meridian.height - The envelope height. May be negative for envelope spanning the anti-meridian.
public Envelope2D(DirectPosition lower,
DirectPosition upper)
throws MismatchedReferenceSystemException
Spanning the anti-meridian of a Geographic CRS
This minDP and maxDP arguments may not be really minimal or maximal values
if the rectangle cross the anti-meridian. The given arguments are rather the values to be
returned by getLowerCorner() and getUpperCorner() methods, which may
have an extended interpretation. See the javadoc of above-cited methods for more details.
lower - The fist position.upper - The second position.
MismatchedReferenceSystemException - if the two positions don't use the same CRS.GeneralEnvelope.GeneralEnvelope(GeneralDirectPosition, GeneralDirectPosition)| Method Detail |
|---|
public void setEnvelope(Envelope envelope)
throws MismatchedDimensionException
Envelope.
envelope - The envelope to copy.
MismatchedDimensionException - If the given envelope is not two-dimensional.public final CoordinateReferenceSystem getCoordinateReferenceSystem()
getCoordinateReferenceSystem in interface Envelopenull.public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs)
Envelopes.transform(Envelope, CoordinateReferenceSystem) instead.
crs - The new coordinate reference system, or null.public final int getDimension()
getDimension in interface Envelopepublic DirectPosition2D getLowerCorner()
Envelope.
Note:
The Web Coverage Service (WCS) 1.1 specification uses an extended
interpretation of the bounding box definition. In a WCS 1.1 data structure, the lower
corner defines the edges region in the directions of decreasing coordinate
values in the envelope CRS. This is usually the algebraic minimum coordinates, but not
always. For example, an envelope spanning the anti-meridian could have a lower corner
longitude greater than the upper corner longitude. Such extended interpretation applies
mostly to axes having WRAPAROUND range meaning.
getLowerCorner in interface Envelopepublic DirectPosition2D getUpperCorner()
Envelope.
Note:
The Web Coverage Service (WCS) 1.1 specification uses an extended
interpretation of the bounding box definition. In a WCS 1.1 data structure, the upper
corner defines the edges region in the directions of increasing coordinate
values in the envelope CRS. This is usually the algebraic maximum coordinates, but not
always. For example, an envelope spanning the anti-meridian could have an upper corner
longitude less than the lower corner longitude. Such extended interpretation applies
mostly to axes having WRAPAROUND range meaning.
getUpperCorner in interface Envelope
public double getMinimum(int dimension)
throws IndexOutOfBoundsException
AbstractEnvelope.getMinimum(int)
method.
getMinimum in interface Envelopedimension - The dimension to query.
IndexOutOfBoundsException - If the given index is out of bounds.
public double getMaximum(int dimension)
throws IndexOutOfBoundsException
AbstractEnvelope.getMaximum(int)
method.
getMaximum in interface Envelopedimension - The dimension to query.
IndexOutOfBoundsException - If the given index is out of bounds.
public double getMedian(int dimension)
throws IndexOutOfBoundsException
AbstractEnvelope.getMedian(int)
method.
getMedian in interface Envelopedimension - The dimension to query.
IndexOutOfBoundsException - If the given index is out of bounds.
public double getSpan(int dimension)
throws IndexOutOfBoundsException
AbstractEnvelope.getSpan(int) method.
getSpan in interface Envelopedimension - The dimension to query.
IndexOutOfBoundsException - If the given index is out of bounds.public double getMinX()
getMinX in class RectangularShapepublic double getMinY()
getMinY in class RectangularShapepublic double getMaxX()
getMaxX in class RectangularShapepublic double getMaxY()
getMaxY in class RectangularShapepublic double getCenterX()
getCenterX in class RectangularShapepublic double getCenterY()
getCenterY in class RectangularShapepublic double getWidth()
getWidth in class Rectangle2D.Doublepublic double getHeight()
getHeight in class Rectangle2D.Doublepublic boolean isEmpty()
Note that if the Rectangle2D.Double.width or Rectangle2D.Double.height value is
NaN, then the envelope is considered empty.
This is different than the default Rectangle2D.Double.isEmpty()
implementation, which doesn't check for NaN values.
isEmpty in class Rectangle2D.Double
public boolean contains(double px,
double py)
NaN, then this method returns
false.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
AbstractEnvelope.contains(DirectPosition).
contains in interface Shapecontains in class Rectangle2Dpx - The first ordinate value of the point to text.py - The second ordinate value of the point to text.
true if the specified coordinate is inside the boundary
of this envelope; false otherwise.public boolean contains(Rectangle2D rect)
true if this envelope completely encloses the specified rectangle. If this
envelope or the given rectangle have at least one NaN value,
then this method returns false.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
AbstractEnvelope.contains(Envelope, boolean).
contains in interface Shapecontains in class RectangularShaperect - The rectangle to test for inclusion.
true if this envelope completely encloses the specified rectangle.
public boolean contains(double rx,
double ry,
double rw,
double rh)
true if this envelope completely encloses the specified rectangle. If this
envelope or the given rectangle have at least one NaN value,
then this method returns false.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
AbstractEnvelope.contains(Envelope, boolean).
contains in interface Shapecontains in class Rectangle2Drx - The x ordinate of the lower corner of the rectangle to test for inclusion.ry - The y ordinate of the lower corner of the rectangle to test for inclusion.rw - The width of the rectangle to test for inclusion. May be negative if the rectangle spans the anti-meridian.rh - The height of the rectangle to test for inclusion. May be negative.
true if this envelope completely encloses the specified one.public boolean intersects(Rectangle2D rect)
true if this envelope intersects the specified envelope. If this envelope
or the given rectangle have at least one NaN value, then this
method returns false.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
AbstractEnvelope.intersects(Envelope, boolean).
intersects in interface Shapeintersects in class RectangularShaperect - The rectangle to test for intersection.
true if this envelope intersects the specified rectangle.
public boolean intersects(double rx,
double ry,
double rw,
double rh)
true if this envelope intersects the specified envelope. If this envelope
or the given rectangle have at least one NaN value, then this
method returns false.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
AbstractEnvelope.intersects(Envelope, boolean).
intersects in interface Shapeintersects in class Rectangle2Drx - The x ordinate of the lower corner of the rectangle to test for intersection.ry - The y ordinate of the lower corner of the rectangle to test for intersection.rw - The width of the rectangle to test for inclusion. May be negative if the rectangle spans the anti-meridian.rh - The height of the rectangle to test for inclusion. May be negative.
true if this envelope intersects the specified rectangle.public Envelope2D createIntersection(Rectangle2D rect)
NaN values, then this
method returns an empty envelope.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
GeneralEnvelope.intersect(Envelope).
createIntersection in class Rectangle2D.Doublerect - The rectangle to be intersected with this envelope.
public Envelope2D createUnion(Rectangle2D rect)
add(Rectangle2D).
createUnion in class Rectangle2D.Doublerect - The rectangle to add to this envelope.
public void add(Rectangle2D rect)
Rectangle objects.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
GeneralEnvelope.add(Envelope), except if the result is a rectangle expanding to
infinities. In the later case, the field values are set to NaN because infinite
values are a little bit problematic in Rectangle2D objects.
add in class Rectangle2Drect - The rectangle to add to this envelope.
public void add(double px,
double py)
After adding a point, a call to contains(double, double) with the added point
as an argument will return true, except if one of the point ordinates was
Double.NaN in which case the corresponding ordinate has been ignored.
Spanning the anti-meridian of a Geographic CRS
This method supports anti-meridian spanning in the same way than
GeneralEnvelope.add(DirectPosition).
add in class Rectangle2Dpx - The first ordinate of the point to add.py - The second ordinate of the point to add.public boolean equals(Object object)
Envelope2D, then the two objects are compared as plain rectangles,
i.e. the coordinate reference system of this
envelope is ignored.
Note on hashCode()
This class does not override the Rectangle2D.hashCode() method for consistency with the
Rectangle2D.equals(Object) method, which compare arbitrary Rectangle2D
implementations.
equals in class Rectangle2Dobject - The object to compare with this envelope.
true if the given object is equal to this envelope.
public boolean boundsEquals(Envelope that,
int xDim,
int yDim,
double eps)
true if this envelope bounds is equal 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 comparisons. 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()
BOX2D(lower corner,upper corner)
toString in class Rectangle2D.DoubleEnvelopes.toWKT(Envelope)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||