Enum SpatialRelation

java.lang.Object
java.lang.Enum<SpatialRelation>
org.locationtech.spatial4j.shape.SpatialRelation
All Implemented Interfaces:
Serializable, Comparable<SpatialRelation>, java.lang.constant.Constable

public enum SpatialRelation extends Enum<SpatialRelation>
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.

  • Enum Constant Details

    • WITHIN

      public static final SpatialRelation WITHIN
      The shape is within the target geometry. It's the converse of CONTAINS. Boundaries of shapes count too. OGC specs refer to this relation as "COVERED BY"; WITHIN is differentiated there by not including boundaries.
    • CONTAINS

      public static final SpatialRelation CONTAINS
      The shape contains the target geometry. It's the converse of WITHIN. Boundaries of shapes count too. OGC specs refer to this relation as "COVERS"; CONTAINS is differentiated there by not including boundaries.
    • DISJOINT

      public static final SpatialRelation DISJOINT
      The shape shares no point in common with the target shape.
    • INTERSECTS

      public static final SpatialRelation INTERSECTS
      The shape shares some points/overlap with the target shape, and the relation is not more specifically WITHIN or CONTAINS.
  • Constructor Details

    • SpatialRelation

      private SpatialRelation()
  • Method Details

    • values

      public static SpatialRelation[] 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

      public static SpatialRelation valueOf(String name)
      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 name
      NullPointerException - if the argument is null
    • transpose

      public SpatialRelation transpose()
      Given the result of shapeA.relate(shapeB), transposing that result should yield the result of shapeB.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

      public SpatialRelation combine(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 into ShapeCollection. If other is null then the result is "this".
    • intersects

      public boolean intersects()
      Not DISJOINT, i.e. there is some sort of intersection.
    • inverse

      public SpatialRelation inverse()
      If aShape.relate(bShape) is r, then r.inverse() is inverse(aShape).relate(bShape) whereas inverse(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.