18#include <geos/geom/Coordinate.h>
19#include <geos/geom/LineSegment.h>
64 std::vector<const Geometry*>& m_coverage;
65 std::map<const LinearRing*, std::vector<CoverageEdge*>> m_ringEdgesMap;
66 std::vector<CoverageEdge*> m_edges;
67 std::vector<std::unique_ptr<CoverageEdge>> m_edgeStore;
86 : m_coverage(coverage)
92 std::vector<CoverageEdge*>& getEdges()
104 std::size_t ringCount)
const;
120 Coordinate::UnorderedSet& nodes,
121 LineSegment::UnorderedSet& boundarySegs,
122 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
124 void addBoundaryInnerNodes(
126 LineSegment::UnorderedSet& boundarySegs,
127 Coordinate::UnorderedSet& nodes);
129 std::vector<CoverageEdge*> extractRingEdges(
131 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap,
132 Coordinate::UnorderedSet& nodes);
136 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
140 std::size_t start, std::size_t end,
141 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
143 std::size_t findNextNodeIndex(
146 Coordinate::UnorderedSet& nodes)
const;
148 static std::size_t next(
152 Coordinate::UnorderedSet findMultiRingNodes(
153 std::vector<const Geometry*>& coverage);
155 Coordinate::UnorderedSet findBoundaryNodes(
156 LineSegment::UnorderedSet& lineSegments);
158 std::unique_ptr<Geometry> buildPolygonal(
161 std::unique_ptr<Geometry> buildMultiPolygon(
164 std::unique_ptr<Polygon> buildPolygon(
167 std::unique_ptr<LinearRing> buildRing(
170 bool isEdgeDirForward(
171 const std::vector<CoverageEdge*>& ringEdges,
Definition: CoverageEdge.h:54
Definition: CoverageRingEdges.h:59
std::vector< std::unique_ptr< Geometry > > buildCoverage() const
CoverageRingEdges(std::vector< const Geometry * > &coverage)
Definition: CoverageRingEdges.h:85
std::vector< CoverageEdge * > selectEdges(std::size_t ringCount) const
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:216
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:186
Definition: LineSegment.h:61
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:54
Definition: MultiPolygon.h:58
Represents a linear polygon, which may include holes.
Definition: Polygon.h:60
Basic namespace for all GEOS functionalities.
Definition: geos.h:39