Class CommonBitsOp


  • public class CommonBitsOp
    extends java.lang.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 Detail

      • returnToOriginalPrecision

        private boolean returnToOriginalPrecision
    • Constructor Detail

      • 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 Detail

      • 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