GEOS 3.14.0dev
|
An Envelope defines a rectangulare region of the 2D coordinate plane. More...
#include <geos.h>
Public Types | |
typedef std::unique_ptr< Envelope > | Ptr |
Public Member Functions | |
Envelope () | |
Creates a null Envelope. | |
Envelope (double x1, double x2, double y1, double y2) | |
Creates an Envelope for a region defined by maximum and minimum values. | |
Envelope (const CoordinateXY &p1, const CoordinateXY &p2) | |
Creates an Envelope for a region defined by two Coordinates. | |
Envelope (const CoordinateXY &p) | |
Creates an Envelope for a region defined by a single Coordinate. | |
Envelope (const std::string &str) | |
Create an Envelope from an Envelope string representation produced by Envelope::toString() | |
bool | intersects (const CoordinateXY &a, const CoordinateXY &b) const |
Check if the extent defined by two extremal points intersects the extent of this Envelope. | |
void | init () |
Initialize to a null Envelope. | |
void | init (double x1, double x2, double y1, double y2) |
Initialize an Envelope for a region defined by maximum and minimum values. | |
void | init (const CoordinateXY &p1, const CoordinateXY &p2) |
Initialize an Envelope to a region defined by two Coordinates. | |
void | init (const CoordinateXY &p) |
Initialize an Envelope to a region defined by a single Coordinate. | |
void | setToNull () |
Makes this Envelope a "null" envelope, that is, the envelope of the empty geometry. | |
bool | isNull (void) const |
Returns true if this Envelope is a "null" envelope. | |
double | getWidth () const |
Returns the difference between the maximum and minimum x values. | |
double | getHeight () const |
Returns the difference between the maximum and minimum y values. | |
double | getArea () const |
Gets the area of this envelope. | |
bool | isFinite () const |
Returns true if this Envelope covers a finite region. | |
double | getMaxY () const |
Returns the Envelope maximum y-value. Null envelopes do not have maximum values. | |
double | getMaxX () const |
Returns the Envelope maximum x-value. Null envelopes do not have maximum values. | |
double | getMinY () const |
Returns the Envelope minimum y-value. Null envelopes do not have maximum values. | |
double | getMinX () const |
Returns the Envelope minimum x-value. Null envelopes do not have maximum values. | |
double | getDiameter () const |
bool | centre (CoordinateXY ¢re) const |
Computes the coordinate of the centre of this envelope (as long as it is non-null). | |
bool | intersection (const Envelope &env, Envelope &result) const |
Computes the intersection of two Envelopes. | |
void | translate (double transX, double transY) |
Translates this envelope by given amounts in the X and Y direction. | |
void | expandBy (double deltaX, double deltaY) |
Expands this envelope by a given distance in all directions. Both positive and negative distances are supported. | |
void | expandBy (double p_distance) |
Expands this envelope by a given distance in all directions. | |
void | expandToInclude (const CoordinateXY &p) |
Enlarges the boundary of the Envelope so that it contains p. Does nothing if p is already on or within the boundaries. | |
void | expandToInclude (double x, double y) |
Enlarges the boundary of the Envelope so that it contains (x,y). | |
void | expandToInclude (const Envelope *other) |
Enlarges the boundary of the Envelope so that it contains other . | |
void | expandToInclude (const Envelope &other) |
bool | contains (const Envelope &other) const |
Tests if the Envelope other lies wholly inside this Envelope (inclusive of the boundary). | |
bool | contains (const Envelope *other) const |
bool | contains (const CoordinateXY &p) const |
Returns true if the given point lies in or on the envelope. | |
bool | contains (double x, double y) const |
Returns true if the given point lies in or on the envelope. | |
bool | intersects (const CoordinateXY &other) const |
Check if the point p intersects (lies inside) the region of this Envelope. | |
bool | intersects (double x, double y) const |
Check if the point (x, y) intersects (lies inside) the region of this Envelope. | |
bool | intersects (const Envelope *other) const |
Check if the region defined by other Envelope intersects the region of this Envelope. | |
bool | intersects (const Envelope &other) const |
bool | disjoint (const Envelope &other) const |
bool | disjoint (const Envelope *other) const |
bool | covers (double x, double y) const |
Tests if the given point lies in or on the envelope. | |
bool | covers (const CoordinateXY *p) const |
Tests if the given point lies in or on the envelope. | |
bool | covers (const Envelope &other) const |
Tests if the Envelope other lies wholly inside this Envelope (inclusive of the boundary). | |
bool | covers (const Envelope *other) const |
bool | equals (const Envelope *other) const |
Returns true if the Envelope other spatially equals this Envelope. | |
bool | isfinite () const |
std::string | toString () const |
Returns a string of the form Env[minx:maxx,miny:maxy] . | |
double | distance (const Envelope &env) const |
Computes the distance between this and another Envelope. | |
double | maxDistance (const Envelope &other) const |
Computes the maximum distance between points in this and another Envelope. | |
double | distanceSquared (const Envelope &env) const |
Computes the square of the distance between this and another Envelope. | |
std::size_t | hashCode () const |
Static Public Member Functions | |
static bool | intersects (const CoordinateXY &p1, const CoordinateXY &p2, const CoordinateXY &q) |
Test the point q to see whether it intersects the Envelope defined by p1-p2 . | |
static bool | intersects (const CoordinateXY &p1, const CoordinateXY &p2, const CoordinateXY &q1, const CoordinateXY &q2) |
Test the envelope defined by p1-p2 for intersection with the envelope defined by q1-q2 . | |
static double | distanceToCoordinate (const CoordinateXY &c, const CoordinateXY &p0, const CoordinateXY &p1) |
Computes the distance between one Coordinate and an Envelope defined by two other Coordinates. The order of the Coordinates used to define the envelope is not significant. | |
static double | distanceSquaredToCoordinate (const CoordinateXY &c, const CoordinateXY &p0, const CoordinateXY &p1) |
Computes the squared distance between one Coordinate and an Envelope defined by two other Coordinates. The order of the Coordinates used to define the envelope is not significant. | |
Friends | |
std::ostream & | operator<< (std::ostream &os, const Envelope &o) |
Output operator. | |
bool | operator== (const Envelope &a, const Envelope &b) |
Checks if two Envelopes are equal (2D only check) | |
bool | operator!= (const Envelope &a, const Envelope &b) |
bool | operator< (const Envelope &a, const Envelope &b) |
An Envelope defines a rectangulare region of the 2D coordinate plane.
It is often used to represent the bounding box of a Geometry, e.g. the minimum and maximum x and y values of the Coordinates.
Envelopes allow null values, which are represented with NaN values for ordinates. Envelopes support infinite or half-infinite regions, by using the values of Double_POSITIVE_INFINITY
and Double_NEGATIVE_INFINITY
.
When Envelope objects are created or initialized, the supplies extent values are automatically sorted into the correct order.
|
inline |
Creates an Envelope for a region defined by maximum and minimum values.
x1 | the first x-value |
x2 | the second x-value |
y1 | the first y-value |
y2 | the second y-value |
|
inline |
Creates an Envelope for a region defined by two Coordinates.
p1 | the first Coordinate |
p2 | the second Coordinate |
|
inlineexplicit |
Creates an Envelope for a region defined by a single Coordinate.
p | the Coordinate |
bool geos::geom::Envelope::centre | ( | CoordinateXY & | centre | ) | const |
Computes the coordinate of the centre of this envelope (as long as it is non-null).
centre | The coordinate to write results into |
false
if the center could not be found (null envelope).
|
inline |
|
inline |
Tests if the Envelope other
lies wholly inside this Envelope (inclusive of the boundary).
Note that this is not the same definition as the SFS contains
, which would exclude the envelope boundary.
other | the Envelope to check |
true
if other
is contained in this Envelope
|
inline |
Returns true
if the given point lies in or on the envelope.
x | the x-coordinate of the point which this Envelope is being checked for containing |
y | the y-coordinate of the point which this Envelope is being checked for containing |
true
if (x, y)
lies in the interior or on the boundary of this Envelope.
|
inline |
bool geos::geom::Envelope::covers | ( | const Envelope & | other | ) | const |
|
inline |
Tests if the given point lies in or on the envelope.
x | the x-coordinate of the point which this Envelope is being checked for containing |
y | the y-coordinate of the point which this Envelope is being checked for containing |
true
if (x, y)
lies in the interior or on the boundary of this Envelope.
|
inline |
|
inline |
Computes the distance between this and another Envelope.
The distance between overlapping Envelopes is 0. Otherwise, the distance is the Euclidean distance between the closest points.
|
inline |
Computes the square of the distance between this and another Envelope.
The distance between overlapping Envelopes is 0. Otherwise, the distance is the Euclidean distance between the closest points.
Referenced by geos::operation::cluster::EnvelopeDistanceClusterFinder::shouldJoin().
|
inlinestatic |
Computes the squared distance between one Coordinate and an Envelope defined by two other Coordinates. The order of the Coordinates used to define the envelope is not significant.
c | the coordinate to from which distance should be found |
p0 | first coordinate defining an envelope |
p1 | second coordinate defining an envelope. |
|
inlinestatic |
Computes the distance between one Coordinate and an Envelope defined by two other Coordinates. The order of the Coordinates used to define the envelope is not significant.
c | the coordinate to from which distance should be found |
p0 | first coordinate defining an envelope |
p1 | second coordinate defining an envelope. |
bool geos::geom::Envelope::equals | ( | const Envelope * | other | ) | const |
void geos::geom::Envelope::expandBy | ( | double | deltaX, |
double | deltaY | ||
) |
Expands this envelope by a given distance in all directions. Both positive and negative distances are supported.
deltaX | the distance to expand the envelope along the X axis |
deltaY | the distance to expand the envelope along the Y axis |
Referenced by geos::operation::cluster::DBSCANClusterFinder::queryEnvelope(), geos::operation::cluster::EnvelopeDistanceClusterFinder::queryEnvelope(), and geos::operation::cluster::GeometryDistanceClusterFinder::queryEnvelope().
|
inline |
Expands this envelope by a given distance in all directions.
Both positive and negative distances are supported.
p_distance | the distance to expand the envelope |
|
inline |
Enlarges the boundary of the Envelope so that it contains p. Does nothing if p is already on or within the boundaries.
p | the Coordinate to include |
|
inline |
|
inline |
Enlarges the boundary of the Envelope so that it contains (x,y).
Does nothing if (x,y) is already on or within the boundaries.
x | the value to lower the minimum x to or to raise the maximum x to |
y | the value to lower the minimum y to or to raise the maximum y to |
|
inline |
Gets the area of this envelope.
|
inline |
Gets the length of the diameter (diagonal) of the envelope.
|
inline |
Returns the difference between the maximum and minimum y values.
max y - min y
, or 0 if this is a null Envelope
|
inline |
Returns the difference between the maximum and minimum x values.
max x - min x
, or 0 if this is a null Envelope
|
inline |
Initialize an Envelope to a region defined by a single Coordinate.
p | the Coordinate |
|
inline |
Initialize an Envelope to a region defined by two Coordinates.
p1 | the first Coordinate |
p2 | the second Coordinate |
|
inline |
Initialize an Envelope for a region defined by maximum and minimum values.
x1 | the first x-value |
x2 | the second x-value |
y1 | the first y-value |
y2 | the second y-value |
Computes the intersection of two Envelopes.
env | the envelope to intersect with |
result | the envelope representing the intersection of the envelopes (this will be the null envelope if either argument is null, or they do not intersect) |
bool geos::geom::Envelope::intersects | ( | const CoordinateXY & | a, |
const CoordinateXY & | b | ||
) | const |
Check if the extent defined by two extremal points intersects the extent of this Envelope.
a | a point |
b | another point |
true
if the extents intersect
|
inline |
Check if the point p intersects (lies inside) the region of this Envelope.
other | the Coordinate to be tested |
|
static |
Test the point q
to see whether it intersects the Envelope defined by p1-p2
.
p1 | one extremal point of the envelope |
p2 | another extremal point of the envelope |
q | the point to test for intersection |
true
if q intersects the envelope p1-p2 Referenced by geos::operation::cluster::EnvelopeIntersectsClusterFinder::shouldJoin().
|
inlinestatic |
Test the envelope defined by p1-p2
for intersection with the envelope defined by q1-q2
.
p1 | one extremal point of the envelope P |
p2 | another extremal point of the envelope P |
q1 | one extremal point of the envelope Q |
q2 | another extremal point of the envelope Q |
true
if Q intersects P
|
inline |
|
inline |
bool geos::geom::Envelope::isfinite | ( | ) | const |
Returns true
if all the extents of the Envelope are finite and defined (not NaN)
true
if envelope has only finite/valid extents, false
otherwise
|
inline |
std::string geos::geom::Envelope::toString | ( | ) | const |
Returns a string
of the form Env[minx:maxx,miny:maxy]
.
string
of the form Env[minx:maxx,miny:maxy]
void geos::geom::Envelope::translate | ( | double | transX, |
double | transY | ||
) |
Translates this envelope by given amounts in the X and Y direction.
transX | the amount to translate along the X axis |
transY | the amount to translate along the Y axis |
Strict weak ordering operator for Envelope This is the C++ equivalent of JTS's compareTo