com.vividsolutions.jts.geom.prep
Class AbstractPreparedPolygonContains

java.lang.Object
  extended by com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
      extended by com.vividsolutions.jts.geom.prep.AbstractPreparedPolygonContains
Direct Known Subclasses:
PreparedPolygonContains, PreparedPolygonCovers

public abstract class AbstractPreparedPolygonContains
extends PreparedPolygonPredicate

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.

Author:
Martin Davis

Field Summary
protected  boolean requireSomePointInInterior
          This flag controls a difference between contains and covers.
 
Fields inherited from class com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
prepPoly
 
Constructor Summary
AbstractPreparedPolygonContains(PreparedPolygon prepPoly)
          Creates an instance of this operation.
 
Method Summary
protected  boolean eval(Geometry geom)
          Evaluate the contains or covers relationship for the given geometry.
protected abstract  boolean fullTopologicalPredicate(Geometry geom)
          Computes the full topological predicate.
 
Methods inherited from class com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
isAllTestComponentsInTarget, isAllTestComponentsInTargetInterior, isAnyTargetComponentInAreaTest, isAnyTestComponentInTarget, isAnyTestComponentInTargetInterior
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

requireSomePointInInterior

protected boolean requireSomePointInInterior
This flag controls a difference between contains and covers. For contains the value is true. For covers the value is false.

Constructor Detail

AbstractPreparedPolygonContains

public AbstractPreparedPolygonContains(PreparedPolygon prepPoly)
Creates an instance of this operation.

Parameters:
prepPoly - the PreparedPolygon to evaluate
Method Detail

eval

protected boolean eval(Geometry geom)
Evaluate the contains or covers relationship for the given geometry.

Parameters:
geom - the test geometry
Returns:
true if the test geometry is contained

fullTopologicalPredicate

protected abstract boolean fullTopologicalPredicate(Geometry geom)
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