Class CommonBitsOp

java.lang.Object
org.locationtech.jts.precision.CommonBitsOp

public class CommonBitsOp extends Object
Provides versions of Geometry spatial functions which use common bit removal to reduce the likelihood of robustness problems.

In the current implementation no rounding is performed on the reshifted result geometry, which means that it is possible that the returned Geometry is invalid. Client classes should check the validity of the returned result themselves.

Version:
1.7
  • Field Details

    • returnToOriginalPrecision

      private boolean returnToOriginalPrecision
    • cbr

      private CommonBitsRemover cbr
  • Constructor Details

    • CommonBitsOp

      public CommonBitsOp()
      Creates a new instance of class, which reshifts result Geometrys.
    • CommonBitsOp

      public CommonBitsOp(boolean returnToOriginalPrecision)
      Creates a new instance of class, specifying whether the result Geometrys should be reshifted.
      Parameters:
      returnToOriginalPrecision -
  • Method Details

    • intersection

      public Geometry intersection(Geometry geom0, Geometry geom1)
      Computes the set-theoretic intersection of two Geometrys, using enhanced precision.
      Parameters:
      geom0 - the first Geometry
      geom1 - the second Geometry
      Returns:
      the Geometry representing the set-theoretic intersection of the input Geometries.
    • union

      public Geometry union(Geometry geom0, Geometry geom1)
      Computes the set-theoretic union of two Geometrys, using enhanced precision.
      Parameters:
      geom0 - the first Geometry
      geom1 - the second Geometry
      Returns:
      the Geometry representing the set-theoretic union of the input Geometries.
    • difference

      public Geometry difference(Geometry geom0, Geometry geom1)
      Computes the set-theoretic difference of two Geometrys, using enhanced precision.
      Parameters:
      geom0 - the first Geometry
      geom1 - the second Geometry, to be subtracted from the first
      Returns:
      the Geometry representing the set-theoretic difference of the input Geometries.
    • symDifference

      public Geometry symDifference(Geometry geom0, Geometry geom1)
      Computes the set-theoretic symmetric difference of two geometries, using enhanced precision.
      Parameters:
      geom0 - the first Geometry
      geom1 - the second Geometry
      Returns:
      the Geometry representing the set-theoretic symmetric difference of the input Geometries.
    • buffer

      public Geometry buffer(Geometry geom0, double distance)
      Computes the buffer a geometry, using enhanced precision.
      Parameters:
      geom0 - the Geometry to buffer
      distance - the buffer distance
      Returns:
      the Geometry representing the buffer of the input Geometry.
    • computeResultPrecision

      private Geometry computeResultPrecision(Geometry result)
      If required, returning the result to the original precision if required.

      In this current implementation, no rounding is performed on the reshifted result geometry, which means that it is possible that the returned Geometry is invalid.

      Parameters:
      result - the result Geometry to modify
      Returns:
      the result Geometry with the required precision
    • removeCommonBits

      private Geometry removeCommonBits(Geometry geom0)
      Computes a copy of the input Geometry with the calculated common bits removed from each coordinate.
      Parameters:
      geom0 - the Geometry to remove common bits from
      Returns:
      a copy of the input Geometry with common bits removed
    • removeCommonBits

      private Geometry[] removeCommonBits(Geometry geom0, Geometry geom1)
      Computes a copy of each input Geometrys with the calculated common bits removed from each coordinate.
      Parameters:
      geom0 - a Geometry to remove common bits from
      geom1 - a Geometry to remove common bits from
      Returns:
      an array containing copies of the input Geometry's with common bits removed