Class BufferDistanceValidator

java.lang.Object
org.locationtech.jts.operation.buffer.validate.BufferDistanceValidator

public class BufferDistanceValidator extends Object
Validates that a given buffer curve lies an appropriate distance from the input generating it. Useful only for round buffers (cap and join). Can be used for either positive or negative distances.

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

  • Field Details

    • VERBOSE

      private static boolean VERBOSE
    • MAX_DISTANCE_DIFF_FRAC

      private static final double MAX_DISTANCE_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:
    • input

      private Geometry input
    • bufDistance

      private double bufDistance
    • result

      private Geometry result
    • minValidDistance

      private double minValidDistance
    • maxValidDistance

      private double maxValidDistance
    • minDistanceFound

      private double minDistanceFound
    • maxDistanceFound

      private double maxDistanceFound
    • isValid

      private boolean isValid
    • errMsg

      private String errMsg
    • errorLocation

      private Coordinate errorLocation
    • errorIndicator

      private Geometry errorIndicator
  • Constructor Details

    • BufferDistanceValidator

      public BufferDistanceValidator(Geometry input, double bufDistance, Geometry result)
  • Method Details

    • isValid

      public boolean isValid()
    • getErrorMessage

      public String getErrorMessage()
    • getErrorLocation

      public Coordinate getErrorLocation()
    • getErrorIndicator

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

      The indicator is a line segment showing the location and size of the distance discrepancy.

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

      private void checkPositiveValid()
    • checkNegativeValid

      private void checkNegativeValid()
    • getPolygonLines

      private Geometry getPolygonLines(Geometry g)
    • checkMinimumDistance

      private void checkMinimumDistance(Geometry g1, Geometry g2, double minDist)
      Checks that two geometries are at least a minimum distance apart.
      Parameters:
      g1 - a geometry
      g2 - a geometry
      minDist - the minimum distance the geometries should be separated by
    • checkMaximumDistance

      private void checkMaximumDistance(Geometry input, Geometry bufCurve, double maxDist)
      Checks that the furthest distance from the buffer curve to the input is less than the given maximum distance. This uses the Oriented Hausdorff distance metric. It corresponds to finding the point on the buffer curve which is furthest from some point on the input.
      Parameters:
      input - a geometry
      bufCurve - a geometry
      maxDist - the maximum distance that a buffer result can be from the input