Package com.esri.core.geometry
Class Envelope
- java.lang.Object
-
- com.esri.core.geometry.Geometry
-
- com.esri.core.geometry.Envelope
-
- All Implemented Interfaces:
Serializable
public class Envelope extends Geometry implements Serializable
An envelope is an axis-aligned rectangle.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.esri.core.geometry.Geometry
Geometry.GeometryAccelerationDegree, Geometry.GeometryType, Geometry.Type
-
-
Constructor Summary
Constructors Constructor Description Envelope()
Constructs an empty envelope.Envelope(double xmin, double ymin, double xmax, double ymax)
Constructs an envelope with the specified X and Y extents.Envelope(Envelope other)
Envelope(Envelope2D env2D)
Envelope(Point point)
Constructs an envelope that covers the given point.Envelope(Point center, double width, double height)
Creates an envelope by defining its center, width, and height.Envelope(VertexDescription vd)
Envelope(VertexDescription vd, Envelope2D env2D)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAttribute(int semantics)
Adds a new attribute to the Geometry.void
applyTransformation(Transformation2D transform)
Applies 2D affine transformation in XY plane.void
applyTransformation(Transformation3D transform)
Applies 3D affine transformation.void
assignVertexDescription(VertexDescription src)
double
calculateArea2D()
Calculates the area of the geometry.double
calculateLength2D()
Calculates the length of the geometry.void
centerAt(double x, double y)
Moves the Envelope to the new center.void
centerAt(Point c)
Centers the envelope around the specified point preserving the envelope's width and height.void
centerAt(Point c, double w, double h)
Sets the envelope's corners to be centered around the specified point, using its center, width, and height.boolean
contains(Envelope env)
Checks if this envelope contains (covers) other envelope.boolean
contains(Point p)
Checks if this envelope contains the specified point.boolean
contains(Point2D p)
Checks if this envelope contains the specified point.void
copyTo(Geometry dst)
Copies this geometry to another geometry of the same type.Geometry
createInstance()
Creates an instance of an empty geometry of the same type.void
dropAllAttributes()
Drops all attributes from the Geometry with exception of POSITON.void
dropAttribute(int semantics)
Drops an attribute from the Geometry.boolean
equals(Geometry _other, double tol)
Returns TRUE when this geometry has exactly same type, properties, and coordinates as the other geometry for the given tolerance.boolean
equals(Object _other)
Returns true when this geometry has exactly same type, properties, and coordinates as the other geometry.long
estimateMemorySize()
Returns an estimate of this object size in bytes.Geometry
getBoundary()
Point
getCenter()
Returns the center point of the envelope.void
getCenter(Point point_out)
Point2D
getCenter2D()
double
getCenterX()
The x-coordinate of the center of the envelope.Point2D
getCenterXY()
double
getCenterY()
The y-coordinate of center of the envelope.VertexDescription
getDescription()
Gets the VertexDescription of this geometry.int
getDimension()
Returns the topological dimension of the geometry object based on the geometry's type.double
getHeight()
The height of the envelope.Point
getLowerLeft()
Returns the envelope's lower left corner point.Point
getLowerRight()
Returns the envelope's lower right corner point.Geometry.Type
getType()
Returns the geometry type.Point
getUpperLeft()
Returns the envelope's upper left corner point.Point
getUpperRight()
Returns the envelope's upper right corner point.double
getWidth()
The width of the envelope.double
getXMax()
Returns the X coordinate of the right corners of the envelope.double
getXMin()
Returns the X coordinate of the left corners of the envelope.double
getYMax()
Returns the Y coordinate of the top corners of the envelope.double
getYMin()
Returns the Y coordinate of the bottom corners of the envelope.boolean
hasAttribute(int semantics)
A shortcut for getDescription().hasAttribute()int
hashCode()
Returns a hash code value for this envelope.void
inflate(double dx, double dy)
Changes the dimensions of the envelope while preserving the center.boolean
intersect(Envelope other)
Intersects this envelope with other envelope and stores the result in this envelope.boolean
isEmpty()
Indicates whether this envelope contains any points.boolean
isIntersecting(Envelope other)
Returns true if the envelope and the other given envelope intersect.boolean
isIntersecting(Envelope2D other)
void
merge(Envelope other)
Merges this envelope with the extent of the given envelope.void
merge(Envelope2D other)
void
merge(Point point)
Merges this envelope with the point.void
merge(Point2D pt)
void
mergeVertexDescription(VertexDescription src)
void
normalize()
Normalizes envelopes if the minimum dimension is larger than the maximum dimension.void
offset(double dx, double dy)
Offsets the envelope by the specified distances along x and y-coordinates.void
queryCoordinates(Point2D[] dst)
void
queryCorner(int index, Point2D ptDst)
void
queryCornerByVal(int index, Point ptDst)
Sets the point's coordinates to the coordinates of the envelope at the given corner.void
queryEnvelope(Envelope env)
Returns the axis aligned bounding box of the geometry.void
queryEnvelope2D(Envelope2D env)
void
queryEnvelope3D(Envelope3D env)
void
queryInterval(int semantics, int ordinate, Envelope1D interval)
void
reaspect(double arWidth, double arHeight)
Re-aspects this envelope to fit within the specified width and height.void
replaceNaNs(int semantics, double value)
void
setCoords(double xmin, double ymin, double xmax, double ymax)
Sets the 2-dimensional extents of the envelope.void
setCoords(Point[] points)
Sets the envelope from the array of points.void
setEmpty()
Removes all points from this geometry.void
setInterval(int semantics, int ordinate, double vmin, double vmax)
void
setInterval(int semantics, int ordinate, Envelope1D env)
void
setXMax(double x)
Sets the right X coordinate.void
setXMin(double x)
Sets the left X coordinate.void
setYMax(double y)
Sets the top Y coordinate.void
setYMin(double y)
Sets the bottom Y coordinate.-
Methods inherited from class com.esri.core.geometry.Geometry
_getImpl, _mergeVertexDescriptionImpl, addID, addM, addZ, asCursor, copy, create, estimateMemorySize, getDimensionFromType, getGeometryType, hasID, hasM, hasZ, isArea, isLinear, isMultiPath, isMultiVertex, isPoint, isSegment, queryInterval, queryLooseEnvelope2D, queryLooseEnvelope3D, toString, transformAttribute, vertexCount
-
-
-
-
Constructor Detail
-
Envelope
public Envelope(Point center, double width, double height)
Creates an envelope by defining its center, width, and height.- Parameters:
center
- The center point of the envelope.width
- The width of the envelope.height
- The height of the envelope.
-
Envelope
public Envelope(Envelope2D env2D)
-
Envelope
public Envelope(VertexDescription vd)
-
Envelope
public Envelope(VertexDescription vd, Envelope2D env2D)
-
Envelope
public Envelope()
Constructs an empty envelope.
-
Envelope
public Envelope(Point point)
Constructs an envelope that covers the given point. The coordinates of the point are used to set the extent of the envelope.- Parameters:
point
- The point that the envelope covers.
-
Envelope
public Envelope(Envelope other)
-
Envelope
public Envelope(double xmin, double ymin, double xmax, double ymax)
Constructs an envelope with the specified X and Y extents.- Parameters:
xmin
- The minimum x-coordinate of the envelope.ymin
- The minimum y-coordinate of the envelope.xmax
- The maximum x-coordinate of the envelope.ymax
- The maximum y-coordinate of the envelope.
-
-
Method Detail
-
setCoords
public void setCoords(double xmin, double ymin, double xmax, double ymax)
Sets the 2-dimensional extents of the envelope.- Parameters:
xmin
- The minimum x-coordinate of the envelope.ymin
- The minimum y-coordinate of the envelope.xmax
- The maximum x-coordinate of the envelope.ymax
- The maximum y-coordinate of the envelope.
-
setCoords
public void setCoords(Point[] points)
Sets the envelope from the array of points. The result envelope is a bounding box of all the points in the array. If the array has zero length, the envelope will be empty.- Parameters:
points
- The point array.
-
setEmpty
public void setEmpty()
Removes all points from this geometry.
-
isEmpty
public boolean isEmpty()
Indicates whether this envelope contains any points.
-
getWidth
public double getWidth()
The width of the envelope.- Returns:
- The width of the envelope.
-
getHeight
public double getHeight()
The height of the envelope.- Returns:
- The height of the envelope.
-
getCenterX
public double getCenterX()
The x-coordinate of the center of the envelope.- Returns:
- The x-coordinate of the center of the envelope.
-
getCenterY
public double getCenterY()
The y-coordinate of center of the envelope.- Returns:
- The y-coordinate of center of the envelope.
-
getCenterXY
public Point2D getCenterXY()
-
getCenter
public void getCenter(Point point_out)
-
merge
public void merge(Point2D pt)
-
merge
public void merge(Envelope other)
Merges this envelope with the extent of the given envelope. If this envelope is empty, the coordinates of the given envelope are assigned. If the given envelope is empty, this envelope is unchanged.- Parameters:
other
- The envelope to merge.
-
merge
public void merge(Point point)
Merges this envelope with the point. The boundary of the envelope is increased to include the point. If the envelope is empty, the coordinates of the point to merge are assigned. If the point is empty, the original envelope is unchanged.- Parameters:
point
- The point to be merged.
-
merge
public void merge(Envelope2D other)
-
setInterval
public void setInterval(int semantics, int ordinate, double vmin, double vmax)
-
reaspect
public void reaspect(double arWidth, double arHeight)
Re-aspects this envelope to fit within the specified width and height.- Parameters:
arWidth
- The width within which to fit the envelope.arHeight
- The height within which to fit the envelope.
-
inflate
public void inflate(double dx, double dy)
Changes the dimensions of the envelope while preserving the center. New width is Width + 2 * dx, new height is Height + 2 * dy. If the result envelope width or height becomes negative, the envelope is set to be empty.- Parameters:
dx
- The inflation along the x-axis.dy
- The inflation along the y-axis.
-
applyTransformation
public void applyTransformation(Transformation2D transform)
Description copied from class:Geometry
Applies 2D affine transformation in XY plane.- Specified by:
applyTransformation
in classGeometry
- Parameters:
transform
- The affine transformation to be applied to this geometry.
-
applyTransformation
public void applyTransformation(Transformation3D transform)
Description copied from class:Geometry
Applies 3D affine transformation. Adds Z attribute if it is missing.- Specified by:
applyTransformation
in classGeometry
- Parameters:
transform
- The affine transformation to be applied to this geometry.
-
copyTo
public void copyTo(Geometry dst)
Description copied from class:Geometry
Copies this geometry to another geometry of the same type. The result geometry is an exact copy.
-
createInstance
public Geometry createInstance()
Description copied from class:Geometry
Creates an instance of an empty geometry of the same type.- Specified by:
createInstance
in classGeometry
- Returns:
- An empty geometry
-
calculateArea2D
public double calculateArea2D()
Description copied from class:Geometry
Calculates the area of the geometry. If the spatial reference is a Geographic Coordinate System (WGS84) then the 2D area calculation is defined in angular units.- Overrides:
calculateArea2D
in classGeometry
- Returns:
- A double value representing the 2D area of the geometry.
-
calculateLength2D
public double calculateLength2D()
Description copied from class:Geometry
Calculates the length of the geometry. If the spatial reference is a Geographic Coordinate System (a system where coordinates are defined using angular units such as longitude and latitude) then the 2D distance calculation is returned in angular units. In cases where length must be calculated on a Geographic Coordinate System consider the using the geodeticLength method on theGeometryEngine
- Overrides:
calculateLength2D
in classGeometry
- Returns:
- A double value representing the 2D length of the geometry.
-
getType
public Geometry.Type getType()
Description copied from class:Geometry
Returns the geometry type.
-
getDimension
public int getDimension()
Description copied from class:Geometry
Returns the topological dimension of the geometry object based on the geometry's type.Returns 0 for point and multipoint.
Returns 1 for lines and polylines.
Returns 2 for polygons and envelopes
Returns 3 for objects with volume
- Specified by:
getDimension
in classGeometry
- Returns:
- Returns the integer value of the dimension of geometry.
-
estimateMemorySize
public long estimateMemorySize()
Description copied from class:Geometry
Returns an estimate of this object size in bytes.This estimate doesn't include the size of the
VertexDescription
object because instances ofVertexDescription
are shared among geometry objects.- Specified by:
estimateMemorySize
in classGeometry
- Returns:
- Returns an estimate of this object size in bytes.
-
queryEnvelope
public void queryEnvelope(Envelope env)
Description copied from class:Geometry
Returns the axis aligned bounding box of the geometry.- Specified by:
queryEnvelope
in classGeometry
- Parameters:
env
- The envelope to return the result in.
-
queryEnvelope2D
public void queryEnvelope2D(Envelope2D env)
- Specified by:
queryEnvelope2D
in classGeometry
-
queryEnvelope3D
public void queryEnvelope3D(Envelope3D env)
- Specified by:
queryEnvelope3D
in classGeometry
-
queryInterval
public void queryInterval(int semantics, int ordinate, Envelope1D interval)
- Specified by:
queryInterval
in classGeometry
-
setInterval
public void setInterval(int semantics, int ordinate, Envelope1D env)
-
queryCoordinates
public void queryCoordinates(Point2D[] dst)
-
queryCornerByVal
public void queryCornerByVal(int index, Point ptDst)
Sets the point's coordinates to the coordinates of the envelope at the given corner.- Parameters:
index
- The index of the envelope's corners from 0 to 3.0 = lower left corner
1 = top-left corner
2 = top right corner
3 = bottom right corner
ptDst
- The point whose coordinates are used to set the envelope's coordinate at a specified corner.
-
queryCorner
public void queryCorner(int index, Point2D ptDst)
-
isIntersecting
public boolean isIntersecting(Envelope2D other)
-
intersect
public boolean intersect(Envelope other)
Intersects this envelope with other envelope and stores the result in this envelope. The operation performs intersection independently on all attributes, but the xy coordinates take precedence. That is, if the result envelope xy coordinates do not intersect the result will be empty envelope.- Parameters:
other
- The envelope to intersect with.- Returns:
- Returns true if this and other envelopes intersect, and false, if the result is empty envelope. Note, the operation intersects all attributes, but only the position (xy) affects the returned boolean value. The attributes absent in this or other will be added and intersected using default values.
-
isIntersecting
public boolean isIntersecting(Envelope other)
Returns true if the envelope and the other given envelope intersect.- Parameters:
other
- The envelope to with which to test intersection.- Returns:
- Returns true if the two envelopes intersect.
-
centerAt
public void centerAt(Point c, double w, double h)
Sets the envelope's corners to be centered around the specified point, using its center, width, and height.- Parameters:
c
- The point around which to center the envelope.w
- The width to be set for the envelope.h
- The height to be set for this envelope.
-
centerAt
public void centerAt(double x, double y)
Moves the Envelope to the new center.- Parameters:
x
- The X coordinate of new center.y
- The Y coordinate of new center.
-
offset
public void offset(double dx, double dy)
Offsets the envelope by the specified distances along x and y-coordinates.- Parameters:
dx
- The X offset to be applied.dy
- The Y offset to be applied.
-
normalize
public void normalize()
Normalizes envelopes if the minimum dimension is larger than the maximum dimension.
-
getCenter2D
public Point2D getCenter2D()
-
getCenter
public Point getCenter()
Returns the center point of the envelope.- Returns:
- The center point of the envelope.
-
centerAt
public void centerAt(Point c)
Centers the envelope around the specified point preserving the envelope's width and height.- Parameters:
c
- The new center point.
-
getLowerLeft
public Point getLowerLeft()
Returns the envelope's lower left corner point.- Returns:
- Returns the lower left corner point.
-
getUpperRight
public Point getUpperRight()
Returns the envelope's upper right corner point.- Returns:
- Returns the upper right corner point.
-
getLowerRight
public Point getLowerRight()
Returns the envelope's lower right corner point.- Returns:
- Returns the lower right corner point.
-
getUpperLeft
public Point getUpperLeft()
Returns the envelope's upper left corner point.- Returns:
- Returns the upper left corner point.
-
contains
public boolean contains(Point p)
Checks if this envelope contains the specified point.- Parameters:
p
- The Point to be tested for coverage.- Returns:
- Returns true if this envelope contains the specified point.
-
contains
public boolean contains(Point2D p)
Checks if this envelope contains the specified point.- Parameters:
p
- The Point to be tested for coverage.- Returns:
- Returns true if this envelope contains the specified point.
-
contains
public boolean contains(Envelope env)
Checks if this envelope contains (covers) other envelope.- Parameters:
env
- The envelope to be tested for coverage.- Returns:
- true if this envelope contains (covers) the specified envelope.
-
equals
public boolean equals(Object _other)
Returns true when this geometry has exactly same type, properties, and coordinates as the other geometry.
-
equals
public boolean equals(Geometry _other, double tol)
Returns TRUE when this geometry has exactly same type, properties, and coordinates as the other geometry for the given tolerance.
-
hashCode
public int hashCode()
Returns a hash code value for this envelope.
-
getXMin
public final double getXMin()
Returns the X coordinate of the left corners of the envelope.- Returns:
- The X coordinate of the left corners.
-
getYMin
public final double getYMin()
Returns the Y coordinate of the bottom corners of the envelope.- Returns:
- The Y coordinate of the bottom corners.
-
getXMax
public final double getXMax()
Returns the X coordinate of the right corners of the envelope.- Returns:
- The X coordinate of the right corners.
-
getYMax
public final double getYMax()
Returns the Y coordinate of the top corners of the envelope.- Returns:
- The Y coordinate of the top corners.
-
setXMin
public void setXMin(double x)
Sets the left X coordinate.- Parameters:
x
- The X coordinate of the left corner
-
setXMax
public void setXMax(double x)
Sets the right X coordinate.- Parameters:
x
- The X coordinate of the right corner.
-
setYMin
public void setYMin(double y)
Sets the bottom Y coordinate.- Parameters:
y
- the Y coordinate of the bottom corner.
-
setYMax
public void setYMax(double y)
Sets the top Y coordinate.- Parameters:
y
- The Y coordinate of the top corner.
-
getBoundary
public Geometry getBoundary()
- Specified by:
getBoundary
in classGeometry
-
replaceNaNs
public void replaceNaNs(int semantics, double value)
- Specified by:
replaceNaNs
in classGeometry
-
getDescription
public VertexDescription getDescription()
Description copied from class:Geometry
Gets the VertexDescription of this geometry.- Specified by:
getDescription
in classGeometry
- Returns:
- The VertexDescription
-
assignVertexDescription
public void assignVertexDescription(VertexDescription src)
- Specified by:
assignVertexDescription
in classGeometry
-
mergeVertexDescription
public void mergeVertexDescription(VertexDescription src)
- Specified by:
mergeVertexDescription
in classGeometry
-
hasAttribute
public boolean hasAttribute(int semantics)
Description copied from class:Geometry
A shortcut for getDescription().hasAttribute()- Specified by:
hasAttribute
in classGeometry
- Parameters:
semantics
- The type of attribute to check for as specified byVertexDescription.Semantics
- Returns:
- Returns true if the geometry has the specified attribute
-
addAttribute
public void addAttribute(int semantics)
Description copied from class:Geometry
Adds a new attribute to the Geometry.- Specified by:
addAttribute
in classGeometry
- Parameters:
semantics
- The type of attribute to add as specified byVertexDescription.Semantics
-
dropAttribute
public void dropAttribute(int semantics)
Description copied from class:Geometry
Drops an attribute from the Geometry. Dropping the attribute is equivalent to setting the attribute to the default value for each vertex, However, it is faster and the result Geometry has smaller memory footprint and smaller size when persisted.- Specified by:
dropAttribute
in classGeometry
- Parameters:
semantics
- The type of attribute to drop as specified byVertexDescription.Semantics
-
dropAllAttributes
public void dropAllAttributes()
Description copied from class:Geometry
Drops all attributes from the Geometry with exception of POSITON.- Specified by:
dropAllAttributes
in classGeometry
-
-