20 #ifndef GEOS_OP_OVERLAY_OVERLAYOP_H
21 #define GEOS_OP_OVERLAY_OVERLAYOP_H
23 #include <geos/export.h>
25 #include <geos/operation/GeometryGraphOperation.h>
26 #include <geos/geomgraph/EdgeList.h>
27 #include <geos/algorithm/PointLocator.h>
28 #include <geos/geomgraph/PlanarGraph.h>
34 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
42 class GeometryFactory;
54 class ElevationMatrix;
95 static bool isResultOfOp(
int loc0,
int loc1, OpCode opCode);
143 void insertUniqueEdge(geomgraph::Edge *e);
157 std::vector<geom::Polygon*> *resultPolyList;
159 std::vector<geom::LineString*> *resultLineList;
161 std::vector<geom::Point*> *resultPointList;
163 void computeOverlay(OpCode opCode);
165 void insertUniqueEdges(std::vector<geomgraph::Edge*> *edges);
187 void computeLabelsFromDepths();
193 void replaceCollapsedEdges();
205 void copyPoints(
int argIndex);
215 void computeLabelling();
224 void mergeSymLabels();
226 void updateNodeLabelling();
245 void labelIncompleteNodes();
250 void labelIncompleteNode(geomgraph::Node *n,
int targetIndex);
263 void findResultAreaEdges(OpCode opCode);
269 void cancelDuplicateResultEdges();
276 std::vector<geom::Geometry*> *geomList);
283 std::vector<geom::Polygon*> *geomList);
290 std::vector<geom::LineString*> *geomList);
297 std::vector<geom::Point*> *nResultPointList,
298 std::vector<geom::LineString*> *nResultLineList,
299 std::vector<geom::Polygon*> *nResultPolyList);
302 std::vector<geomgraph::Edge *>dupEdges;
308 int mergeZ(geomgraph::Node *n,
const geom::Polygon *poly)
const;
321 bool avgzcomputed[2];
323 double getAverageZ(
int targetIndex);
326 ElevationMatrix *elevationMatrix;
330 void checkObviouslyWrongResult(OpCode opCode);
349 return OverlayOp::overlayOp(g0, g1, opCode);
362 #endif // ndef GEOS_OP_OVERLAY_OVERLAYOP_H
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:61
Represents a directed graph which is embeddable in a planar surface.
Definition: geomgraph/PlanarGraph.h:76
OpCode
The spatial functions supported by this class.
Definition: OverlayOp.h:77
Definition: EdgeList.h:59
Computes the overlay of two Geometry.
Definition: OverlayOp.h:68
Computes the topological relationship (Location) of a single point to a Geometry. ...
Definition: PointLocator.h:58
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:168
Definition: LineString.h:71
The base class for operations that require GeometryGraph.
Definition: GeometryGraphOperation.h:53
Represents a linear polygon, which may include holes.
Definition: Polygon.h:67
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:68
OverlayOp::overlayOp Adapter for use with geom::BinaryOp.
Definition: OverlayOp.h:337
A Label indicates the topological relationship of a component of a topology graph to a given Geometry...
Definition: Label.h:58