64 const 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;
76 : m_coverage(coverage)
82 std::vector<CoverageEdge*>& getEdges()
94 std::size_t ringCount)
const;
110 Coordinate::UnorderedSet& nodes,
111 LineSegment::UnorderedSet& boundarySegs,
112 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
114 void addBoundaryInnerNodes(
116 LineSegment::UnorderedSet& boundarySegs,
117 Coordinate::UnorderedSet& nodes);
119 std::vector<CoverageEdge*> extractRingEdges(
121 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap,
122 Coordinate::UnorderedSet& nodes);
126 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
130 std::size_t start, std::size_t end,
131 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
133 std::size_t findNextNodeIndex(
136 Coordinate::UnorderedSet& nodes)
const;
138 static std::size_t next(
142 Coordinate::UnorderedSet findMultiRingNodes(
143 const std::vector<const Geometry*>& coverage);
145 Coordinate::UnorderedSet findBoundaryNodes(
146 LineSegment::UnorderedSet& lineSegments);
148 std::unique_ptr<Geometry> buildPolygonal(
151 std::unique_ptr<Geometry> buildMultiPolygon(
154 std::unique_ptr<Polygon> buildPolygon(
157 std::unique_ptr<LinearRing> buildRing(
160 bool isEdgeDirForward(
161 const std::vector<CoverageEdge*>& ringEdges,