22#include <geos/export.h>
23#include <geos/geom/Geometry.h>
24#include <geos/geom/Dimension.h>
42std::unique_ptr<Geometry> GEOS_DLL
43HeuristicOverlay(
const Geometry* g0,
const Geometry* g1,
int opCode);
45class StructuredCollection {
49 static std::unique_ptr<Geometry> overlay(
const Geometry* g0,
const Geometry* g1,
int opCode);
53 const GeometryFactory* factory;
54 std::vector<const Geometry*> pts;
55 std::vector<const Geometry*> lines;
56 std::vector<const Geometry*> polys;
57 std::unique_ptr<Geometry> pt_union;
58 std::unique_ptr<Geometry> line_union;
59 std::unique_ptr<Geometry> poly_union;
62 StructuredCollection(
const Geometry* g)
63 : factory(g->getFactory())
67 , dimension(Dimension::DONTCARE)
73 StructuredCollection()
78 , dimension(Dimension::DONTCARE)
87 std::unique_ptr<Geometry> doUnaryUnion(
int resultDim)
const;
88 std::unique_ptr<Geometry> computeResult(StructuredCollection& coll,
int opCode,
91 void readCollection(
const Geometry* g);
92 const Geometry* getPolyUnion()
const {
return poly_union.get(); }
93 const Geometry* getLineUnion()
const {
return line_union.get(); }
94 const Geometry* getPointUnion()
const {
return pt_union.get(); }
96 std::unique_ptr<Geometry> doUnion(
const StructuredCollection& a)
const;
97 std::unique_ptr<Geometry> doIntersection(
const StructuredCollection& a)
const;
98 std::unique_ptr<Geometry> doSymDifference(
const StructuredCollection& a)
const;
99 std::unique_ptr<Geometry> doDifference(
const StructuredCollection& a)
const;
101 static void toVector(
const Geometry* g, std::vector<const Geometry*>& v);
102 void unionByDimension(
void);
DimensionType
Definition Dimension.h:29
Basic namespace for all GEOS functionalities.
Definition geos.h:39