GEOS  3.9.1dev
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
geos::operation::overlay::validate::OverlayResultValidator Class Reference

Validates that the result of an overlay operation is geometrically correct within a determined tolerance. More...

#include <OverlayResultValidator.h>

Collaboration diagram for geos::operation::overlay::validate::OverlayResultValidator:
[legend]

Public Member Functions

 OverlayResultValidator (const geom::Geometry &geom0, const geom::Geometry &geom1, const geom::Geometry &result)
 
bool isValid (OverlayOp::OpCode opCode)
 
geom::CoordinategetInvalidLocation ()
 

Static Public Member Functions

static bool isValid (const geom::Geometry &geom0, const geom::Geometry &geom1, OverlayOp::OpCode opCode, const geom::Geometry &result)
 

Private Member Functions

void addTestPts (const geom::Geometry &g)
 
void addVertices (const geom::Geometry &g)
 
bool testValid (OverlayOp::OpCode overlayOp)
 
bool testValid (OverlayOp::OpCode overlayOp, const geom::Coordinate &pt)
 
bool isValidResult (OverlayOp::OpCode overlayOp, std::vector< geom::Location > &location)
 
 OverlayResultValidator (const OverlayResultValidator &other)=delete
 
OverlayResultValidatoroperator= (const OverlayResultValidator &rhs)=delete
 

Static Private Member Functions

static double computeBoundaryDistanceTolerance (const geom::Geometry &g0, const geom::Geometry &g1)
 

Private Attributes

double boundaryDistanceTolerance
 
const geom::Geometryg0
 
const geom::Geometryg1
 
const geom::Geometrygres
 
FuzzyPointLocator fpl0
 
FuzzyPointLocator fpl1
 
FuzzyPointLocator fplres
 
geom::Coordinate invalidLocation
 
std::vector< geom::CoordinatetestCoords
 

Detailed Description

Validates that the result of an overlay operation is geometrically correct within a determined tolerance.

Uses fuzzy point location to find points which are definitely in either the interior or exterior of the result geometry, and compares these results with the expected ones.

This algorithm is only useful where the inputs are polygonal.

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

See also
OverlayOp

Definition at line 64 of file OverlayResultValidator.h.

Constructor & Destructor Documentation

geos::operation::overlay::validate::OverlayResultValidator::OverlayResultValidator ( const geom::Geometry geom0,
const geom::Geometry geom1,
const geom::Geometry result 
)
geos::operation::overlay::validate::OverlayResultValidator::OverlayResultValidator ( const OverlayResultValidator other)
privatedelete

Member Function Documentation

void geos::operation::overlay::validate::OverlayResultValidator::addTestPts ( const geom::Geometry g)
private
void geos::operation::overlay::validate::OverlayResultValidator::addVertices ( const geom::Geometry g)
private
static double geos::operation::overlay::validate::OverlayResultValidator::computeBoundaryDistanceTolerance ( const geom::Geometry g0,
const geom::Geometry g1 
)
staticprivate
geom::Coordinate& geos::operation::overlay::validate::OverlayResultValidator::getInvalidLocation ( )
inline

Definition at line 82 of file OverlayResultValidator.h.

static bool geos::operation::overlay::validate::OverlayResultValidator::isValid ( const geom::Geometry geom0,
const geom::Geometry geom1,
OverlayOp::OpCode  opCode,
const geom::Geometry result 
)
static
bool geos::operation::overlay::validate::OverlayResultValidator::isValid ( OverlayOp::OpCode  opCode)
bool geos::operation::overlay::validate::OverlayResultValidator::isValidResult ( OverlayOp::OpCode  overlayOp,
std::vector< geom::Location > &  location 
)
private
OverlayResultValidator& geos::operation::overlay::validate::OverlayResultValidator::operator= ( const OverlayResultValidator rhs)
privatedelete
bool geos::operation::overlay::validate::OverlayResultValidator::testValid ( OverlayOp::OpCode  overlayOp)
private
bool geos::operation::overlay::validate::OverlayResultValidator::testValid ( OverlayOp::OpCode  overlayOp,
const geom::Coordinate pt 
)
private

Member Data Documentation

double geos::operation::overlay::validate::OverlayResultValidator::boundaryDistanceTolerance
private

Definition at line 89 of file OverlayResultValidator.h.

FuzzyPointLocator geos::operation::overlay::validate::OverlayResultValidator::fpl0
private

Definition at line 97 of file OverlayResultValidator.h.

FuzzyPointLocator geos::operation::overlay::validate::OverlayResultValidator::fpl1
private

Definition at line 99 of file OverlayResultValidator.h.

FuzzyPointLocator geos::operation::overlay::validate::OverlayResultValidator::fplres
private

Definition at line 101 of file OverlayResultValidator.h.

const geom::Geometry& geos::operation::overlay::validate::OverlayResultValidator::g0
private

Definition at line 91 of file OverlayResultValidator.h.

const geom::Geometry& geos::operation::overlay::validate::OverlayResultValidator::g1
private

Definition at line 93 of file OverlayResultValidator.h.

const geom::Geometry& geos::operation::overlay::validate::OverlayResultValidator::gres
private

Definition at line 95 of file OverlayResultValidator.h.

geom::Coordinate geos::operation::overlay::validate::OverlayResultValidator::invalidLocation
private

Definition at line 103 of file OverlayResultValidator.h.

std::vector<geom::Coordinate> geos::operation::overlay::validate::OverlayResultValidator::testCoords
private

Definition at line 105 of file OverlayResultValidator.h.


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