Package org.locationtech.jts.geom.prep
Class AbstractPreparedPolygonContains
java.lang.Object
org.locationtech.jts.geom.prep.PreparedPolygonPredicate
org.locationtech.jts.geom.prep.AbstractPreparedPolygonContains
- Direct Known Subclasses:
PreparedPolygonContains
,PreparedPolygonCovers
A base class containing the logic for computes the contains
and covers spatial relationship predicates
for a
PreparedPolygon
relative to all other Geometry
classes.
Uses short-circuit tests and indexing to improve performance.
Contains and covers are very similar, and differ only in how certain cases along the boundary are handled. These cases require full topological evaluation to handle, so all the code in this class is common to both predicates.
It is not possible to short-circuit in all cases, in particular in the case where line segments of the test geometry touches the polygon linework. In this case full topology must be computed. (However, if the test geometry consists of only points, this can be evaluated in an optimized fashion.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private boolean
private boolean
protected boolean
This flag controls a difference between contains and covers.Fields inherited from class org.locationtech.jts.geom.prep.PreparedPolygonPredicate
prepPoly
-
Constructor Summary
ConstructorsConstructorDescriptionCreates an instance of this operation. -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Evaluate the contains or covers relationship for the given geometry.private void
protected abstract boolean
Computes the full topological predicate.private boolean
private boolean
isSingleShell
(Geometry geom) Tests whether a geometry consists of a single polygon with no holes.Methods inherited from class org.locationtech.jts.geom.prep.PreparedPolygonPredicate
isAllTestComponentsInTarget, isAllTestComponentsInTargetInterior, isAnyTargetComponentInAreaTest, isAnyTestComponentInTarget, isAnyTestComponentInTargetInterior
-
Field Details
-
requireSomePointInInterior
protected boolean requireSomePointInInteriorThis flag controls a difference between contains and covers. For contains the value is true. For covers the value is false. -
hasSegmentIntersection
private boolean hasSegmentIntersection -
hasProperIntersection
private boolean hasProperIntersection -
hasNonProperIntersection
private boolean hasNonProperIntersection
-
-
Constructor Details
-
AbstractPreparedPolygonContains
Creates an instance of this operation.- Parameters:
prepPoly
- the PreparedPolygon to evaluate
-
-
Method Details
-
eval
Evaluate the contains or covers relationship for the given geometry.- Parameters:
geom
- the test geometry- Returns:
- true if the test geometry is contained
-
isProperIntersectionImpliesNotContainedSituation
-
isSingleShell
Tests whether a geometry consists of a single polygon with no holes.- Returns:
- true if the geometry is a single polygon with no holes
-
findAndClassifyIntersections
-
fullTopologicalPredicate
Computes the full topological predicate. Used when short-circuit tests are not conclusive.- Parameters:
geom
- the test geometry- Returns:
- true if this prepared polygon has the relationship with the test geometry
-