GEOS
3.14.0dev
|
#include <OverlayNGRobust.h>
Static Public Member Functions | |
static std::unique_ptr< Geometry > | Intersection (const Geometry *g0, const Geometry *g1) |
static std::unique_ptr< Geometry > | Union (const Geometry *g0, const Geometry *g1) |
static std::unique_ptr< Geometry > | Difference (const Geometry *g0, const Geometry *g1) |
static std::unique_ptr< Geometry > | SymDifference (const Geometry *g0, const Geometry *g1) |
static std::unique_ptr< Geometry > | Union (const Geometry *a) |
static std::unique_ptr< Geometry > | Overlay (const Geometry *geom0, const Geometry *geom1, int opCode) |
static std::unique_ptr< Geometry > | overlaySnapTries (const Geometry *geom0, const Geometry *geom1, int opCode) |
static double | snapTolerance (const Geometry *geom0, const Geometry *geom1) |
Performs an overlay operation, increasing robustness by using a series of increasingly aggressive (and slower) noding strategies.
The noding strategies used are:
If the above heuristics still fail to compute a valid overlay, the original util::TopologyException is thrown.
This algorithm relies on each overlay operation execution throwing a util::TopologyException if it is unable to compute the overlay correctly. Generally this occurs because the noding phase does not produce a valid noding. This requires the use of a noding::ValidatingNoder in order to check the results of using a floating noder.
|
static |
Computes a heuristic snap tolerance distance for overlaying a pair of geometries using a noding::snap::SnappingNoder.