public abstract class AbstractGeometry extends Object implements Geometry
GeometryCollections would be useful,
GeometryCollections are not supported as arguments to binary
predicates or the relate
method.
Point, LineString, or
Polygon will be returned if the result contains a single
element; otherwise, a MultiPoint, MultiLineString,
or MultiPolygon will be returned. If the result is
heterogeneous a GeometryCollection will be returned.
Because it is not clear at this time what semantics for set-theoretic
methods involving GeometryCollections would be useful,
GeometryCollections
are not supported as arguments to the set-theoretic methods.
Geometry.
The SFS does not specify an unambiguous representation of a given point set
returned from a spatial analysis method. One goal of JTS is to make this
specification precise and unambiguous. JTS uses a canonical form for
Geometrys returned from overlay methods. The canonical
form is a Geometry which is simple and noded:
isSimple.
LineStrings. It
means that all intersection points on LineStrings will be
present as endpoints of LineStrings in the result.
Geometry
s. These new points arise from intersections between line segments in the
edges of the input Geometrys. In the general case it is not
possible to represent constructed points exactly. This is due to the fact
that the coordinates of an intersection point may contain twice as many bits
of precision as the coordinates of the input line segments. In order to
represent these constructed points explicitly, JTS must truncate them to fit
the PrecisionModel. Unfortunately, truncating coordinates moves them slightly. Line segments which would not be coincident in the exact result may become coincident in the truncated representation. This in turn leads to "topology collapses" -- situations where a computed element has a lower dimension than it would in the exact result.
When JTS detects topology collapses during the computation of spatial analysis methods, it will throw an exception. If possible the exception will report the location of the collapse.
equals(2,Geometry) method.
This implements a comparison based on exact, structural pointwise
equality.
The equals(Object) is a synonym for this method,
to provide structural equality semantics for
use in Java collections.
It is important to note that structural pointwise equality
is easily affected by things like
ring order and component order. In many situations
it will be desirable to normalize geometries before
comparing them (using the #norm()
or normalize() methods).
equalsNorm(Geometry) is provided
as a convenience method to compute equality over
normalized geometries, but it is expensive to use.
Finally, equalsExact(Geometry, double)
allows using a tolerance value for point comparison.
equalsTopo(Geometry) method.
It implements the SFS definition of point-set equality
defined in terms of the DE-9IM matrix.
To support the SFS naming convention, the method
equals(Geometry) is also provided as a synonym.
However, due to the potential for confusion with equals(Object)
its use is discouraged.
Since equals(Object) and hashCode() are overridden,
Geometries can be used effectively in Java collections.
| Constructor and Description |
|---|
AbstractGeometry() |
| Modifier and Type | Method and Description |
|---|---|
Geometry |
buffer(double distance)
Computes a buffer area around this geometry having the given width.
|
Geometry |
buffer(double distance,
int quadrantSegments)
Computes a buffer area around this geometry having the given width and with
a specified accuracy of approximation for circular arcs.
|
Geometry |
buffer(double distance,
int quadrantSegments,
int endCapStyle)
Computes a buffer area around this geometry having the given
width and with a specified accuracy of approximation for circular arcs,
and using a specified end cap style.
|
protected void |
checkNotGeometryCollection(Geometry geometry)
Throws an exception if
g's class is GeometryCollection
. |
AbstractGeometry |
clone()
Creates and returns a full copy of this
Geometry object
(including all coordinates contained by it). |
protected int |
compare(Collection a,
Collection b)
Returns the first non-zero result of
compareTo encountered as
the two Collections are iterated over. |
int |
compareTo(Object other)
Returns whether this
Geometry is greater than, equal to,
or less than another Geometry. |
abstract int |
compareToSameClass(Geometry o)
Returns whether this
Geometry is greater than, equal to,
or less than another Geometry having the same class. |
protected abstract BoundingBox |
computeBoundingBox()
Returns the minimum and maximum x and y values in this
Geometry
, or a null BoundingBoxDoubleGf if this Geometry is empty. |
boolean |
contains(Geometry g)
Tests whether this geometry contains the
argument geometry.
|
boolean |
containsProperly(Geometry geometry) |
<V extends Geometry> |
convert(GeometryFactory geometryFactory)
Convert the geometry to the requried geometry factory.
|
<V extends Geometry> |
convert(GeometryFactory geometryFactory,
int axisCount) |
Geometry |
convexHull()
Computes the smallest convex
Polygon that contains all the
points in the Geometry. |
boolean |
coveredBy(Geometry g)
Tests whether this geometry is covered by the
argument geometry.
|
boolean |
covers(Geometry g)
Tests whether this geometry covers the
argument geometry.
|
static int[] |
createVertexId(int[] partId,
int vertexIndex) |
boolean |
crosses(Geometry g)
Tests whether this geometry crosses the
argument geometry.
|
Geometry |
difference(Geometry other)
Computes a
Geometry representing the closure of the point-set
of the points contained in this Geometry that are not contained in
the other Geometry. |
boolean |
disjoint(Geometry g)
Tests whether this geometry is disjoint from the argument geometry.
|
double |
distance(Geometry geometry)
Returns the minimum distance between this
Geometry
and another Geometry. |
protected abstract boolean |
doEquals(int axisCount,
Geometry geometry) |
boolean |
envelopeCovers(Geometry geometry) |
boolean |
envelopesIntersect(Geometry geometry) |
boolean |
equal(Point a,
Point b,
double tolerance) |
boolean |
equals(Geometry g)
Tests whether this geometry is
topologically equal to the argument geometry.
|
boolean |
equals(int axisCount,
Geometry geometry) |
boolean |
equals(Object other)
Tests whether this geometry is structurally and numerically equal
to a given
Object. |
boolean |
equalsExact(Geometry geometry) |
abstract boolean |
equalsExact(Geometry other,
double tolerance)
Returns true if the two
Geometrys are exactly equal,
up to a specified distance tolerance. |
boolean |
equalsNorm(Geometry g)
Tests whether two geometries are exactly equal
in their normalized forms.
|
boolean |
equalsTopo(Geometry g)
Tests whether this geometry is topologically equal to the argument geometry
as defined by the SFS
equals predicate. |
Iterable<Geometry> |
geometries() |
double |
getArea()
Returns the area of this
Geometry. |
int |
getAxisCount() |
abstract Geometry |
getBoundary()
Returns the boundary, or an empty geometry of appropriate dimension
if this
Geometry is empty. |
abstract int |
getBoundaryDimension()
Returns the dimension of this
Geometrys inherent boundary. |
BoundingBox |
getBoundingBox()
Gets an
BoundingBoxDoubleGf containing
the minimum and maximum x and y values in this Geometry. |
Point |
getCentroid()
Computes the centroid of this
Geometry. |
int |
getClassSortIndex() |
CoordinateSystem |
getCoordinateSystem() |
DataType |
getDataType() |
abstract int |
getDimension()
Returns the dimension of this geometry.
|
Geometry |
getEnvelope()
Gets a Geometry representing the boundingBox (bounding box) of
this
Geometry. |
<V extends Geometry> |
getGeometries() |
<V extends Geometry> |
getGeometries(Class<V> geometryClass) |
<V extends Geometry> |
getGeometry(int partIndex)
Returns an element
Geometry from a GeometryCollection
(or this, if the geometry is not a collection). |
<V extends Geometry> |
getGeometryComponents(Class<V> geometryClass)
Differs from
Geometry.getGeometries(Class) in that it will return matching Polygon.rings() |
int |
getGeometryCount()
Returns the number of
Geometrys in a GeometryCollection
(or 1, if the geometry is not a collection). |
GeometryFactory |
getGeometryFactory()
Gets the geometryFactory which contains the context in which this geometry was created.
|
String |
getGeometryType()
Returns the name of this Geometry's actual class.
|
Point |
getInteriorPoint()
Computes an interior point of this
Geometry. |
double |
getLength()
Returns the length of this
Geometry. |
protected GeometryFactory |
getNonZeroGeometryFactory(GeometryFactory geometryFactory) |
abstract Point |
getPoint()
Returns a vertex of this
Geometry
(usually, but not necessarily, the first one). |
int |
getSrid()
Returns the ID of the Spatial Reference System used by the
Geometry. |
Object |
getUserData()
Gets the user data object for this geometry, if any.
|
static int |
getVertexIndex(int[] index) |
int |
hashCode()
Gets a hash code for the Geometry.
|
boolean |
hasInvalidXyCoordinates() |
protected static boolean |
hasNonEmptyElements(Geometry... geometries)
Returns true if the array contains any non-empty
Geometrys. |
protected static boolean |
hasNullElements(Object[] array)
Returns true if the array contains any
null elements. |
Geometry |
intersection(Geometry other)
Computes a
Geometry representing the point-set which is
common to both this Geometry and the other Geometry. |
boolean |
intersects(Geometry g)
Tests whether this geometry intersects the argument geometry.
|
protected boolean |
isAnyTargetComponentInTest(Geometry testGeom)
Tests whether any representative of the target geometry
intersects the test geometry.
|
abstract boolean |
isEmpty()
Tests whether the set of points covered by this
Geometry is
empty. |
protected boolean |
isEquivalentClass(Geometry other)
Returns whether the two
Geometrys are equal, from the point
of view of the equalsExact method. |
protected boolean |
isGeometryCollection()
Tests whether this is an instance of a general
GeometryCollection,
rather than a homogeneous subclass. |
boolean |
isRectangle() |
boolean |
isSimple()
Tests whether this
Geometry is simple. |
boolean |
isValid()
Tests whether this
Geometry
is topologically valid, according to the OGC SFS specification. |
boolean |
isWithinDistance(Geometry geom,
double distance)
Tests whether the distance from this
Geometry
to another is less than or equal to a specified value. |
abstract Geometry |
normalize()
Converts this
Geometry to normal form (or
canonical form ). |
boolean |
overlaps(Geometry g)
Tests whether this geometry overlaps the
specified geometry.
|
IntersectionMatrix |
relate(Geometry g)
Returns the DE-9IM
IntersectionMatrix for the two Geometrys. |
boolean |
relate(Geometry g,
String intersectionPattern)
Tests whether the elements in the DE-9IM
IntersectionMatrix for the two Geometrys match the elements in intersectionPattern. |
abstract Geometry |
reverse()
Computes a new geometry which has all component coordinate sequences
in reverse order (opposite orientation) to this one.
|
void |
setUserData(Object userData)
A simple scheme for applications to add their own custom data to a Geometry.
|
static int[] |
setVertexIndex(int[] vertexId,
int vertexIndex) |
Geometry |
symDifference(Geometry other)
Computes a
Geometry which are not
contained in the other Geometry,
with the points in the other Geometry not contained in this
Geometry. |
<G extends Geometry> |
toClockwise() |
<G extends Geometry> |
toCounterClockwise() |
String |
toString() |
boolean |
touches(Geometry g)
Tests whether this geometry touches the
argument geometry.
|
String |
toWkt()
Returns the Extended Well-known Text representation of this
Geometry. |
Geometry |
union()
Computes the union of all the elements of this geometry.
|
Geometry |
union(Geometry other)
Computes a
Geometry representing the point-set
which is contained in both this
Geometry and the other Geometry. |
boolean |
within(Geometry g)
Tests whether this geometry is within the
specified geometry.
|
finalize, getClass, notify, notifyAll, wait, wait, waitappendVertex, copy, deleteVertex, getPointWithin, getSegment, getToVertex, getVertex, getVertexCount, insertVertex, intersects, move, moveVertex, prepare, segments, verticespublic static int[] createVertexId(int[] partId,
int vertexIndex)
public static int getVertexIndex(int[] index)
protected static boolean hasNonEmptyElements(Geometry... geometries)
Geometrys.geometries - an array of Geometrys; no elements may be
nulltrue if any of the Geometrys
isEmpty methods return falseprotected static boolean hasNullElements(Object[] array)
null elements.array - an array to validatetrue if any of arrays elements are
nullpublic static int[] setVertexIndex(int[] vertexId,
int vertexIndex)
public Geometry buffer(double distance)
abs(distance).
Mathematically-exact buffer area boundaries can contain circular arcs.
To represent these arcs using linear geometry they must be approximated with line segments.
The buffer geometry is constructed using 8 segments per quadrant to approximate
the circular arcs.
The end cap style is CAP_ROUND.
The buffer operation always returns a polygonal result. The negative or
zero-distance buffer of lines and points is always an empty Polygon.
This is also the result for the buffers of degenerate (zero-area) polygons.
buffer in interface Geometrydistance - the width of the buffer (may be positive, negative or 0)TopologyException - if a robustness error occursbuffer(double, int),
buffer(double, int, int)public Geometry buffer(double distance, int quadrantSegments)
Mathematically-exact buffer area boundaries can contain circular arcs.
To represent these arcs
using linear geometry they must be approximated with line segments. The
quadrantSegments argument allows controlling the accuracy of
the approximation by specifying the number of line segments used to
represent a quadrant of a circle
The buffer operation always returns a polygonal result. The negative or
zero-distance buffer of lines and points is always an empty Polygon.
This is also the result for the buffers of degenerate (zero-area) polygons.
buffer in interface Geometrydistance - the width of the buffer (may be positive, negative or 0)quadrantSegments - the number of line segments used to represent a quadrant of a
circleTopologyException - if a robustness error occursbuffer(double),
buffer(double, int, int)public Geometry buffer(double distance, int quadrantSegments, int endCapStyle)
Mathematically-exact buffer area boundaries can contain circular arcs.
To represent these arcs using linear geometry they must be approximated with line segments.
The quadrantSegments argument allows controlling the
accuracy of the approximation
by specifying the number of line segments used to represent a quadrant of a circle
The end cap style specifies the buffer geometry that will be created at the ends of linestrings. The styles provided are:
Buffer.CAP_ROUND - (default) a semi-circle
Buffer.CAP_BUTT - a straight line perpendicular to the end segment
Buffer.CAP_SQUARE - a half-square
The buffer operation always returns a polygonal result. The negative or
zero-distance buffer of lines and points is always an empty Polygon.
This is also the result for the buffers of degenerate (zero-area) polygons.
buffer in interface Geometrydistance - the width of the buffer (may be positive, negative or 0)quadrantSegments - the number of line segments used to represent a quadrant of a circleendCapStyle - the end cap style to useTopologyException - if a robustness error occursbuffer(double),
buffer(double, int),
Bufferprotected void checkNotGeometryCollection(Geometry geometry)
g's class is GeometryCollection
. (Its subclasses do not trigger an exception).geometry - the Geometry to checkIllegalArgumentException - if g is a GeometryCollection
but not one of its subclassespublic AbstractGeometry clone()
Geometry object
(including all coordinates contained by it).
Subclasses are responsible for overriding this method and copying
their internal data. Overrides should call this method first.protected int compare(Collection a, Collection b)
compareTo encountered as
the two Collections are iterated over. If, by the time one of
the iterations is complete, no non-zero result has been encountered,
returns 0 if the other iteration is also complete. If b
completes before a, a positive number is returned; if a
before b, a negative number.a - a Collection of Comparablesb - a Collection of ComparablescompareTo result, if any;
otherwise, zeropublic int compareTo(Object other)
Geometry is greater than, equal to,
or less than another Geometry. If their classes are different, they are compared using the following ordering:
Geometrys have the same class, their first
elements are compared. If those are the same, the second elements are
compared, etc.compareTo in interface GeometrycompareTo in interface Comparable<Object>other - a Geometry with which to compare this Geometryo, as
defined in "Normal Form For Geometry" in the JTS Technical
Specificationspublic abstract int compareToSameClass(Geometry o)
Geometry is greater than, equal to,
or less than another Geometry having the same class.compareToSameClass in interface Geometryo - a Geometry having the same class as this Geometryo, as
defined in "Normal Form For Geometry" in the JTS Technical
Specificationsprotected abstract BoundingBox computeBoundingBox()
Geometry
, or a null BoundingBoxDoubleGf if this Geometry is empty.
Unlike getEnvelopeInternal, this method calculates the BoundingBoxDoubleGf
each time it is called; getEnvelopeInternal caches the result
of this method.Geometrys bounding box; if the Geometry
is empty, BoundingBoxDoubleGf#isNull will return truepublic boolean contains(Geometry g)
The contains predicate has the following equivalent definitions:
[T*****FF*]
g.within(this) = true
contains is the converse of within(com.revolsys.jts.geom.Geometry) )
B.contains(A) = false.
(As a concrete example, take A to be a LineString which lies in the boundary of a Polygon B.)
For a predicate with similar behaviour but avoiding
this subtle limitation, see covers(com.revolsys.jts.geom.Geometry).contains in interface Geometryg - the Geometry with which to compare this Geometrytrue if this Geometry contains gGeometry.within(com.revolsys.jts.geom.Geometry),
Geometry.covers(com.revolsys.jts.geom.Geometry)public boolean containsProperly(Geometry geometry)
containsProperly in interface Geometrypublic <V extends Geometry> V convert(GeometryFactory geometryFactory)
Geometrypublic <V extends Geometry> V convert(GeometryFactory geometryFactory, int axisCount)
public Geometry convexHull()
Polygon that contains all the
points in the Geometry. This obviously applies only to Geometry
s which contain 3 or more points; the results for degenerate cases are
specified as follows:
Number of Points in argument Geometry |
Geometry class of result |
|---|---|
| 0 | empty GeometryCollection |
| 1 | Point |
| 2 | LineString |
| 3 or more | Polygon |
convexHull in interface GeometryGeometry'
s pointspublic boolean coveredBy(Geometry g)
The coveredBy predicate has the following equivalent definitions:
[T*F**F***]
[*TF**F***]
[**FT*F***]
[**F*TF***]
g.covers(this) = true
coveredBy is the converse of covers(com.revolsys.jts.geom.Geometry))
false.
This predicate is similar to within(com.revolsys.jts.geom.Geometry),
but is more inclusive (i.e. returns true for more cases).
coveredBy in interface Geometryg - the Geometry with which to compare this Geometrytrue if this Geometry is covered by gGeometry.within(com.revolsys.jts.geom.Geometry),
Geometry.covers(com.revolsys.jts.geom.Geometry)public boolean covers(Geometry g)
The covers predicate has the following equivalent definitions:
[T*****FF*]
[*T****FF*]
[***T**FF*]
[****T*FF*]
g.coveredBy(this) = true
covers is the converse of coveredBy(com.revolsys.jts.geom.Geometry))
false.
This predicate is similar to contains(com.revolsys.jts.geom.Geometry),
but is more inclusive (i.e. returns true for more cases).
In particular, unlike contains it does not distinguish between
points in the boundary and in the interior of geometries.
For most situations, covers should be used in preference to contains.
As an added benefit, covers is more amenable to optimization,
and hence should be more performant.
covers in interface Geometryg - the Geometry with which to compare this Geometrytrue if this Geometry covers gGeometry.contains(com.revolsys.jts.geom.Geometry),
Geometry.coveredBy(com.revolsys.jts.geom.Geometry)public boolean crosses(Geometry g)
The crosses predicate has the following equivalent definitions:
[T*T******] (for P/L, P/A, and L/A situations)
[T*****T**] (for L/P, A/P, and A/L situations)
[0********] (for L/L situations)
false.
The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations. In order to make the relation symmetric, JTS extends the definition to apply to L/P, A/P and A/L situations as well.
public Geometry difference(Geometry other)
Geometry representing the closure of the point-set
of the points contained in this Geometry that are not contained in
the other Geometry.
If the result is empty, it is an atomic geometry with the dimension of the left-hand input.
Non-empty GeometryCollection arguments are not supported.
difference in interface Geometryother - the Geometry with which to compute the
differenceGeometry with
otherTopologyException - if a robustness error occursIllegalArgumentException - if either input is a non-empty GeometryCollectionpublic boolean disjoint(Geometry g)
The disjoint predicate has the following equivalent definitions:
[FF*FF****]
! g.intersects(this) = true
disjoint is the inverse of intersects)
disjoint in interface Geometryg - the Geometry with which to compare this Geometrytrue if the two Geometrys are
disjointGeometry.intersects(com.revolsys.jts.geom.BoundingBox)public double distance(Geometry geometry)
Geometry
and another Geometry.distance in interface Geometrygeometry - the Geometry from which to compute the distanceIllegalArgumentException - if g is nullprotected abstract boolean doEquals(int axisCount,
Geometry geometry)
public boolean envelopeCovers(Geometry geometry)
public boolean envelopesIntersect(Geometry geometry)
public boolean equals(Geometry g)
This method is included for backward compatibility reasons.
It has been superseded by the equalsTopo(Geometry) method,
which has been named to clearly denote its functionality.
This method should NOT be confused with the method
equals(Object), which implements
an exact equality comparison.
equals in interface Geometryg - the Geometry with which to compare this GeometryGeometrys are topologically equalequalsTopo(Geometry)public boolean equals(int axisCount,
Geometry geometry)
public boolean equals(Object other)
Object.
If the argument Object is not a Geometry,
the result is false.
Otherwise, the result is computed using
equals(2,Geometry).
This method is provided to fulfill the Java contract
for value-based object equality.
In conjunction with hashCode()
it provides semantics which are most useful
for using
Geometrys as keys and values in Java collections.
Note that to produce the expected result the input geometries should be in normal form. It is the caller's responsibility to perform this where required (using Geometry#norm() or {@link #normalize()} as appropriate).
equals in interface Geometryequals in class Objectother - the Object to compareequals(2,Geometry),
hashCode(),
#norm(),
normalize()public boolean equalsExact(Geometry geometry)
equalsExact in interface Geometrypublic abstract boolean equalsExact(Geometry other, double tolerance)
Geometrys are exactly equal,
up to a specified distance tolerance.
Two Geometries are exactly equal within a distance tolerance
if and only if:
GeometryFactory, the SRID,
or the userData fields.
To properly test equality between different geometries,
it is usually necessary to normalize() them first.
equalsExact in interface Geometryother - the Geometry with which to compare this Geometrytolerance - distance at or below which two Coordinates
are considered equaltrue if this and the other Geometry
have identical structure and point values, up to the distance tolerance.equals(2,Geometry),
normalize(),
#norm()public boolean equalsNorm(Geometry g)
equals(2,Geometry).
This method is relatively expensive to compute. For maximum performance, the client should instead perform normalization on the individual geometries at an appropriate point during processing.
equalsNorm in interface Geometryg - a Geometrypublic boolean equalsTopo(Geometry g)
equals predicate.
The SFS equals predicate has the following equivalent definitions:
T*F**FFF*
T*F **F FF*
equals(2,Geometry).equalsTopo in interface Geometryg - the Geometry with which to compare this Geometrytrue if the two Geometrys are topologically equalequals(2,Geometry)public Iterable<Geometry> geometries()
geometries in interface Geometrypublic double getArea()
Geometry.
Areal Geometries have a non-zero area.
They override this function to compute the area.
Others return 0.0public int getAxisCount()
getAxisCount in interface Geometrypublic abstract Geometry getBoundary()
Geometry is empty.
(In the case of zero-dimensional geometries, '
an empty GeometryCollection is returned.)
For a discussion of this function, see the OpenGIS Simple
Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
of a Geometry is a set of Geometries of the next lower dimension."getBoundary in interface GeometryGeometrypublic abstract int getBoundaryDimension()
Geometrys inherent boundary.getBoundaryDimension in interface GeometryDimension.FALSE if the boundary is the empty geometry.public BoundingBox getBoundingBox()
BoundingBoxDoubleGf containing
the minimum and maximum x and y values in this Geometry.
If the geometry is empty, an empty BoundingBoxDoubleGf
is returned.
The returned object is a copy of the one maintained internally, to avoid aliasing issues. For best performance, clients which access this boundingBox frequently should cache the return value.
getBoundingBox in interface GeometryGeometry.public Point getCentroid()
Geometry.
The centroid
is equal to the centroid of the set of component Geometries of highest
dimension (since the lower-dimension geometries contribute zero
"weight" to the centroid).
The centroid of an empty geometry is POINT EMPTY.
getCentroid in interface GeometryPoint which is the centroid of this Geometrypublic int getClassSortIndex()
getClassSortIndex in interface Geometrypublic CoordinateSystem getCoordinateSystem()
getCoordinateSystem in interface Geometrypublic DataType getDataType()
getDataType in interface DataTypeProxypublic abstract int getDimension()
Note that this is a different concept to the dimension of
the vertex Coordinatess.
The geometry dimension can never be greater than the coordinate dimension.
For example, a 0-dimensional geometry (e.g. a Point)
may have a coordinate dimension of 3 (X,Y,Z).
getDimension in interface Geometrypublic Geometry getEnvelope()
Geometry.
If this Geometry is:
Point.
Point.
LineString
Polygon whose vertices are (minx miny, maxx miny,
maxx maxy, minx maxy, minx miny).
getEnvelope in interface GeometryGeometryFactory#toLineString(BoundingBoxDoubleGf)public <V extends Geometry> List<V> getGeometries()
getGeometries in interface Geometrypublic <V extends Geometry> List<V> getGeometries(Class<V> geometryClass)
getGeometries in interface Geometrypublic <V extends Geometry> V getGeometry(int partIndex)
Geometry from a GeometryCollection
(or this, if the geometry is not a collection).getGeometry in interface GeometrypartIndex - the index of the geometry elementpublic <V extends Geometry> List<V> getGeometryComponents(Class<V> geometryClass)
GeometryGeometry.getGeometries(Class) in that it will return matching Polygon.rings()getGeometryComponents in interface Geometrypublic int getGeometryCount()
Geometrys in a GeometryCollection
(or 1, if the geometry is not a collection).getGeometryCount in interface Geometrypublic GeometryFactory getGeometryFactory()
GeometrygetGeometryFactory in interface Geometrypublic String getGeometryType()
getGeometryType in interface GeometryGeometrys actual classpublic Point getInteriorPoint()
Geometry.
An interior point is guaranteed to lie in the interior of the Geometry,
if it possible to calculate such a point exactly. Otherwise,
the point may lie on the boundary of the geometry.
The interior point of an empty geometry is POINT EMPTY.
getInteriorPoint in interface GeometryPoint which is in the interior of this Geometrypublic double getLength()
Geometry.
Linear geometries return their length.
Areal geometries return their perimeter.
They override this function to compute the area.
Others return 0.0protected GeometryFactory getNonZeroGeometryFactory(GeometryFactory geometryFactory)
public abstract Point getPoint()
Geometry
(usually, but not necessarily, the first one).
The returned coordinate should not be assumed
to be an actual Point object used in
the internal representation.public int getSrid()
Geometry.
JTS supports Spatial Reference System information in the simple way
defined in the SFS. A Spatial Reference System ID (SRID) is present in
each Geometry object. Geometry provides basic
accessor operations for this field, but no others. The SRID is represented
as an integer.
public Object getUserData()
getUserData in interface Geometrynull if none setpublic int hashCode()
public boolean hasInvalidXyCoordinates()
hasInvalidXyCoordinates in interface Geometrypublic Geometry intersection(Geometry other)
Geometry representing the point-set which is
common to both this Geometry and the other Geometry.
The intersection of two geometries of different dimension produces a result
geometry of dimension less than or equal to the minimum dimension of the input
geometries.
The result geometry may be a heterogenous GeometryCollection.
If the result is empty, it is an atomic geometry
with the dimension of the lowest input dimension.
Intersection of GeometryCollections is supported
only for homogeneous collection types.
Non-empty heterogeneous GeometryCollection arguments are not supported.
intersection in interface Geometryother - the Geometry with which to compute the intersectionGeometrysTopologyException - if a robustness error occursIllegalArgumentException - if the argument is a non-empty heterogeneous GeometryCollectionpublic boolean intersects(Geometry g)
The intersects predicate has the following equivalent definitions:
[T********]
[*T*******]
[***T*****]
[****T****]
! g.disjoint(this) = true
intersects is the inverse of disjoint)
intersects in interface Geometryg - the Geometry with which to compare this Geometrytrue if the two Geometrys intersectGeometry.disjoint(com.revolsys.jts.geom.Geometry)protected boolean isAnyTargetComponentInTest(Geometry testGeom)
geom - the test geometryrepPts - the representative points of the target geometrypublic abstract boolean isEmpty()
Geometry is
empty.protected boolean isEquivalentClass(Geometry other)
Geometrys are equal, from the point
of view of the equalsExact method. Called by equalsExact
. In general, two Geometry classes are considered to be
"equivalent" only if they are the same class. An exception is LineString
, which is considered to be equivalent to its subclasses.other - the Geometry with which to compare this Geometry
for equalitytrue if the classes of the two Geometry
s are considered to be equal by the equalsExact method.protected boolean isGeometryCollection()
GeometryCollection,
rather than a homogeneous subclass.public boolean isRectangle()
isRectangle in interface Geometrypublic boolean isSimple()
Geometry is simple.
The SFS definition of simplicity
follows the general rule that a Geometry is simple if it has no points of
self-tangency, self-intersection or other anomalous points.
Simplicity is defined for each Geometry subclass as follows:
isSimple
tests for this condition and reports false if it is not met.
(This is a looser test than checking for validity).
Geometrys are always simple.
public boolean isValid()
Geometry
is topologically valid, according to the OGC SFS specification.
For validity rules see the Javadoc for the specific Geometry subclass.
public boolean isWithinDistance(Geometry geom, double distance)
Geometry
to another is less than or equal to a specified value.isWithinDistance in interface Geometrygeom - the Geometry to check the distance todistance - the distance value to comparetrue if the geometries are less than distance apart.public abstract Geometry normalize()
Geometry to normal form (or
canonical form ). Normal form is a unique representation for Geometry
s. It can be used to test whether two Geometrys are equal
in a way that is independent of the ordering of the coordinates within
them. Normal form equality is a stronger condition than topological
equality, but weaker than pointwise equality. The definitions for normal
form use the standard lexicographical ordering for coordinates. "Sorted in
order of coordinates" means the obvious extension of this ordering to
sequences of coordinates.normalize in interface Geometrynormalize()public boolean overlaps(Geometry g)
The overlaps predicate has the following equivalent definitions:
[T*T***T**] (for two points or two surfaces)
or [1*T***T**] (for two curves)
false.
This predicate is symmetric.public IntersectionMatrix relate(Geometry g)
IntersectionMatrix for the two Geometrys.relate in interface Geometryg - the Geometry with which to compare this GeometryIntersectionMatrix describing the intersections of the interiors,
boundaries and exteriors of the two Geometryspublic boolean relate(Geometry g, String intersectionPattern)
IntersectionMatrix for the two Geometrys match the elements in intersectionPattern.
The pattern is a 9-character string, with symbols drawn from the following set:
relate in interface Geometryg - the Geometry with which to compare
this GeometryintersectionPattern - the pattern against which to check the
intersection matrix for the two Geometrystrue if the DE-9IM intersection
matrix for the two Geometrys match intersectionPatternIntersectionMatrixpublic abstract Geometry reverse()
public void setUserData(Object userData)
Note that user data objects are not present in geometries created by construction methods.
setUserData in interface GeometryuserData - an object, the semantics for which are defined by the
application using this Geometrypublic Geometry symDifference(Geometry other)
Geometry which are not
contained in the other Geometry,
with the points in the other Geometry not contained in this
Geometry.
If the result is empty, it is an atomic geometry
with the dimension of the highest input dimension.
Non-empty GeometryCollection arguments are not supported.
symDifference in interface Geometryother - the Geometry with which to compute the symmetric
differenceGeometry
with otherTopologyException - if a robustness error occursIllegalArgumentException - if either input is a non-empty GeometryCollectionpublic <G extends Geometry> G toClockwise()
toClockwise in interface Geometrypublic <G extends Geometry> G toCounterClockwise()
toCounterClockwise in interface Geometrypublic boolean touches(Geometry g)
The touches predicate has the following equivalent definitions:
[FT*******]
[F**T*****]
[F***T****]
false,
since points have only interiors.
This predicate is symmetric.public String toWkt()
Returns the Extended Well-known Text representation of this Geometry.
For a definition of the Well-known Text format, see the OpenGIS Simple
Features Specification.
public Geometry union()
This method supports
GeometryCollections
(which the other overlay operations currently do not).
The result obeys the following contract:
LineStrings has the effect of fully noding
and dissolving the linework.
Polygons always
returns a Polygonal geometry (unlike union(Geometry),
which may return geometries of lower dimension if a topology collapse occurred).
union in interface GeometryTopologyException - if a robustness error occursUnaryUnionOppublic Geometry union(Geometry other)
Geometry representing the point-set
which is contained in both this
Geometry and the other Geometry.
The union of two geometries of different dimension produces a result
geometry of dimension equal to the maximum dimension of the input
geometries.
The result geometry may be a heterogenous
GeometryCollection.
If the result is empty, it is an atomic geometry
with the dimension of the highest input dimension.
Unioning LineStrings has the effect of
noding and dissolving the input linework. In this context
"noding" means that there will be a node or endpoint in the result for
every endpoint or line segment crossing in the input. "Dissolving" means
that any duplicate (i.e. coincident) line segments or portions of line
segments will be reduced to a single line segment in the result.
If merged linework is required, the LineMerger
class can be used.
Non-empty GeometryCollection arguments are not supported.
union in interface Geometryother - the Geometry with which to compute the unionGeometry and the
points of otherTopologyException - if a robustness error occursIllegalArgumentException - if either input is a non-empty GeometryCollectionLineMergerpublic boolean within(Geometry g)
The within predicate has the following equivalent definitions:
[T*F**F***]
g.contains(this) = true
within is the converse of contains(com.revolsys.jts.geom.Geometry))
A.within(B) = false
(As a concrete example, take A to be a LineString which lies in the boundary of a Polygon B.)
For a predicate with similar behaviour but avoiding
this subtle limitation, see coveredBy(com.revolsys.jts.geom.Geometry).within in interface Geometryg - the Geometry with which to compare this Geometrytrue if this Geometry is within
gGeometry.contains(com.revolsys.jts.geom.Geometry),
Geometry.coveredBy(com.revolsys.jts.geom.Geometry)Copyright © 2015 Revolution Systems Inc.. All rights reserved.