GEOS  3.9.1dev
Public Member Functions | Private Member Functions | Private Attributes | List of all members
geos::precision::CommonBitsOp Class Reference

Provides versions of Geometry spatial functions which use common bit removal to reduce the likelihood of robustness problems. More...

#include <CommonBitsOp.h>

Public Member Functions

 CommonBitsOp ()
 Creates a new instance of class, which reshifts result Geometry. More...
 
 CommonBitsOp (bool nReturnToOriginalPrecision)
 Creates a new instance of class, specifying whether the result geom::Geometrys should be reshifted. More...
 
std::unique_ptr< geom::Geometryintersection (const geom::Geometry *geom0, const geom::Geometry *geom1)
 Computes the set-theoretic intersection of two Geometry, using enhanced precision. More...
 
std::unique_ptr< geom::GeometryUnion (const geom::Geometry *geom0, const geom::Geometry *geom1)
 Computes the set-theoretic union of two Geometry, using enhanced precision. More...
 
std::unique_ptr< geom::Geometrydifference (const geom::Geometry *geom0, const geom::Geometry *geom1)
 Computes the set-theoretic difference of two Geometry, using enhanced precision. More...
 
std::unique_ptr< geom::GeometrysymDifference (const geom::Geometry *geom0, const geom::Geometry *geom1)
 Computes the set-theoretic symmetric difference of two geometries, using enhanced precision. More...
 
std::unique_ptr< geom::Geometrybuffer (const geom::Geometry *geom0, double distance)
 Computes the buffer a geometry, using enhanced precision. More...
 
std::unique_ptr< geom::GeometrycomputeResultPrecision (std::unique_ptr< geom::Geometry > result)
 If required, returning the result to the orginal precision if required. More...
 

Private Member Functions

std::unique_ptr< geom::GeometryremoveCommonBits (const geom::Geometry *geom0)
 Computes a copy of the input Geometry with the calculated common bits removed from each coordinate. More...
 
void removeCommonBits (const geom::Geometry *geom0, const geom::Geometry *geom1, std::unique_ptr< geom::Geometry > &rgeom0, std::unique_ptr< geom::Geometry > &rgeom1)
 

Private Attributes

bool returnToOriginalPrecision
 
std::unique_ptr< CommonBitsRemovercbr
 

Detailed Description

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.

Definition at line 50 of file CommonBitsOp.h.

Constructor & Destructor Documentation

geos::precision::CommonBitsOp::CommonBitsOp ( )

Creates a new instance of class, which reshifts result Geometry.

geos::precision::CommonBitsOp::CommonBitsOp ( bool  nReturnToOriginalPrecision)

Creates a new instance of class, specifying whether the result geom::Geometrys should be reshifted.

Parameters
nReturnToOriginalPrecision

Member Function Documentation

std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::buffer ( const geom::Geometry geom0,
double  distance 
)

Computes the buffer a geometry, using enhanced precision.

Parameters
geom0the Geometry to buffer
distancethe buffer distance
Returns
the Geometry representing the buffer of the input Geometry.
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::computeResultPrecision ( std::unique_ptr< geom::Geometry result)

If required, returning the result to the orginal 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
resultthe result Geometry to modify
Returns
the result Geometry with the required precision
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::difference ( const geom::Geometry geom0,
const geom::Geometry geom1 
)

Computes the set-theoretic difference of two Geometry, using enhanced precision.

Parameters
geom0the first Geometry
geom1the second Geometry, to be subtracted from the first
Returns
the Geometry representing the set-theoretic difference of the input Geometries.
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::intersection ( const geom::Geometry geom0,
const geom::Geometry geom1 
)

Computes the set-theoretic intersection of two Geometry, using enhanced precision.

Parameters
geom0the first Geometry
geom1the second Geometry
Returns
the Geometry representing the set-theoretic intersection of the input Geometries.
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::removeCommonBits ( const geom::Geometry geom0)
private

Computes a copy of the input Geometry with the calculated common bits removed from each coordinate.

Parameters
geom0the Geometry to remove common bits from
Returns
a copy of the input Geometry with common bits removed (caller takes responsibility of its deletion)
void geos::precision::CommonBitsOp::removeCommonBits ( const geom::Geometry geom0,
const geom::Geometry geom1,
std::unique_ptr< geom::Geometry > &  rgeom0,
std::unique_ptr< geom::Geometry > &  rgeom1 
)
private
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::symDifference ( const geom::Geometry geom0,
const geom::Geometry geom1 
)

Computes the set-theoretic symmetric difference of two geometries, using enhanced precision.

Parameters
geom0the first Geometry
geom1the second Geometry
Returns
the Geometry representing the set-theoretic symmetric difference of the input Geometries.
std::unique_ptr<geom::Geometry> geos::precision::CommonBitsOp::Union ( const geom::Geometry geom0,
const geom::Geometry geom1 
)

Computes the set-theoretic union of two Geometry, using enhanced precision.

Parameters
geom0the first Geometry
geom1the second Geometry
Returns
the Geometry representing the set-theoretic union of the input Geometries.

Member Data Documentation

std::unique_ptr<CommonBitsRemover> geos::precision::CommonBitsOp::cbr
private

Definition at line 56 of file CommonBitsOp.h.

bool geos::precision::CommonBitsOp::returnToOriginalPrecision
private

Definition at line 54 of file CommonBitsOp.h.


The documentation for this class was generated from the following file: