Class OverlayResultValidator

java.lang.Object
org.locationtech.jts.operation.overlay.validate.OverlayResultValidator

public class OverlayResultValidator extends Object
Validates that the result of an overlay operation is geometrically correct, within a determined tolerance. Uses fuzzy point location to find points which are definitely in either the interior or exterior of the result geometry, and compares these results with the expected ones.

This algorithm is only useful where the inputs are polygonal. This is a heuristic test, and may return false positive results (I.e. it may fail to detect an invalid result.) It should never return a false negative result, however (I.e. it should never report a valid result as invalid.)

Version:
1.7
See Also:
  • Field Details

    • TOLERANCE

      private static final double TOLERANCE
      See Also:
    • geom

      private Geometry[] geom
    • locFinder

      private FuzzyPointLocator[] locFinder
    • location

      private int[] location
    • invalidLocation

      private Coordinate invalidLocation
    • boundaryDistanceTolerance

      private double boundaryDistanceTolerance
    • testCoords

      private List testCoords
  • Constructor Details

  • Method Details

    • isValid

      public static boolean isValid(Geometry a, Geometry b, int overlayOp, Geometry result)
    • computeBoundaryDistanceTolerance

      private static double computeBoundaryDistanceTolerance(Geometry g0, Geometry g1)
    • isValid

      public boolean isValid(int overlayOp)
    • getInvalidLocation

      public Coordinate getInvalidLocation()
    • addTestPts

      private void addTestPts(Geometry g)
    • checkValid

      private boolean checkValid(int overlayOp)
    • checkValid

      private boolean checkValid(int overlayOp, Coordinate pt)
    • hasLocation

      private static boolean hasLocation(int[] location, int loc)
    • isValidResult

      private boolean isValidResult(int overlayOp, int[] location)
    • reportResult

      private void reportResult(int overlayOp, int[] location, boolean expectedInterior)