geos::operation::overlayng::OverlayNGRobust Class Reference

`#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)

## Detailed Description

Performs an overlay operation, increasing robustness by using a series of increasingly aggressive (and slower) noding strategies.

The noding strategies used are:

- A simple, fast noder using FLOATING precision.
- A `noding::snap::SnappingNoder` using an automatically-determined snap tolerance
- First snapping each geometry to itself, and then overlaying them using a SnappingNoder.
- The above two strategies are repeated with increasing snap tolerance, up to a limit.

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.

Author
  Martin Davis

## Member Function Documentation

## snapTolerance()

double geos::operation::overlayng::OverlayNGRobust::snapTolerance | ( | const Geometry * | geom0,
|  | const Geometry * | geom1 )

static

Computes a heuristic snap tolerance distance for overlaying a pair of geometries using a `noding::snap::SnappingNoder`.

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

- OverlayNGRobust.h