17#include <geos/geom/Curve.h>
18#include <geos/geom/GeometryCollection.h>
19#include <geos/geom/MultiLineString.h>
24class GEOS_DLL MultiCurve :
public GeometryCollection {
25 friend class GeometryFactory;
28 ~MultiCurve()
override =
default;
30 std::unique_ptr<MultiCurve> clone()
const
32 return std::unique_ptr<MultiCurve>(cloneImpl());
36 std::unique_ptr<Geometry> getBoundary()
const override;
43 int getBoundaryDimension()
const override;
46 Dimension::DimensionType getDimension()
const override;
48 const Curve* getGeometryN(std::size_t n)
const override;
50 std::string getGeometryType()
const override;
54 std::unique_ptr<MultiLineString> getLinearized(
const algorithm::CurveToLineParams& params)
const {
55 return std::unique_ptr<MultiLineString>(getLinearizedImpl(params));
58 bool hasCurvedTypes()
const override {
62 bool hasDimension(Dimension::DimensionType d)
const override
64 return d == Dimension::L;
69 bool isClosed()
const;
71 bool isDimensionStrict(Dimension::DimensionType d)
const override
73 return d == Dimension::L;
85 std::unique_ptr<MultiCurve> reverse()
const
87 return std::unique_ptr<MultiCurve>(reverseImpl());
109 MultiCurve(std::vector<std::unique_ptr<Curve>>&& newLines,
110 const GeometryFactory& newFactory);
112 MultiCurve(std::vector<std::unique_ptr<Geometry>>&& newLines,
113 const GeometryFactory& newFactory);
115 MultiCurve(
const MultiCurve& mp)
116 : GeometryCollection(mp)
119 MultiCurve* cloneImpl()
const override
121 return new MultiCurve(*
this);
124 MultiCurve* reverseImpl()
const override;
126 MultiCurve* getCurvedImpl(
const algorithm::LineToCurveParams&)
const override {
return cloneImpl(); }
128 MultiLineString* getLinearizedImpl(
const algorithm::CurveToLineParams&)
const override;
131 getSortIndex()
const override
133 return SORTINDEX_MULTICURVE;
GeometryTypeId
Geometry types.
Definition Geometry.h:78
Basic namespace for all GEOS functionalities.
Definition geos.h:38