22 #include <geos/geom/Geometry.h>
23 #include <geos/geom/GeometryFactory.h>
24 #include <geos/operation/overlayng/OverlayGraph.h>
25 #include <geos/operation/overlayng/OverlayEdgeRing.h>
26 #include <geos/operation/overlayng/InputGeometry.h>
27 #include <geos/export.h>
32 class GeometryFactory;
135 bool isAreaResultOnly;
137 bool isOutputResultEdges;
138 bool isOutputNodedEdges;
141 std::unique_ptr<geom::Geometry> computeEdgeOverlay();
158 std::unique_ptr<geom::Geometry> extractResult(
int opCode,
OverlayGraph* graph);
159 std::unique_ptr<geom::Geometry> createEmptyResult();
173 static constexpr
bool STRICT_MODE_DEFAULT =
false;
175 static constexpr
int INTERSECTION = 1;
176 static constexpr
int UNION = 2;
177 static constexpr
int DIFFERENCE = 3;
178 static constexpr
int SYMDIFFERENCE = 4;
186 : pm(p_geomFact->getPrecisionModel())
187 , inputGeom(geom0, geom1)
188 , geomFact(p_geomFact)
191 , isStrictMode(STRICT_MODE_DEFAULT)
193 , isAreaResultOnly(false)
194 , isOutputEdges(false)
195 , isOutputResultEdges(false)
196 , isOutputNodedEdges(false)
206 , inputGeom(geom0, geom1)
207 , geomFact(geom0->getFactory())
210 , isStrictMode(STRICT_MODE_DEFAULT)
212 , isAreaResultOnly(false)
213 , isOutputEdges(false)
214 , isOutputResultEdges(false)
215 , isOutputNodedEdges(false)
232 :
OverlayNG(geom0, geom1, geom0->getFactory()->getPrecisionModel(), p_opCode)
248 void setStrictMode(
bool p_isStrictMode) { isStrictMode = p_isStrictMode; }
249 void setAreaResultOnly(
bool p_areaResultOnly) { isAreaResultOnly = p_areaResultOnly; }
250 void setOutputEdges(
bool p_isOutputEdges) { isOutputEdges = p_isOutputEdges; }
251 void setOutputResultEdges(
bool p_isOutputResultEdges) { isOutputResultEdges = p_isOutputResultEdges; }
252 void setNoder(noding::Noder* p_noder) { noder = p_noder; }
254 void setOutputNodedEdges(
bool p_isOutputNodedEdges)
256 isOutputEdges =
true;
257 isOutputNodedEdges = p_isOutputNodedEdges;
304 static std::unique_ptr<Geometry>
320 static std::unique_ptr<Geometry>
335 static std::unique_ptr<Geometry>
359 static std::unique_ptr<Geometry>
382 static std::unique_ptr<Geometry>
402 static std::unique_ptr<Geometry>
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:70
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
Specifies the precision model of the Coordinate in a Geometry.
Definition: PrecisionModel.h:88
Computes all intersections between segments in a set of SegmentString.
Definition: Noder.h:46
Definition: OverlayGraph.h:52
Definition: OverlayLabel.h:86
Definition: OverlayNG.h:120
void setOptimized(bool p_isOptimized)
Definition: OverlayNG.h:247
OverlayNG(const geom::Geometry *geom0, const geom::Geometry *geom1, const geom::GeometryFactory *p_geomFact, int p_opCode)
Definition: OverlayNG.h:185
static std::unique_ptr< Geometry > overlay(const Geometry *geom0, const Geometry *geom1, int opCode, noding::Noder *noder)
static std::unique_ptr< Geometry > geomunion(const Geometry *geom, const PrecisionModel *pm)
static std::unique_ptr< Geometry > overlay(const Geometry *geom0, const Geometry *geom1, int opCode, const PrecisionModel *pm)
std::unique_ptr< Geometry > getResult()
static std::unique_ptr< Geometry > overlay(const Geometry *geom0, const Geometry *geom1, int opCode)
OverlayNG(const geom::Geometry *geom0, const geom::Geometry *geom1, const geom::PrecisionModel *p_pm, int p_opCode)
Definition: OverlayNG.h:204
static std::unique_ptr< Geometry > overlay(const Geometry *geom0, const Geometry *geom1, int opCode, const PrecisionModel *pm, noding::Noder *noder)
static bool isResultOfOpPoint(const OverlayLabel *label, int opCode)
OverlayNG(const geom::Geometry *geom0, const geom::Geometry *geom1, int p_opCode)
Definition: OverlayNG.h:231
static bool isResultOfOp(int overlayOpCode, Location loc0, Location loc1)
static std::unique_ptr< Geometry > geomunion(const Geometry *geom, const PrecisionModel *pm, noding::Noder *noder)
Location
Constants representing the location of a point relative to a geometry.
Definition: Location.h:32
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25