18 #include <geos/geom/Coordinate.h> 19 #include <geos/geom/LineSegment.h> 20 #include <geos/coverage/CoverageEdge.h> 65 const std::vector<const Geometry*>& m_coverage;
66 std::map<const LinearRing*, std::vector<CoverageEdge*>> m_ringEdgesMap;
67 std::vector<CoverageEdge*> m_edges;
68 std::vector<std::unique_ptr<CoverageEdge>> m_edgeStore;
77 : m_coverage(coverage)
83 std::vector<CoverageEdge*>& getEdges()
94 std::vector<CoverageEdge*> selectEdges(
95 std::size_t ringCount)
const;
102 std::vector<std::unique_ptr<Geometry>> buildCoverage()
const;
111 Coordinate::UnorderedSet& nodes,
112 LineSegment::UnorderedSet& boundarySegs,
113 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
115 void addBoundaryInnerNodes(
117 LineSegment::UnorderedSet& boundarySegs,
118 Coordinate::UnorderedSet& nodes);
120 std::vector<CoverageEdge*> extractRingEdges(
122 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap,
123 Coordinate::UnorderedSet& nodes);
127 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
131 std::size_t start, std::size_t end,
132 std::map<LineSegment, CoverageEdge*>& uniqueEdgeMap);
134 std::size_t findNextNodeIndex(
137 Coordinate::UnorderedSet& nodes)
const;
139 static std::size_t next(
143 Coordinate::UnorderedSet findMultiRingNodes(
144 const std::vector<const Geometry*>& coverage);
146 Coordinate::UnorderedSet findBoundaryNodes(
147 LineSegment::UnorderedSet& lineSegments);
149 std::unique_ptr<Geometry> buildPolygonal(
152 std::unique_ptr<Geometry> buildMultiPolygon(
155 std::unique_ptr<Polygon> buildPolygon(
158 std::unique_ptr<LinearRing> buildRing(
161 bool isEdgeDirForward(
162 const std::vector<CoverageEdge*>& ringEdges,
Definition: LineSegment.h:61
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:217
Definition: MultiPolygon.h:58
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
Represents a linear polygon, which may include holes.
Definition: Polygon.h:61
Definition: CoverageEdge.h:54
Definition: CoverageRingEdges.h:60
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple...
Definition: LinearRing.h:54
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56