Interface PreparedGeometry

  • All Known Implementing Classes:
    PreparedLineString, PreparedPoint, PreparedPolygon

    public interface PreparedGeometry
    An interface for classes which prepare Geometrys in order to optimize the performance of repeated calls to specific geometric operations.

    A given implementation may provide optimized implementations for only some of the specified methods, and delegate the remaining methods to the original Geometry operations. An implementation may also only optimize certain situations, and delegate others. See the implementing classes for documentation about which methods and situations they optimize.

    Subclasses are intended to be thread-safe, to allow PreparedGeometry to be used in a multi-threaded context (which allows extracting maximum benefit from the prepared state).

    Author:
    Martin Davis
    • Method Detail

      • getGeometry

        Geometry getGeometry()
        Gets the original Geometry which has been prepared.
        Returns:
        the base geometry
      • contains

        boolean contains​(Geometry geom)
        Tests whether the base Geometry contains a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry contains the given Geometry
        See Also:
        Geometry.contains(Geometry)
      • containsProperly

        boolean containsProperly​(Geometry geom)
        Tests whether the base Geometry properly contains a given geometry.

        The containsProperly predicate has the following equivalent definitions:

        • Every point of the other geometry is a point of this geometry's interior.
        • The DE-9IM Intersection Matrix for the two geometries matches [T**FF*FF*]
        In other words, if the test geometry has any interaction with the boundary of the target geometry the result of containsProperly is false. This is different semantics to the Geometry.contains(org.locationtech.jts.geom.Geometry) predicate, in which test geometries can intersect the target's boundary and still be contained.

        The advantage of using this predicate is that it can be computed efficiently, since it avoids the need to compute the full topological relationship of the input boundaries in cases where they intersect.

        An example use case is computing the intersections of a set of geometries with a large polygonal geometry. Since intersection is a fairly slow operation, it can be more efficient to use containsProperly to filter out test geometries which lie wholly inside the area. In these cases the intersection is known a priori to be exactly the original test geometry.

        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry properly contains the given Geometry
        See Also:
        Geometry.contains(org.locationtech.jts.geom.Geometry)
      • coveredBy

        boolean coveredBy​(Geometry geom)
        Tests whether the base Geometry is covered by a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry is covered by the given Geometry
        See Also:
        Geometry.coveredBy(Geometry)
      • covers

        boolean covers​(Geometry geom)
        Tests whether the base Geometry covers a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry covers the given Geometry
        See Also:
        Geometry.covers(Geometry)
      • crosses

        boolean crosses​(Geometry geom)
        Tests whether the base Geometry crosses a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry crosses the given Geometry
        See Also:
        Geometry.crosses(Geometry)
      • disjoint

        boolean disjoint​(Geometry geom)
        Tests whether the base Geometry is disjoint from a given geometry. This method supports GeometryCollections as input
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry is disjoint from the given Geometry
        See Also:
        Geometry.disjoint(Geometry)
      • overlaps

        boolean overlaps​(Geometry geom)
        Tests whether the base Geometry overlaps a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry overlaps the given Geometry
        See Also:
        Geometry.overlaps(Geometry)
      • touches

        boolean touches​(Geometry geom)
        Tests whether the base Geometry touches a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry touches the given Geometry
        See Also:
        Geometry.touches(Geometry)
      • within

        boolean within​(Geometry geom)
        Tests whether the base Geometry is within a given geometry.
        Parameters:
        geom - the Geometry to test
        Returns:
        true if this Geometry is within the given Geometry
        See Also:
        Geometry.within(Geometry)