Interface PreparedGeometry
- All Known Implementing Classes:
PreparedLineString, PreparedPoint, PreparedPolygon
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 Summary
Modifier and TypeMethodDescriptionbooleanTests whether the baseGeometrycontains a given geometry.booleancontainsProperly(Geometry geom) Tests whether the baseGeometryproperly contains a given geometry.booleanTests whether the baseGeometryis covered by a given geometry.booleanTests whether the baseGeometrycovers a given geometry.booleanTests whether the baseGeometrycrosses a given geometry.booleanTests whether the baseGeometryis disjoint from a given geometry.Gets the originalGeometrywhich has been prepared.booleanintersects(Geometry geom) Tests whether the baseGeometryintersects a given geometry.booleanTests whether the baseGeometryoverlaps a given geometry.booleanTests whether the baseGeometrytouches a given geometry.booleanTests whether the baseGeometryis within a given geometry.
-
Method Details
-
getGeometry
-
contains
-
containsProperly
Tests whether the baseGeometryproperly contains a given geometry.The
containsProperlypredicate 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*]
Geometry.contains(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:
-
coveredBy
-
covers
-
crosses
-
disjoint
Tests whether the baseGeometryis disjoint from a given geometry. This method supportsGeometryCollections as input- Parameters:
geom- the Geometry to test- Returns:
- true if this Geometry is disjoint from the given Geometry
- See Also:
-
intersects
Tests whether the baseGeometryintersects a given geometry. This method supportsGeometryCollections as input- Parameters:
geom- the Geometry to test- Returns:
- true if this Geometry intersects the given Geometry
- See Also:
-
overlaps
-
touches
-
within
-