89class GEOS_DLL UnaryUnionOp {
93 static std::unique_ptr<geom::Geometry>
96 UnaryUnionOp op(geoms);
98 return op.Union(progressFunction);
102 static std::unique_ptr<geom::Geometry>
103 Union(
const T& geoms,
106 UnaryUnionOp op(geoms, geomFact);
108 return op.Union(progressFunction);
111 static std::unique_ptr<geom::Geometry>
114 UnaryUnionOp op(
geom);
115 return op.Union(progressFunction);
120 : geomFact(&geomFactIn)
121 , unionFunction(&defaultUnionFunction)
127 UnaryUnionOp(
const T& geoms)
129 , unionFunction(&defaultUnionFunction)
135 : geomFact(
geom.getFactory())
136 , unionFunction(&defaultUnionFunction)
143 unionFunction = unionFun;
160 template <
typename T>
162 extractGeoms(
const T& geoms)
164 for(
typename T::const_iterator
188 std::unique_ptr<geom::Geometry>
194 return unionFunction->Union(&g0, empty.get());
206 static std::unique_ptr<geom::Geometry> unionWithNull(
207 std::unique_ptr<geom::Geometry> g0,
208 std::unique_ptr<geom::Geometry> g1
212 std::vector<const geom::Surface*> polygons;
213 std::vector<const geom::Curve*> lines;
214 std::vector<const geom::Point*> points;
216 const geom::GeometryFactory* geomFact;
217 std::unique_ptr<geom::Geometry> empty;
219 UnionStrategy* unionFunction;
220 ClassicUnionStrategy defaultUnionFunction;