17#include <geos/algorithm/locate/IndexedPointInAreaLocator.h>
18#include <geos/geom/CoordinateSequence.h>
19#include <geos/geom/LinearRing.h>
20#include <geos/export.h>
47using namespace geos::geom;
48using algorithm::locate::PointOnGeometryLocator;
49using algorithm::locate::IndexedPointInAreaLocator;
51class GEOS_DLL OverlayEdgeRing {
56 OverlayEdge* startEdge;
57 std::unique_ptr<LinearRing> ring;
59 std::unique_ptr<IndexedPointInAreaLocator> locator;
60 OverlayEdgeRing* shell;
62 std::vector<OverlayEdgeRing*> holes;
65 void computeRingPts(OverlayEdge* start, CoordinateSequence& pts);
66 void computeRing(std::unique_ptr<CoordinateSequence> && ringPts,
const GeometryFactory* geometryFactory);
73 const CoordinateSequence& getCoordinates();
74 PointOnGeometryLocator* getLocator();
75 static void closeRing(CoordinateSequence& pts);
80 OverlayEdgeRing(OverlayEdge* start,
const GeometryFactory* geometryFactory);
82 std::unique_ptr<LinearRing> getRing();
83 const LinearRing* getRingPtr()
const;
96 void setShell(OverlayEdgeRing* p_shell);
103 bool hasShell()
const;
110 const OverlayEdgeRing* getShell()
const;
112 void addHole(OverlayEdgeRing* ring);
114 bool isInRing(
const Coordinate& pt);
116 const Coordinate& getCoordinate();
122 std::unique_ptr<Polygon> toPolygon(
const GeometryFactory* factory);
124 OverlayEdge* getEdge();
144 OverlayEdgeRing* findEdgeRingContaining(
const std::vector<OverlayEdgeRing*>& erList);
An interface for classes which determine the Location of points in Polygon or MultiPolygon geometries...
Definition PointOnGeometryLocator.h:36
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:217
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition GeometryFactory.h:70
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition LinearRing.h:54
Represents a linear polygon, which may include holes.
Definition Polygon.h:61
Definition OverlayEdge.h:52
Classes which determine the Location of points in geometries.
Definition IndexedPointInAreaLocator.h:40
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:32
Provides classes for implementing operations on geometries.
Definition namespaces.h:179
Basic namespace for all GEOS functionalities.
Definition geos.h:39