GEOS 3.4.2

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | List of all members
geos::operation::polygonize::EdgeRing Class Reference

Represents a ring of PolygonizeDirectedEdge which form a ring of a polygon. The ring may be either an outer shell or a hole. More...

`#include <EdgeRing.h>`

## Public Member Functions
| EdgeRing (const geom::GeometryFactory *newFactory)
void | add (const planargraph::DirectedEdge *de)
| Adds a DirectedEdge which is known to form part of this ring.
bool | isHole ()
| Tests whether this ring is a hole.
void | addHole (geom::LinearRing *hole)
| Adds a hole to the polygon formed by this ring.
geom::Polygon * | getPolygon ()
| Computes the Polygon formed by this ring and any contained holes.
bool | isValid ()
| Tests if the LinearRing ring formed by this edge ring is topologically valid.
geom::LineString * | getLineString ()
| Gets the coordinates for this ring as a LineString.
geom::LinearRing * | getRingInternal ()
| Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem).
geom::LinearRing * | getRingOwnership ()
| Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem).

## Static Public Member Functions
static EdgeRing * | findEdgeRingContaining (EdgeRing *testEr, std::vector< EdgeRing * > *shellList)
| Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.
static const geom::Coordinate & | ptNotInList (const geom::CoordinateSequence *testPts, const geom::CoordinateSequence *pts)
| Finds a point in a list of points which is not contained in another list of points.
static bool | isInList (const geom::Coordinate &pt, const geom::CoordinateSequence *pts)
| Tests whether a given point is in an array of points. Uses a value-based test.

## Detailed Description

Represents a ring of PolygonizeDirectedEdge which form a ring of a polygon. The ring may be either an outer shell or a hole.

## Member Function Documentation

void geos::operation::polygonize::EdgeRing::add | ( | const planargraph::DirectedEdge * | de | ) |

Adds a DirectedEdge which is known to form part of this ring.

Parameters

  de | the DirectedEdge to add. Ownership to the caller.

void geos::operation::polygonize::EdgeRing::addHole | ( | geom::LinearRing * | hole | ) |

Adds a hole to the polygon formed by this ring.

Parameters

  hole | the LinearRing forming the hole.

static EdgeRing* geos::operation::polygonize::EdgeRing::findEdgeRingContaining | ( | EdgeRing * | testEr,
|  | std::vector< EdgeRing * > * | shellList
| ) |  |
| static

Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.

The innermost enclosing ring is the smallest enclosing ring. The algorithm used depends on the fact that:

ring A contains ring B iff envelope(ring A) contains envelope(ring B)

This routine is only safe to use if the chosen point of the hole is known to be properly contained in a shell (which is guaranteed to be the case if the hole does not touch its shell)

Returns
  containing EdgeRing, if there is one
  null if no containing EdgeRing is found

geom::LineString* geos::operation::polygonize::EdgeRing::getLineString | ( |  | ) |

Gets the coordinates for this ring as a LineString.

Used to return the coordinates in this ring as a valid geometry, when it has been detected that the ring is topologically invalid.

Returns
  a LineString containing the coordinates in this ring

geom::Polygon* geos::operation::polygonize::EdgeRing::getPolygon | ( |  | ) |

Computes the Polygon formed by this ring and any contained holes.

LinearRings ownership is transferred to returned polygon. Subsequent calls to the function will return NULL.

Returns
  the Polygon formed by this ring and its holes.

geom::LinearRing* geos::operation::polygonize::EdgeRing::getRingInternal | ( |  | ) |

Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem).

Ownership of ring is retained by the object. Details of problems are written to standard output.

geom::LinearRing* geos::operation::polygonize::EdgeRing::getRingOwnership | ( |  | ) |

Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem).

Details of problems are written to standard output. Caller gets ownership of ring.

bool geos::operation::polygonize::EdgeRing::isHole | ( |  | ) |

Tests whether this ring is a hole.

Due to the way the edges in the polyongization graph are linked, a ring is a hole if it is oriented counter-clockwise.

Returns
  `true` if this ring is a hole

static bool geos::operation::polygonize::EdgeRing::isInList | ( | const geom::Coordinate & | pt,
|  | const geom::CoordinateSequence * | pts
| ) |  |
| static

Tests whether a given point is in an array of points. Uses a value-based test.

Parameters

  pt | a Coordinate for the test point
  pts | an array of Coordinate to test

Returns
  `true` if the point is in the array

static const geom::Coordinate& geos::operation::polygonize::EdgeRing::ptNotInList | ( | const geom::CoordinateSequence * | testPts,
|  | const geom::CoordinateSequence * | pts
| ) |  |
| static

Finds a point in a list of points which is not contained in another list of points.

Parameters

  testPts | the CoordinateSequence to test
  pts | the CoordinateSequence to test the input points against

Returns
  a Coordinate reference from `testPts` which is not in `pts`, or `Coordinate::nullCoord`

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

- operation/polygonize/EdgeRing.h