GEOS 3.13.1
geos::operation::overlayng::CoverageUnion Class Reference

#include <CoverageUnion.h>

Static Public Member Functions

static std::unique_ptr< Geometrygeomunion (const Geometry *coverage)

Static Public Attributes

static constexpr double AREA_PCT_DIFF_TOL = 1e-6

Detailed Description

Unions a valid coverage of polygons or lines in an efficient way.

A valid polygonal coverage is a collection of geom::Polygon which satisfy the following conditions:

  • Vector-clean - Line segments within the collection must either be identical or intersect only at endpoints.
  • Non-overlapping - No two polygons may overlap. Equivalently, polygons must be interior-disjoint.

A valid linear coverage is a collection of geom::LineString which satisfies the Vector-clean condition. Note that this does not require the LineStrings to be fully noded

  • i.e. they may contain coincident linework. Coincident line segments are dissolved by the union. Currently linear output is not merged (this may be added in a future release.)

Currently no checking is done to determine whether the input is a valid coverage. This is because coverage validation involves segment intersection detection, which is much more expensive than the union phase. If the input is not a valid coverage then in some cases this will be detected during processing and a util::TopologyException is thrown. Otherwise, the computation will produce output, but it will be invalid.

Unioning a valid coverage implies that no new vertices are created. This means that a precision model does not need to be specified. The precision of the vertices in the output geometry is not changed.

Author
Martin Davis
See also
noding::SegmentExtractingNoder

Member Function Documentation

◆ geomunion()

std::unique_ptr< Geometry > geos::operation::overlayng::CoverageUnion::geomunion ( const Geometry * coverage)
static

Unions a valid polygonal coverage or linear network.

Parameters
coveragea coverage of polygons or lines
Returns
the union of the coverage
Exceptions
util::TopologyExceptionin some cases if the coverage is invalid

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