GEOS
3.9.1dev
|
This class tests that the interior of an area Geometry (Polygon or MultiPolygon) is connected. More...
#include <ConnectedInteriorTester.h>
Public Member Functions | |
ConnectedInteriorTester (geomgraph::GeometryGraph &newGeomGraph) | |
~ConnectedInteriorTester ()=default | |
geom::Coordinate & | getCoordinate () |
bool | isInteriorsConnected () |
Static Public Member Functions | |
static const geom::Coordinate & | findDifferentPoint (const geom::CoordinateSequence *coord, const geom::Coordinate &pt) |
Protected Member Functions | |
void | visitLinkedDirectedEdges (geomgraph::DirectedEdge *start) |
Private Member Functions | |
void | setInteriorEdgesInResult (geomgraph::PlanarGraph &graph) |
void | buildEdgeRings (std::vector< geomgraph::EdgeEnd * > *dirEdges, std::vector< geomgraph::EdgeRing * > &minEdgeRings) |
Form DirectedEdges in graph into Minimal EdgeRings. More... | |
void | visitShellInteriors (const geom::Geometry *g, geomgraph::PlanarGraph &graph) |
void | visitInteriorRing (const geom::LineString *ring, geomgraph::PlanarGraph &graph) |
bool | hasUnvisitedShellEdge (std::vector< geomgraph::EdgeRing * > *edgeRings) |
ConnectedInteriorTester (const ConnectedInteriorTester &other)=delete | |
ConnectedInteriorTester & | operator= (const ConnectedInteriorTester &rhs)=delete |
Private Attributes | |
geom::GeometryFactory::Ptr | geometryFactory |
geomgraph::GeometryGraph & | geomGraph |
geom::Coordinate | disconnectedRingcoord |
std::vector< geomgraph::EdgeRing * > | maximalEdgeRings |
Used to track MaximalEdgeRings allocations. More... | |
This class tests that the interior of an area Geometry (Polygon or MultiPolygon) is connected.
An area Geometry is invalid if the interior is disconnected. This can happen if:
If an inconsistency if found the location of the problem is recorded.
Definition at line 71 of file ConnectedInteriorTester.h.
geos::operation::valid::ConnectedInteriorTester::ConnectedInteriorTester | ( | geomgraph::GeometryGraph & | newGeomGraph | ) |
|
default |
|
privatedelete |
|
private |
Form DirectedEdges in graph into Minimal EdgeRings.
Minimal Edgerings must be used, because only they are guaranteed to provide a correct isHole computation.
minEdgeRings | : newly allocated minimal edge rings will be push_back'ed here. deletion responsibility is left to caller. |
|
static |
geom::Coordinate& geos::operation::valid::ConnectedInteriorTester::getCoordinate | ( | ) |
|
private |
Check if any shell ring has an unvisited edge. A shell ring is a ring which is not a hole and which has the interior of the parent area on the RHS. (Note that there may be non-hole rings with the interior on the LHS, since the interior of holes will also be polygonized into CW rings by the linkAllDirectedEdges() step)
bool geos::operation::valid::ConnectedInteriorTester::isInteriorsConnected | ( | ) |
|
privatedelete |
|
private |
|
private |
|
protected |
|
private |
Mark all the edges for the edgeRings corresponding to the shells of the input polygons. Note only ONE ring gets marked for each shell.
|
private |
Save a coordinate for any disconnected interior found the coordinate will be somewhere on the ring surrounding the disconnected interior
Definition at line 94 of file ConnectedInteriorTester.h.
|
private |
Definition at line 87 of file ConnectedInteriorTester.h.
|
private |
Definition at line 89 of file ConnectedInteriorTester.h.
|
private |
Used to track MaximalEdgeRings allocations.
Definition at line 97 of file ConnectedInteriorTester.h.