76class GEOS_DLL OverlayMixedPoints {
81 using CoordinateXY = geos::geom::CoordinateXY;
92 const PrecisionModel* pm;
93 const Geometry* geomPoint;
94 const Geometry* geomNonPointInput;
95 const GeometryFactory* geometryFactory;
98 std::unique_ptr<Geometry> geomNonPoint;
100 std::unique_ptr<PointOnGeometryLocator> locator;
104 std::unique_ptr<PointOnGeometryLocator> createLocator(
const Geometry* geomNonPoint);
106 std::unique_ptr<Geometry> prepareNonPoint(
const Geometry* geomInput);
108 std::unique_ptr<Geometry> computeIntersection(
const CoordinateSequence* coords)
const;
110 std::unique_ptr<Geometry> computeUnion(
const CoordinateSequence* coords);
112 std::unique_ptr<Geometry> computeDifference(
const CoordinateSequence* coords);
114 std::unique_ptr<Geometry> createPointResult(std::vector<std::unique_ptr<Point>>& points)
const;
116 std::vector<std::unique_ptr<Point>> findPoints(
bool isCovered,
const CoordinateSequence* coords)
const;
118 std::vector<std::unique_ptr<Point>> createPoints(
const CoordinateSequence& coords)
const;
120 bool hasLocation(
bool isCovered,
const CoordinateXY& coord)
const;
122 std::unique_ptr<Geometry> copyNonPoint()
const;
124 std::unique_ptr<CoordinateSequence> extractCoordinates(
const Geometry* points,
const PrecisionModel* pm)
const;
126 std::vector<std::unique_ptr<Polygon>> extractPolygons(
const Geometry*
geom)
const;
128 std::vector<std::unique_ptr<LineString>> extractLines(
const Geometry*
geom)
const;
134 OverlayMixedPoints(
int p_opCode,
const Geometry* geom0,
const Geometry* geom1,
const PrecisionModel* p_pm);
136 static std::unique_ptr<Geometry> overlay(
int opCode,
const Geometry* geom0,
const Geometry* geom1,
const PrecisionModel* pm);
138 std::unique_ptr<Geometry> getResult();