20 #ifndef GEOS_GEOS_GEOMETRYCOLLECTION_H
21 #define GEOS_GEOS_GEOMETRYCOLLECTION_H
23 #include <geos/export.h>
24 #include <geos/geom/Geometry.h>
25 #include <geos/geom/Envelope.h>
26 #include <geos/geom/Dimension.h>
28 #include <geos/inline.h>
38 class CoordinateArraySequence;
39 class CoordinateSequenceFilter;
55 class GEOS_DLL GeometryCollection :
public Geometry {
58 friend class GeometryFactory;
60 typedef std::vector<std::unique_ptr<Geometry>>::const_iterator const_iterator;
62 typedef std::vector<std::unique_ptr<Geometry>>::iterator iterator;
64 const_iterator begin()
const;
66 const_iterator end()
const;
74 std::unique_ptr<Geometry>
75 clone()
const override
82 void setSRID(
int)
override;
97 std::unique_ptr<CoordinateSequence> getCoordinates()
const override;
99 bool isEmpty()
const override;
113 int getCoordinateDimension()
const override;
115 std::unique_ptr<Geometry> getBoundary()
const override;
122 int getBoundaryDimension()
const override;
124 std::size_t getNumPoints()
const override;
126 std::string getGeometryType()
const override;
130 bool equalsExact(
const Geometry* other,
131 double tolerance = 0)
const override;
149 void normalize()
override;
151 const Coordinate* getCoordinate()
const override;
154 double getArea()
const override;
157 double getLength()
const override;
160 std::size_t getNumGeometries()
const override;
163 const Geometry* getGeometryN(std::size_t n)
const override;
172 std::unique_ptr<Geometry> reverse()
const override;
212 getSortIndex()
const override
214 return SORTINDEX_GEOMETRYCOLLECTION;
217 std::vector<std::unique_ptr<Geometry>> geometries;
219 Envelope::Ptr computeEnvelopeInternal()
const override;
221 int compareToSameClass(
const Geometry* gc)
const override;
229 # include "geos/geom/GeometryCollection.inl"
232 #endif // ndef GEOS_GEOS_GEOMETRYCOLLECTION_H