Package org.locationtech.jts.geom
Class Envelope
- java.lang.Object
-
- org.locationtech.jts.geom.Envelope
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable
public class Envelope extends java.lang.Object implements java.lang.Comparable, java.io.Serializable
Defines a rectangular region of the 2D coordinate plane. It is often used to represent the bounding box of aGeometry
, e.g. the minimum and maximum x and y values of theCoordinate
s.Envelopes support infinite or half-infinite regions, by using the values of
Double.POSITIVE_INFINITY
andDouble.NEGATIVE_INFINITY
. Envelope objects may have a null value.When Envelope objects are created or initialized, the supplies extent values are automatically sorted into the correct order.
- Version:
- 1.7
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Envelope()
Creates a nullEnvelope
.Envelope(double x1, double x2, double y1, double y2)
Creates anEnvelope
for a region defined by maximum and minimum values.Envelope(Coordinate p)
Creates anEnvelope
for a region defined by a single Coordinate.Envelope(Coordinate p1, Coordinate p2)
Creates anEnvelope
for a region defined by two Coordinates.Envelope(Envelope env)
Create anEnvelope
from an existing Envelope.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Coordinate
centre()
Computes the coordinate of the centre of this envelope (as long as it is non-nullint
compareTo(java.lang.Object o)
Compares two envelopes using lexicographic ordering.boolean
contains(double x, double y)
Tests if the given point lies in or on the envelope.boolean
contains(Coordinate p)
Tests if the given point lies in or on the envelope.boolean
contains(Envelope other)
Tests if theEnvelope other
lies wholely inside thisEnvelope
(inclusive of the boundary).Envelope
copy()
Creates a copy of this envelope object.boolean
covers(double x, double y)
Tests if the given point lies in or on the envelope.boolean
covers(Coordinate p)
Tests if the given point lies in or on the envelope.boolean
covers(Envelope other)
Tests if theEnvelope other
lies wholely inside thisEnvelope
(inclusive of the boundary).boolean
disjoint(Envelope other)
Tests if the region defined byother
is disjoint from the region of thisEnvelope
.double
distance(Envelope env)
Computes the distance between this and anotherEnvelope
.boolean
equals(java.lang.Object other)
void
expandBy(double distance)
Expands this envelope by a given distance in all directions.void
expandBy(double deltaX, double deltaY)
Expands this envelope by a given distance in all directions.void
expandToInclude(double x, double y)
Enlarges thisEnvelope
so that it contains the given point.void
expandToInclude(Coordinate p)
Enlarges thisEnvelope
so that it contains the givenCoordinate
.void
expandToInclude(Envelope other)
Enlarges thisEnvelope
so that it contains theother
Envelope.double
getArea()
Gets the area of this envelope.double
getDiameter()
Gets the length of the diameter (diagonal) of the envelope.double
getHeight()
Returns the difference between the maximum and minimum y values.double
getMaxX()
Returns theEnvelope
s maximum x-value.double
getMaxY()
Returns theEnvelope
s maximum y-value.double
getMinX()
Returns theEnvelope
s minimum x-value.double
getMinY()
Returns theEnvelope
s minimum y-value.double
getWidth()
Returns the difference between the maximum and minimum x values.int
hashCode()
void
init()
Initialize to a nullEnvelope
.void
init(double x1, double x2, double y1, double y2)
Initialize anEnvelope
for a region defined by maximum and minimum values.void
init(Coordinate p)
Initialize anEnvelope
to a region defined by a single Coordinate.void
init(Coordinate p1, Coordinate p2)
Initialize anEnvelope
to a region defined by two Coordinates.void
init(Envelope env)
Initialize anEnvelope
from an existing Envelope.Envelope
intersection(Envelope env)
Computes the intersection of twoEnvelope
s.boolean
intersects(double x, double y)
Check if the point(x, y)
intersects (lies inside) the region of thisEnvelope
.boolean
intersects(Coordinate p)
Tests if the pointp
intersects (lies inside) the region of thisEnvelope
.boolean
intersects(Coordinate a, Coordinate b)
Tests if the extent defined by two extremal points intersects the extent of thisEnvelope
.static boolean
intersects(Coordinate p1, Coordinate p2, Coordinate q)
Test the point q to see whether it intersects the Envelope defined by p1-p2static boolean
intersects(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
Tests whether the envelope defined by p1-p2 and the envelope defined by q1-q2 intersect.boolean
intersects(Envelope other)
Tests if the region defined byother
intersects the region of thisEnvelope
.boolean
isNull()
Returnstrue
if thisEnvelope
is a "null" envelope.double
maxExtent()
Gets the maximum extent of this envelope across both dimensions.double
minExtent()
Gets the minimum extent of this envelope across both dimensions.boolean
overlaps(double x, double y)
Deprecated.Use #intersects instead.boolean
overlaps(Coordinate p)
Deprecated.Use #intersects instead.boolean
overlaps(Envelope other)
Deprecated.Use #intersects instead.void
setToNull()
Makes thisEnvelope
a "null" envelope, that is, the envelope of the empty geometry.java.lang.String
toString()
void
translate(double transX, double transY)
Translates this envelope by given amounts in the X and Y direction.
-
-
-
Constructor Detail
-
Envelope
public Envelope()
Creates a nullEnvelope
.
-
Envelope
public Envelope(double x1, double x2, double y1, double y2)
Creates anEnvelope
for a region defined by maximum and minimum values.- Parameters:
x1
- the first x-valuex2
- the second x-valuey1
- the first y-valuey2
- the second y-value
-
Envelope
public Envelope(Coordinate p1, Coordinate p2)
Creates anEnvelope
for a region defined by two Coordinates.- Parameters:
p1
- the first Coordinatep2
- the second Coordinate
-
Envelope
public Envelope(Coordinate p)
Creates anEnvelope
for a region defined by a single Coordinate.- Parameters:
p
- the Coordinate
-
Envelope
public Envelope(Envelope env)
Create anEnvelope
from an existing Envelope.- Parameters:
env
- the Envelope to initialize from
-
-
Method Detail
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
intersects
public static boolean intersects(Coordinate p1, Coordinate p2, Coordinate q)
Test the point q to see whether it intersects the Envelope defined by p1-p2- Parameters:
p1
- one extremal point of the envelopep2
- another extremal point of the envelopeq
- the point to test for intersection- Returns:
true
if q intersects the envelope p1-p2
-
intersects
public static boolean intersects(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
Tests whether the envelope defined by p1-p2 and the envelope defined by q1-q2 intersect.- Parameters:
p1
- one extremal point of the envelope Pp2
- another extremal point of the envelope Pq1
- one extremal point of the envelope Qq2
- another extremal point of the envelope Q- Returns:
true
if Q intersects P
-
init
public void init()
Initialize to a nullEnvelope
.
-
init
public void init(double x1, double x2, double y1, double y2)
Initialize anEnvelope
for a region defined by maximum and minimum values.- Parameters:
x1
- the first x-valuex2
- the second x-valuey1
- the first y-valuey2
- the second y-value
-
copy
public Envelope copy()
Creates a copy of this envelope object.- Returns:
- a copy of this envelope
-
init
public void init(Coordinate p1, Coordinate p2)
Initialize anEnvelope
to a region defined by two Coordinates.- Parameters:
p1
- the first Coordinatep2
- the second Coordinate
-
init
public void init(Coordinate p)
Initialize anEnvelope
to a region defined by a single Coordinate.- Parameters:
p
- the coordinate
-
init
public void init(Envelope env)
Initialize anEnvelope
from an existing Envelope.- Parameters:
env
- the Envelope to initialize from
-
setToNull
public void setToNull()
Makes thisEnvelope
a "null" envelope, that is, the envelope of the empty geometry.
-
isNull
public boolean isNull()
Returnstrue
if thisEnvelope
is a "null" envelope.- Returns:
true
if thisEnvelope
is uninitialized or is the envelope of the empty geometry.
-
getWidth
public double getWidth()
Returns the difference between the maximum and minimum x values.- Returns:
- max x - min x, or 0 if this is a null
Envelope
-
getHeight
public double getHeight()
Returns the difference between the maximum and minimum y values.- Returns:
- max y - min y, or 0 if this is a null
Envelope
-
getDiameter
public double getDiameter()
Gets the length of the diameter (diagonal) of the envelope.- Returns:
- the diameter length
-
getMinX
public double getMinX()
Returns theEnvelope
s minimum x-value. min x > max x indicates that this is a nullEnvelope
.- Returns:
- the minimum x-coordinate
-
getMaxX
public double getMaxX()
Returns theEnvelope
s maximum x-value. min x > max x indicates that this is a nullEnvelope
.- Returns:
- the maximum x-coordinate
-
getMinY
public double getMinY()
Returns theEnvelope
s minimum y-value. min y > max y indicates that this is a nullEnvelope
.- Returns:
- the minimum y-coordinate
-
getMaxY
public double getMaxY()
Returns theEnvelope
s maximum y-value. min y > max y indicates that this is a nullEnvelope
.- Returns:
- the maximum y-coordinate
-
getArea
public double getArea()
Gets the area of this envelope.- Returns:
- the area of the envelope
-
minExtent
public double minExtent()
Gets the minimum extent of this envelope across both dimensions.- Returns:
- the minimum extent of this envelope
-
maxExtent
public double maxExtent()
Gets the maximum extent of this envelope across both dimensions.- Returns:
- the maximum extent of this envelope
-
expandToInclude
public void expandToInclude(Coordinate p)
Enlarges thisEnvelope
so that it contains the givenCoordinate
. Has no effect if the point is already on or within the envelope.- Parameters:
p
- the Coordinate to expand to include
-
expandBy
public void expandBy(double distance)
Expands this envelope by a given distance in all directions. Both positive and negative distances are supported.- Parameters:
distance
- the distance to expand the envelope
-
expandBy
public void expandBy(double deltaX, double deltaY)
Expands this envelope by a given distance in all directions. Both positive and negative distances are supported.- Parameters:
deltaX
- the distance to expand the envelope along the the X axisdeltaY
- the distance to expand the envelope along the the Y axis
-
expandToInclude
public void expandToInclude(double x, double y)
Enlarges thisEnvelope
so that it contains the given point. Has no effect if the point is already on or within the envelope.- Parameters:
x
- the value to lower the minimum x to or to raise the maximum x toy
- the value to lower the minimum y to or to raise the maximum y to
-
expandToInclude
public void expandToInclude(Envelope other)
Enlarges thisEnvelope
so that it contains theother
Envelope. Has no effect ifother
is wholly on or within the envelope.- Parameters:
other
- theEnvelope
to expand to include
-
translate
public void translate(double transX, double transY)
Translates this envelope by given amounts in the X and Y direction.- Parameters:
transX
- the amount to translate along the X axistransY
- the amount to translate along the Y axis
-
centre
public Coordinate centre()
Computes the coordinate of the centre of this envelope (as long as it is non-null- Returns:
- the centre coordinate of this envelope
null
if the envelope is null
-
intersection
public Envelope intersection(Envelope env)
Computes the intersection of twoEnvelope
s.- Parameters:
env
- the envelope to intersect with- Returns:
- a new Envelope representing the intersection of the envelopes (this will be the null envelope if either argument is null, or they do not intersect
-
intersects
public boolean intersects(Envelope other)
Tests if the region defined byother
intersects the region of thisEnvelope
.- Parameters:
other
- theEnvelope
which thisEnvelope
is being checked for intersecting- Returns:
true
if theEnvelope
s intersect
-
intersects
public boolean intersects(Coordinate a, Coordinate b)
Tests if the extent defined by two extremal points intersects the extent of thisEnvelope
.- Parameters:
a
- a pointb
- another point- Returns:
true
if the extents intersect
-
disjoint
public boolean disjoint(Envelope other)
Tests if the region defined byother
is disjoint from the region of thisEnvelope
.- Parameters:
other
- theEnvelope
being checked for disjointness- Returns:
true
if theEnvelope
s are disjoint- See Also:
intersects(Envelope)
-
overlaps
public boolean overlaps(Envelope other)
Deprecated.Use #intersects instead. In the future, #overlaps may be changed to be a true overlap check; that is, whether the intersection is two-dimensional.
-
intersects
public boolean intersects(Coordinate p)
Tests if the pointp
intersects (lies inside) the region of thisEnvelope
.- Parameters:
p
- theCoordinate
to be tested- Returns:
true
if the point intersects thisEnvelope
-
overlaps
public boolean overlaps(Coordinate p)
Deprecated.Use #intersects instead.
-
intersects
public boolean intersects(double x, double y)
Check if the point(x, y)
intersects (lies inside) the region of thisEnvelope
.- Parameters:
x
- the x-ordinate of the pointy
- the y-ordinate of the point- Returns:
true
if the point overlaps thisEnvelope
-
overlaps
public boolean overlaps(double x, double y)
Deprecated.Use #intersects instead.
-
contains
public boolean contains(Envelope other)
Tests if theEnvelope other
lies wholely inside thisEnvelope
(inclusive of the boundary).Note that this is not the same definition as the SFS contains, which would exclude the envelope boundary.
- Parameters:
other
- theEnvelope
to check- Returns:
- true if
other
is contained in thisEnvelope
- See Also:
covers(Envelope)
-
contains
public boolean contains(Coordinate p)
Tests if the given point lies in or on the envelope.Note that this is not the same definition as the SFS contains, which would exclude the envelope boundary.
- Parameters:
p
- the point which thisEnvelope
is being checked for containing- Returns:
true
if the point lies in the interior or on the boundary of thisEnvelope
.- See Also:
covers(Coordinate)
-
contains
public boolean contains(double x, double y)
Tests if the given point lies in or on the envelope.Note that this is not the same definition as the SFS contains, which would exclude the envelope boundary.
- Parameters:
x
- the x-coordinate of the point which thisEnvelope
is being checked for containingy
- the y-coordinate of the point which thisEnvelope
is being checked for containing- Returns:
true
if(x, y)
lies in the interior or on the boundary of thisEnvelope
.- See Also:
covers(double, double)
-
covers
public boolean covers(double x, double y)
Tests if the given point lies in or on the envelope.- Parameters:
x
- the x-coordinate of the point which thisEnvelope
is being checked for containingy
- the y-coordinate of the point which thisEnvelope
is being checked for containing- Returns:
true
if(x, y)
lies in the interior or on the boundary of thisEnvelope
.
-
covers
public boolean covers(Coordinate p)
Tests if the given point lies in or on the envelope.- Parameters:
p
- the point which thisEnvelope
is being checked for containing- Returns:
true
if the point lies in the interior or on the boundary of thisEnvelope
.
-
covers
public boolean covers(Envelope other)
Tests if theEnvelope other
lies wholely inside thisEnvelope
(inclusive of the boundary).- Parameters:
other
- theEnvelope
to check- Returns:
- true if this
Envelope
covers theother
-
distance
public double distance(Envelope env)
Computes the distance between this and anotherEnvelope
. The distance between overlapping Envelopes is 0. Otherwise, the distance is the Euclidean distance between the closest points.
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
compareTo
public int compareTo(java.lang.Object o)
Compares two envelopes using lexicographic ordering. The ordering comparison is based on the usual numerical comparison between the sequence of ordinates. Null envelopes are less than all non-null envelopes.- Specified by:
compareTo
in interfacejava.lang.Comparable
- Parameters:
o
- an Envelope object
-
-