Package org.locationtech.jts.geom
Class Envelope
- java.lang.Object
-
- org.locationtech.jts.geom.Envelope
-
- All Implemented Interfaces:
Serializable,Comparable
public class Envelope extends Object implements Comparable, 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 theCoordinates.Envelopes support infinite or half-infinite regions, by using the values of
Double.POSITIVE_INFINITYandDouble.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 anEnvelopefor a region defined by maximum and minimum values.Envelope(Coordinate p)Creates anEnvelopefor a region defined by a single Coordinate.Envelope(Coordinate p1, Coordinate p2)Creates anEnvelopefor a region defined by two Coordinates.Envelope(Envelope env)Create anEnvelopefrom an existing Envelope.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Coordinatecentre()Computes the coordinate of the centre of this envelope (as long as it is non-nullintcompareTo(Object o)Compares two envelopes using lexicographic ordering.booleancontains(double x, double y)Tests if the given point lies in or on the envelope.booleancontains(Coordinate p)Tests if the given point lies in or on the envelope.booleancontains(Envelope other)Tests if theEnvelope otherlies wholely inside thisEnvelope(inclusive of the boundary).booleancovers(double x, double y)Tests if the given point lies in or on the envelope.booleancovers(Coordinate p)Tests if the given point lies in or on the envelope.booleancovers(Envelope other)Tests if theEnvelope otherlies wholely inside thisEnvelope(inclusive of the boundary).doubledistance(Envelope env)Computes the distance between this and anotherEnvelope.booleanequals(Object other)voidexpandBy(double distance)Expands this envelope by a given distance in all directions.voidexpandBy(double deltaX, double deltaY)Expands this envelope by a given distance in all directions.voidexpandToInclude(double x, double y)Enlarges thisEnvelopeso that it contains the given point.voidexpandToInclude(Coordinate p)Enlarges thisEnvelopeso that it contains the givenCoordinate.voidexpandToInclude(Envelope other)Enlarges thisEnvelopeso that it contains theotherEnvelope.doublegetArea()Gets the area of this envelope.doublegetHeight()Returns the difference between the maximum and minimum y values.doublegetMaxX()Returns theEnvelopes maximum x-value.doublegetMaxY()Returns theEnvelopes maximum y-value.doublegetMinX()Returns theEnvelopes minimum x-value.doublegetMinY()Returns theEnvelopes minimum y-value.doublegetWidth()Returns the difference between the maximum and minimum x values.inthashCode()voidinit()Initialize to a nullEnvelope.voidinit(double x1, double x2, double y1, double y2)Initialize anEnvelopefor a region defined by maximum and minimum values.voidinit(Coordinate p)Initialize anEnvelopeto a region defined by a single Coordinate.voidinit(Coordinate p1, Coordinate p2)Initialize anEnvelopeto a region defined by two Coordinates.voidinit(Envelope env)Initialize anEnvelopefrom an existing Envelope.Envelopeintersection(Envelope env)Computes the intersection of twoEnvelopes.booleanintersects(double x, double y)Check if the point(x, y)intersects (lies inside) the region of thisEnvelope.booleanintersects(Coordinate p)Check if the pointpintersects (lies inside) the region of thisEnvelope.booleanintersects(Coordinate a, Coordinate b)Check if the extent defined by two extremal points intersects the extent of thisEnvelope.static booleanintersects(Coordinate p1, Coordinate p2, Coordinate q)Test the point q to see whether it intersects the Envelope defined by p1-p2static booleanintersects(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)Tests whether the envelope defined by p1-p2 and the envelope defined by q1-q2 intersect.booleanintersects(Envelope other)Check if the region defined byotherintersects the region of thisEnvelope.booleanisNull()Returnstrueif thisEnvelopeis a "null" envelope.doublemaxExtent()Gets the maximum extent of this envelope across both dimensions.doubleminExtent()Gets the minimum extent of this envelope across both dimensions.booleanoverlaps(double x, double y)Deprecated.Use #intersects instead.booleanoverlaps(Coordinate p)Deprecated.Use #intersects instead.booleanoverlaps(Envelope other)Deprecated.Use #intersects instead.voidsetToNull()Makes thisEnvelopea "null" envelope, that is, the envelope of the empty geometry.StringtoString()voidtranslate(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 anEnvelopefor 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 anEnvelopefor a region defined by two Coordinates.- Parameters:
p1- the first Coordinatep2- the second Coordinate
-
Envelope
public Envelope(Coordinate p)
Creates anEnvelopefor a region defined by a single Coordinate.- Parameters:
p- the Coordinate
-
Envelope
public Envelope(Envelope env)
Create anEnvelopefrom an existing Envelope.- Parameters:
env- the Envelope to initialize from
-
-
Method Detail
-
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:
trueif 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:
trueif Q intersects P
-
init
public void init()
Initialize to a nullEnvelope.
-
init
public void init(double x1, double x2, double y1, double y2)Initialize anEnvelopefor 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
-
init
public void init(Coordinate p1, Coordinate p2)
Initialize anEnvelopeto a region defined by two Coordinates.- Parameters:
p1- the first Coordinatep2- the second Coordinate
-
init
public void init(Coordinate p)
Initialize anEnvelopeto a region defined by a single Coordinate.- Parameters:
p- the coordinate
-
init
public void init(Envelope env)
Initialize anEnvelopefrom an existing Envelope.- Parameters:
env- the Envelope to initialize from
-
setToNull
public void setToNull()
Makes thisEnvelopea "null" envelope, that is, the envelope of the empty geometry.
-
isNull
public boolean isNull()
Returnstrueif thisEnvelopeis a "null" envelope.- Returns:
trueif thisEnvelopeis 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
-
getMinX
public double getMinX()
Returns theEnvelopes minimum x-value. min x > max x indicates that this is a nullEnvelope.- Returns:
- the minimum x-coordinate
-
getMaxX
public double getMaxX()
Returns theEnvelopes maximum x-value. min x > max x indicates that this is a nullEnvelope.- Returns:
- the maximum x-coordinate
-
getMinY
public double getMinY()
Returns theEnvelopes minimum y-value. min y > max y indicates that this is a nullEnvelope.- Returns:
- the minimum y-coordinate
-
getMaxY
public double getMaxY()
Returns theEnvelopes 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 thisEnvelopeso 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 thisEnvelopeso 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 thisEnvelopeso that it contains theotherEnvelope. Has no effect ifotheris wholly on or within the envelope.- Parameters:
other- theEnvelopeto 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
nullif the envelope is null
-
intersection
public Envelope intersection(Envelope env)
Computes the intersection of twoEnvelopes.- 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)
Check if the region defined byotherintersects the region of thisEnvelope.- Parameters:
other- theEnvelopewhich thisEnvelopeis being checked for intersecting- Returns:
trueif theEnvelopes intersect
-
intersects
public boolean intersects(Coordinate a, Coordinate b)
Check if the extent defined by two extremal points intersects the extent of thisEnvelope.- Parameters:
a- a pointb- another point- Returns:
trueif the extents intersect
-
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)
Check if the pointpintersects (lies inside) the region of thisEnvelope.- Parameters:
p- theCoordinateto be tested- Returns:
trueif 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:
trueif 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 otherlies 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- theEnvelopeto check- Returns:
- true if
otheris 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 thisEnvelopeis being checked for containing- Returns:
trueif 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 thisEnvelopeis being checked for containingy- the y-coordinate of the point which thisEnvelopeis being checked for containing- Returns:
trueif(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 thisEnvelopeis being checked for containingy- the y-coordinate of the point which thisEnvelopeis being checked for containing- Returns:
trueif(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 thisEnvelopeis being checked for containing- Returns:
trueif the point lies in the interior or on the boundary of thisEnvelope.
-
covers
public boolean covers(Envelope other)
Tests if theEnvelope otherlies wholely inside thisEnvelope(inclusive of the boundary).- Parameters:
other- theEnvelopeto check- Returns:
- true if this
Envelopecovers 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.
-
compareTo
public int compareTo(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:
compareToin interfaceComparable- Parameters:
o- an Envelope object
-
-