abstract class AbstractPreparedPolygonContains extends PreparedPolygonPredicate
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.
Modifier and Type | Field and Description |
---|---|
private boolean |
hasNonProperIntersection |
private boolean |
hasProperIntersection |
private boolean |
hasSegmentIntersection |
protected boolean |
requireSomePointInInterior
This flag controls a difference between contains and covers.
|
prepPoly
Constructor and Description |
---|
AbstractPreparedPolygonContains(PreparedPolygon prepPoly)
Creates an instance of this operation.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
eval(Geometry geom)
Evaluate the contains or covers relationship
for the given geometry.
|
private void |
findAndClassifyIntersections(Geometry geom) |
protected abstract boolean |
fullTopologicalPredicate(Geometry geom)
Computes the full topological predicate.
|
private boolean |
isProperIntersectionImpliesNotContainedSituation(Geometry testGeom) |
private boolean |
isSingleShell(Geometry geom)
Tests whether a geometry consists of a single polygon with no holes.
|
isAllTestComponentsInTarget, isAllTestComponentsInTargetInterior, isAnyTargetComponentInAreaTest, isAnyTestComponentInTarget, isAnyTestComponentInTargetInterior
protected boolean requireSomePointInInterior
private boolean hasSegmentIntersection
private boolean hasProperIntersection
private boolean hasNonProperIntersection
public AbstractPreparedPolygonContains(PreparedPolygon prepPoly)
prepPoly
- the PreparedPolygon to evaluateprotected boolean eval(Geometry geom)
geom
- the test geometryprivate boolean isProperIntersectionImpliesNotContainedSituation(Geometry testGeom)
private boolean isSingleShell(Geometry geom)
private void findAndClassifyIntersections(Geometry geom)
protected abstract boolean fullTopologicalPredicate(Geometry geom)
geom
- the test geometry