GEOS
3.4.2
|
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. More... | |
bool | isHole () |
Tests whether this ring is a hole. More... | |
void | addHole (geom::LinearRing *hole) |
Adds a hole to the polygon formed by this ring. More... | |
geom::Polygon * | getPolygon () |
Computes the Polygon formed by this ring and any contained holes. More... | |
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. More... | |
geom::LinearRing * | getRingInternal () |
Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem). More... | |
geom::LinearRing * | getRingOwnership () |
Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem). More... | |
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. More... | |
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. More... | |
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. More... | |
Represents a ring of PolygonizeDirectedEdge which form a ring of a polygon. The ring may be either an outer shell or a hole.
void geos::operation::polygonize::EdgeRing::add | ( | const planargraph::DirectedEdge * | de | ) |
Adds a DirectedEdge which is known to form part of this ring.
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.
hole | the LinearRing forming the hole. |
|
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)
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.
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.
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.
true
if this ring is a hole
|
static |
Tests whether a given point is in an array of points. Uses a value-based test.
pt | a Coordinate for the test point |
pts | an array of Coordinate to test |
true
if the point is in the array
|
static |
Finds a point in a list of points which is not contained in another list of points.
testPts | the CoordinateSequence to test |
pts | the CoordinateSequence to test the input points against |
testPts
which is not in pts
, or Coordinate::nullCoord