Package org.locationtech.spatial4j.shape
Enum SpatialRelation
- All Implemented Interfaces:
Serializable
,Comparable<SpatialRelation>
,java.lang.constant.Constable
The set of spatial relationships. Naming is somewhat consistent with OGC spec
conventions as seen in SQL/MM and others.
There is no equality case. If two Shape instances are equal then the result might be CONTAINS (preferred) or WITHIN. Client logic may have to be aware of this edge condition; Spatial4j testing certainly does.
The "CONTAINS" and "WITHIN" wording here is inconsistent with OGC; these here map to OGC "COVERS" and "COVERED BY", respectively. The distinction is in the boundaries; in Spatial4j there is no boundary distinction -- boundaries are part of the shape as if it was an "interior", with respect to OGC's terminology.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionThe shape contains the target geometry.The shape shares no point in common with the target shape.The shape is within the target geometry. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncombine
(SpatialRelation other) If you were to call aShape.relate(bShape) and aShape.relate(cShape), you could call this to merge the intersect results as if bShape & cShape were combined intoShapeCollection
.boolean
Not DISJOINT, i.e.inverse()
IfaShape.relate(bShape)
is r, thenr.inverse()
isinverse(aShape).relate(bShape)
whereasinverse(shape)
is theoretically the opposite area covered by a shape, i.e.Given the result ofshapeA.relate(shapeB)
, transposing that result should yield the result ofshapeB.relate(shapeA)
.static SpatialRelation
Returns the enum constant of this type with the specified name.static SpatialRelation[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
Enum Constant Details
-
WITHIN
The shape is within the target geometry. It's the converse ofCONTAINS
. Boundaries of shapes count too. OGC specs refer to this relation as "COVERED BY"; WITHIN is differentiated there by not including boundaries. -
CONTAINS
The shape contains the target geometry. It's the converse ofWITHIN
. Boundaries of shapes count too. OGC specs refer to this relation as "COVERS"; CONTAINS is differentiated there by not including boundaries. -
DISJOINT
The shape shares no point in common with the target shape. -
INTERSECTS
-
-
Constructor Details
-
SpatialRelation
private SpatialRelation()
-
-
Method Details
-
values
Returns an array containing the constants of this enum type, in the order they are declared.- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
transpose
Given the result ofshapeA.relate(shapeB)
, transposing that result should yield the result ofshapeB.relate(shapeA)
. There is a corner case is when the shapes are equal, in which case actually flipping the relate() call will result in the same value -- either CONTAINS or WITHIN; this method can't possible check for that so the caller might have to. -
combine
If you were to call aShape.relate(bShape) and aShape.relate(cShape), you could call this to merge the intersect results as if bShape & cShape were combined intoShapeCollection
. Ifother
is null then the result is "this". -
intersects
public boolean intersects()Not DISJOINT, i.e. there is some sort of intersection. -
inverse
IfaShape.relate(bShape)
is r, thenr.inverse()
isinverse(aShape).relate(bShape)
whereasinverse(shape)
is theoretically the opposite area covered by a shape, i.e. everywhere but where the shape is.Note that it's not commutative!
WITHIN.inverse().inverse() != WITHIN
.
-