Class BufferResultValidator


  • public class BufferResultValidator
    extends java.lang.Object
    Validates that the result of a buffer operation is geometrically correct, within a computed tolerance.

    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.)

    This test may be (much) more expensive than the original buffer computation.

    • Field Detail

      • VERBOSE

        private static boolean VERBOSE
      • MAX_ENV_DIFF_FRAC

        private static final double MAX_ENV_DIFF_FRAC
        Maximum allowable fraction of buffer distance the actual distance can differ by. 1% sometimes causes an error - 1.2% should be safe.
        See Also:
        Constant Field Values
      • distance

        private double distance
      • isValid

        private boolean isValid
      • errorMsg

        private java.lang.String errorMsg
      • errorIndicator

        private Geometry errorIndicator
    • Constructor Detail

      • BufferResultValidator

        public BufferResultValidator​(Geometry input,
                                     double distance,
                                     Geometry result)
    • Method Detail

      • isValid

        public static boolean isValid​(Geometry g,
                                      double distance,
                                      Geometry result)
      • isValidMsg

        public static java.lang.String isValidMsg​(Geometry g,
                                                  double distance,
                                                  Geometry result)
        Checks whether the geometry buffer is valid, and returns an error message if not.
        Parameters:
        g -
        distance -
        result -
        Returns:
        an appropriate error message or null if the buffer is valid
      • isValid

        public boolean isValid()
      • getErrorMessage

        public java.lang.String getErrorMessage()
      • getErrorLocation

        public Coordinate getErrorLocation()
      • getErrorIndicator

        public Geometry getErrorIndicator()
        Gets a geometry which indicates the location and nature of a validation failure.

        If the failure is due to the buffer curve being too far or too close to the input, the indicator is a line segment showing the location and size of the discrepancy.

        Returns:
        a geometric error indicator or null if no error was found
      • report

        private void report​(java.lang.String checkName)
      • checkPolygonal

        private void checkPolygonal()
      • checkExpectedEmpty

        private void checkExpectedEmpty()
      • checkEnvelope

        private void checkEnvelope()
      • checkArea

        private void checkArea()
      • checkDistance

        private void checkDistance()