geos::geom::GeometryCollection Class Reference

Represents a collection of heterogeneous Geometry objects. More...

`#include <geos.h>`

Inheritance diagram for geos::geom::GeometryCollection:

## Public Types

typedef std::vector< std::unique_ptr< Geometry > >::const_iterator | const_iterator
typedef std::vector< std::unique_ptr< Geometry > >::iterator | iterator
Public Types inherited from geos::geom::Geometry
using | ConstVect = std::vector<const Geometry*>
| A vector of const Geometry pointers.
using | NonConstVect = std::vector<Geometry*>
| A vector of non-const Geometry pointers.
using | Ptr = std::unique_ptr<Geometry>
| An unique_ptr of Geometry.

## Public Member Functions

const_iterator | begin () const
const_iterator | end () const
std::unique_ptr< GeometryCollection > | clone () const
void | setSRID (int) override
| Sets the ID of the Spatial Reference System used by the Geometry.
std::unique_ptr< CoordinateSequence > | getCoordinates () const override
| Collects all coordinates of all subgeometries into a CoordinateSequence.
bool | isEmpty () const override
| Returns whether or not the set of points in this Geometry is empty.
Dimension::DimensionType | getDimension () const override
| Returns the maximum dimension of geometries in this collection (0=point, 1=line, 2=surface).
bool | hasDimension (Dimension::DimensionType d) const override
| Checks whether any component of this geometry has dimension d.
bool | isDimensionStrict (Dimension::DimensionType d) const override
| Checks whether this Geometry consists only of components having dimension d.
uint8_t | getCoordinateDimension () const override
| Returns coordinate dimension.
bool | hasM () const override
bool | hasZ () const override
std::unique_ptr< Geometry > | getBoundary () const override
| Returns the boundary, or an empty geometry of appropriate dimension if this `Geometry` is empty.
int | getBoundaryDimension () const override
| Returns the maximum boundary dimension of geometries in this collection.
std::size_t | getNumPoints () const override
| Returns the count of this Geometrys vertices.
std::string | getGeometryType () const override
| Return a string representation of this Geometry type.
GeometryTypeId | getGeometryTypeId () const override
| Return an integer representation of this Geometry type.
bool | equalsExact (const Geometry *other, double tolerance=0) const override
| Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are equal up to a specified distance tolerance. Geometries are not required to have the same dimemsion; any Z/M values are ignored.
bool | equalsIdentical (const Geometry *other) const override
| Returns true if the two geometries are of the same type and their vertices corresponding by index are equal in all dimensions.
void | apply_ro (CoordinateFilter *filter) const override
void | apply_rw (const CoordinateFilter *filter) override
void | apply_ro (GeometryFilter *filter) const override
void | apply_rw (GeometryFilter *filter) override
void | apply_ro (GeometryComponentFilter *filter) const override
void | apply_rw (GeometryComponentFilter *filter) override
void | apply_rw (CoordinateSequenceFilter &filter) override
void | apply_ro (CoordinateSequenceFilter &filter) const override
void | normalize () override
const CoordinateXY * | getCoordinate () const override
| Returns a vertex of this Geometry, or NULL if this is the empty geometry.
double | getArea () const override
| Returns the total area of this collection.
double | getLength () const override
| Returns the total length of this collection.
std::size_t | getNumGeometries () const override
| Returns the number of geometries in this collection.
const Geometry * | getGeometryN (std::size_t n) const override
| Returns a pointer to the nth Geometry in this collection.
std::vector< std::unique_ptr< Geometry > > | releaseGeometries ()
| Take ownership of the sub-geometries managed by this GeometryCollection. After releasing the sub-geometries, the collection should be considered in a moved-from state and should not be accessed.
std::unique_ptr< GeometryCollection > | reverse () const
const Envelope * | getEnvelopeInternal () const override
| Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty.
Public Member Functions inherited from geos::geom::Geometry
std::unique_ptr< Geometry > | clone () const
| Make a deep-copy of this Geometry.
virtual | ~Geometry ()
| Destroy Geometry and all components.
const GeometryFactory * | getFactory () const
| Gets the factory which contains the context in which this geometry was created.
void | setUserData (void *newUserData)
| A simple scheme for applications to add their own custom data to a Geometry. An example use might be to add an object representing a Coordinate Reference System.
void * | getUserData () const
| Gets the user data object for this geometry, if any.
int | getSRID () const
| Returns the ID of the Spatial Reference System used by the Geometry.
const PrecisionModel * | getPrecisionModel () const
| Get the PrecisionModel used to create this Geometry.
virtual bool | isSimple () const
| Returns false if the Geometry not simple.
bool | isValid () const
| Tests the validity of this `Geometry`.
virtual bool | isRectangle () const
| Polygon overrides to check for actual rectangle.
bool | isPuntal () const
bool | isLineal () const
bool | isPolygonal () const
bool | isMixedDimension () const
bool | isMixedDimension (Dimension::DimensionType *baseDim) const
bool | isCollection () const
virtual std::unique_ptr< Geometry > | getEnvelope () const
| Returns this Geometrys bounding box.
virtual bool | disjoint (const Geometry *other) const
virtual bool | touches (const Geometry *other) const
| Returns true if the DE-9IM intersection matrix for the two Geometrys is FT*******, F**T***** or F***T****.
virtual bool | intersects (const Geometry *g) const
| Returns true if disjoint returns false.
virtual bool | crosses (const Geometry *g) const
virtual bool | within (const Geometry *g) const
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**F***.
virtual bool | contains (const Geometry *g) const
| Returns true if other.within(this) returns true.
virtual bool | overlaps (const Geometry *g) const
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).
bool | relate (const Geometry *g, const std::string &intersectionPattern) const
| Returns true if the elements in the DE-9IM intersection matrix for the two Geometrys match the elements in intersectionPattern.
bool | relate (const Geometry &g, const std::string &intersectionPattern) const
std::unique_ptr< IntersectionMatrix > | relate (const Geometry *g) const
| Returns the DE-9IM intersection matrix for the two Geometrys.
std::unique_ptr< IntersectionMatrix > | relate (const Geometry &g) const
bool | equals (const Geometry *g) const
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**FFF*.
bool | covers (const Geometry *g) const
| Returns `true` if this geometry covers the specified geometry.
bool | coveredBy (const Geometry *g) const
| Tests whether this geometry is covered by the specified geometry.
virtual std::string | toString () const
| Returns the Well-known Text representation of this Geometry.
virtual std::string | toText () const
std::unique_ptr< Geometry > | buffer (double distance) const
std::unique_ptr< Geometry > | buffer (double distance, int quadrantSegments) const
| Returns a buffer region around this Geometry having the given width and with a specified number of segments used to approximate curves.
std::unique_ptr< Geometry > | buffer (double distance, int quadrantSegments, int endCapStyle) const
| Computes a buffer area around this geometry having the given width and with a specified accuracy of approximation for circular arcs, and using a specified end cap style.
virtual std::unique_ptr< Geometry > | convexHull () const
| Returns the smallest convex Polygon that contains all the points in the Geometry.
std::unique_ptr< Geometry > | reverse () const
| Computes a new geometry which has all component coordinate sequences in reverse order (opposite orientation) to this one.
std::unique_ptr< Geometry > | intersection (const Geometry *other) const
| Returns a Geometry representing the points shared by this Geometry and other.
std::unique_ptr< Geometry > | Union (const Geometry *other) const
| Returns a Geometry representing all the points in this Geometry and other.
Ptr | Union () const
| Computes the union of all the elements of this geometry. Heterogeneous GeometryCollections are fully supported.
std::unique_ptr< Geometry > | difference (const Geometry *other) const
| Returns a Geometry representing the points making up this Geometry that do not make up other.
std::unique_ptr< Geometry > | symDifference (const Geometry *other) const
| Returns a set combining the points in this Geometry not in other, and the points in other not in this Geometry.
template<class T>
void | applyComponentFilter (T &f) const
| Apply a filter to each component of this geometry. The filter is expected to provide a .filter(const Geometry*) method.
int | compareTo (const Geometry *geom) const
| Comparator for sorting geometry.
virtual double | distance (const Geometry *g) const
virtual bool | isWithinDistance (const Geometry *geom, double cDistance) const
| Tests whether the distance from this Geometry to another is less than or equal to a specified value.
virtual std::unique_ptr< Point > | getCentroid () const
| Computes the centroid of this `Geometry`.
virtual bool | getCentroid (CoordinateXY &ret) const
| Computes the centroid of this Geometry as a Coordinate.
std::unique_ptr< Point > | getInteriorPoint () const
| Computes an interior point of this `Geometry`.
void | geometryChanged ()
| Notifies this Geometry that its Coordinates have been changed by an external party (using a CoordinateFilter, for example).

## Protected Member Functions

| GeometryCollection (const GeometryCollection &gc)
GeometryCollection & | operator= (const GeometryCollection &gc)
| GeometryCollection (std::vector< std::unique_ptr< Geometry > > &&newGeoms, const GeometryFactory &newFactory)
| Construct a GeometryCollection with the given GeometryFactory. Will keep a reference to the factory, so don't delete it until al Geometry objects referring to it are deleted. Will take ownership of the Geometry vector.
template<typename T>
| GeometryCollection (std::vector< std::unique_ptr< T > > &&newGeoms, const GeometryFactory &newFactory)
| Convenience constructor to build a GeometryCollection from vector of Geometry subclass pointers.
GeometryCollection * | cloneImpl () const override
| Make a deep-copy of this Geometry.
GeometryCollection * | reverseImpl () const override
| Make a geometry with coordinates in reverse order.
int | getSortIndex () const override
Envelope | computeEnvelopeInternal () const
void | geometryChangedAction () override
| Notifies this Geometry that its Coordinates have been changed by an external party.
int | compareToSameClass (const Geometry *gc) const override
bool | hasCurvedComponents () const override
| Returns whether the Geometry contains curved components.
void | setFlags () const
Protected Member Functions inherited from geos::geom::Geometry
virtual bool | isEquivalentClass (const Geometry *other) const
| Returns whether the two Geometrys are equal, from the point of view of the equalsExact method.
bool | equal (const CoordinateXY &a, const CoordinateXY &b, double tolerance) const
| Geometry (const Geometry &geom)
| Geometry (const GeometryFactory *factory)
| Construct a geometry with the given GeometryFactory.

## Protected Attributes

std::vector< std::unique_ptr< Geometry > > | geometries
CollectionFlags | flags
Envelope | envelope
Protected Attributes inherited from geos::geom::Geometry
int | SRID

## Friends

class | GeometryFactory

## Additional Inherited Members

Static Public Member Functions inherited from geos::geom::Geometry
static GeometryTypeId | multiTypeId (GeometryTypeId typeId)
Static Protected Member Functions inherited from geos::geom::Geometry
template<typename T>
static bool | hasNonEmptyElements (const std::vector< T > *geometries)
| Returns true if the array contains any non-empty Geometrys.
static bool | hasNullElements (const CoordinateSequence *list)
| Returns true if the CoordinateSequence contains any null elements.
template<typename T>
static bool | hasNullElements (const std::vector< T > *geometries)
| Returns true if the vector contains any null elements.
static void | checkNotGeometryCollection (const Geometry *g)
template<typename T>
static int | compare (const T &a, const T &b)
template<typename T>
static std::vector< std::unique_ptr< Geometry > > | toGeometryArray (std::vector< std::unique_ptr< T > > &&v)
static std::vector< std::unique_ptr< Geometry > > | toGeometryArray (std::vector< std::unique_ptr< Geometry > > &&v)

## Detailed Description

Represents a collection of heterogeneous Geometry objects.

Collections of Geometry of the same type are represented by GeometryCollection subclasses MultiPoint, MultiLineString, MultiPolygon.

## Constructor & Destructor Documentation

## GeometryCollection()

geos::geom::GeometryCollection::GeometryCollection | ( | std::vector< std::unique_ptr< Geometry > > && | newGeoms,
|  | const GeometryFactory & | newFactory )

protected

Construct a GeometryCollection with the given GeometryFactory. Will keep a reference to the factory, so don't delete it until al Geometry objects referring to it are deleted. Will take ownership of the Geometry vector.

Parameters

  newGeoms | The `Geometry`s for this `GeometryCollection`, or `null` or an empty array to create the empty geometry. Elements may be empty `Geometry`s, but not `null`s.
  newFactory | the GeometryFactory used to create this geometry

## Member Function Documentation

## apply_ro() [1/4]

void geos::geom::GeometryCollection::apply_ro | ( | CoordinateFilter * | filter | ) | const

override virtual

Implements geos::geom::Geometry.

## apply_ro() [2/4]

void geos::geom::GeometryCollection::apply_ro | ( | CoordinateSequenceFilter & | filter | ) | const

override virtual

Performs a read-only operation on the coordinates in this Geometry's CoordinateSequences.

Parameters

  filter | the filter to apply

Implements geos::geom::Geometry.

## apply_ro() [3/4]

void geos::geom::GeometryCollection::apply_ro | ( | GeometryComponentFilter * | filter | ) | const

override virtual

Reimplemented from geos::geom::Geometry.

## apply_ro() [4/4]

void geos::geom::GeometryCollection::apply_ro | ( | GeometryFilter * | filter | ) | const

override virtual

Reimplemented from geos::geom::Geometry.

## apply_rw() [1/4]

void geos::geom::GeometryCollection::apply_rw | ( | const CoordinateFilter * | filter | ) |

override virtual

Implements geos::geom::Geometry.

## apply_rw() [2/4]

void geos::geom::GeometryCollection::apply_rw | ( | CoordinateSequenceFilter & | filter | ) |

override virtual

Performs an operation on the coordinates in this Geometry's CoordinateSequences. If the filter reports that a coordinate value has been changed, `geometryChanged` will be called automatically.

Parameters

  filter | the filter to apply

Implements geos::geom::Geometry.

## apply_rw() [3/4]

void geos::geom::GeometryCollection::apply_rw | ( | GeometryComponentFilter * | filter | ) |

override virtual

Reimplemented from geos::geom::Geometry.

## apply_rw() [4/4]

void geos::geom::GeometryCollection::apply_rw | ( | GeometryFilter * | filter | ) |

override virtual

Reimplemented from geos::geom::Geometry.

## clone()

std::unique_ptr< GeometryCollection > geos::geom::GeometryCollection::clone | ( |  | ) | const

inline

Creates and returns a full copy of this GeometryCollection object. (including all coordinates contained by it).

Returns
  a clone of this instance

References cloneImpl().

## cloneImpl()

GeometryCollection * geos::geom::GeometryCollection::cloneImpl | ( |  | ) | const

inline override protected virtual

Make a deep-copy of this Geometry.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

Referenced by clone().

## compareToSameClass()

int geos::geom::GeometryCollection::compareToSameClass | ( | const Geometry * | gc | ) | const

override protected virtual

Implements geos::geom::Geometry.

## equalsExact()

bool geos::geom::GeometryCollection::equalsExact | ( | const Geometry * | other,
|  | double | tolerance = 0 ) const

override virtual

Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are equal up to a specified distance tolerance. Geometries are not required to have the same dimemsion; any Z/M values are ignored.

Implements geos::geom::Geometry.

## equalsIdentical()

bool geos::geom::GeometryCollection::equalsIdentical | ( | const Geometry * | other | ) | const

override virtual

Returns true if the two geometries are of the same type and their vertices corresponding by index are equal in all dimensions.

Implements geos::geom::Geometry.

## geometryChangedAction()

void geos::geom::GeometryCollection::geometryChangedAction | ( |  | ) |

inline override protected virtual

Notifies this Geometry that its Coordinates have been changed by an external party.

Implements geos::geom::Geometry.

## getArea()

double geos::geom::GeometryCollection::getArea | ( |  | ) | const

override virtual

Returns the total area of this collection.

Reimplemented from geos::geom::Geometry.

## getBoundary()

std::unique_ptr< Geometry > geos::geom::GeometryCollection::getBoundary | ( |  | ) | const

override virtual

Returns the boundary, or an empty geometry of appropriate dimension if this `Geometry` is empty.

(In the case of zero-dimensional geometries, an empty GeometryCollection is returned.) For a discussion of this function, see the OpenGIS Simple Features Specification. As stated in SFS Section 2.1.13.1, "the boundary of a Geometry is a set of Geometries of the next lower dimension."

Returns
  the closure of the combinatorial boundary of this `Geometry`. Ownershipof the returned object transferred to caller.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getBoundaryDimension()

int geos::geom::GeometryCollection::getBoundaryDimension | ( |  | ) | const

override virtual

Returns the maximum boundary dimension of geometries in this collection.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getCoordinate()

const CoordinateXY * geos::geom::GeometryCollection::getCoordinate | ( |  | ) | const

override virtual

Returns a vertex of this Geometry, or NULL if this is the empty geometry.

Implements geos::geom::Geometry.

## getCoordinateDimension()

uint8_t geos::geom::GeometryCollection::getCoordinateDimension | ( |  | ) | const

override virtual

Returns coordinate dimension.

Implements geos::geom::Geometry.

## getCoordinates()

std::unique_ptr< CoordinateSequence > geos::geom::GeometryCollection::getCoordinates | ( |  | ) | const

override virtual

Collects all coordinates of all subgeometries into a CoordinateSequence.

Note that the returned coordinates are copies, so you want be able to use them to modify the geometries in place. Also you'll need to delete the CoordinateSequence when finished using it.

Returns
  the collected coordinates

Implements geos::geom::Geometry.

## getDimension()

Dimension::DimensionType geos::geom::GeometryCollection::getDimension | ( |  | ) | const

override virtual

Returns the maximum dimension of geometries in this collection (0=point, 1=line, 2=surface).

See also
  Dimension::DimensionType

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getEnvelopeInternal()

const Envelope * geos::geom::GeometryCollection::getEnvelopeInternal | ( |  | ) | const

inline override virtual

Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty.

Implements geos::geom::Geometry.

## getGeometryN()

const Geometry * geos::geom::GeometryCollection::getGeometryN | ( | std::size_t | n | ) | const

override virtual

Returns a pointer to the nth Geometry in this collection.

Reimplemented from geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getGeometryType()

std::string geos::geom::GeometryCollection::getGeometryType | ( |  | ) | const

override virtual

Return a string representation of this Geometry type.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getGeometryTypeId()

GeometryTypeId geos::geom::GeometryCollection::getGeometryTypeId | ( |  | ) | const

override virtual

Return an integer representation of this Geometry type.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## getLength()

double geos::geom::GeometryCollection::getLength | ( |  | ) | const

override virtual

Returns the total length of this collection.

Reimplemented from geos::geom::Geometry.

## getNumGeometries()

std::size_t geos::geom::GeometryCollection::getNumGeometries | ( |  | ) | const

override virtual

Returns the number of geometries in this collection.

Reimplemented from geos::geom::Geometry.

## getNumPoints()

std::size_t geos::geom::GeometryCollection::getNumPoints | ( |  | ) | const

override virtual

Returns the count of this Geometrys vertices.

Implements geos::geom::Geometry.

## getSortIndex()

int geos::geom::GeometryCollection::getSortIndex | ( |  | ) | const

inline override protected virtual

Implements geos::geom::Geometry.

## hasCurvedComponents()

bool geos::geom::GeometryCollection::hasCurvedComponents | ( |  | ) | const

override protected virtual

Returns whether the Geometry contains curved components.

Reimplemented from geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## hasDimension()

bool geos::geom::GeometryCollection::hasDimension | ( | Dimension::DimensionType | d | ) | const

override virtual

Checks whether any component of this geometry has dimension d.

Reimplemented from geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## hasM()

bool geos::geom::GeometryCollection::hasM | ( |  | ) | const

override virtual

Implements geos::geom::Geometry.

## hasZ()

bool geos::geom::GeometryCollection::hasZ | ( |  | ) | const

override virtual

Implements geos::geom::Geometry.

## isDimensionStrict()

bool geos::geom::GeometryCollection::isDimensionStrict | ( | Dimension::DimensionType | d | ) | const

override virtual

Checks whether this Geometry consists only of components having dimension d.

Reimplemented from geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

## isEmpty()

bool geos::geom::GeometryCollection::isEmpty | ( |  | ) | const

override virtual

Returns whether or not the set of points in this Geometry is empty.

Implements geos::geom::Geometry.

## normalize()

void geos::geom::GeometryCollection::normalize | ( |  | ) |

override virtual

Reorganizes this Geometry into normal form (or canonical form). Starting point of rings is lower left, collections are ordered by geometry type, etc.

Implements geos::geom::Geometry.

## releaseGeometries()

std::vector< std::unique_ptr< Geometry > > geos::geom::GeometryCollection::releaseGeometries | ( |  | ) |

Take ownership of the sub-geometries managed by this GeometryCollection. After releasing the sub-geometries, the collection should be considered in a moved-from state and should not be accessed.

Returns
  vector of sub-geometries

## reverse()

std::unique_ptr< GeometryCollection > geos::geom::GeometryCollection::reverse | ( |  | ) | const

inline

Creates a GeometryCollection with every component reversed. The order of the components in the collection are not reversed.

Returns
  a GeometryCollection in the reverse order

References reverseImpl().

## reverseImpl()

GeometryCollection * geos::geom::GeometryCollection::reverseImpl | ( |  | ) | const

override protected virtual

Make a geometry with coordinates in reverse order.

Implements geos::geom::Geometry.

Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.

Referenced by reverse().

## setSRID()

void geos::geom::GeometryCollection::setSRID | ( | int | newSRID | ) |

override virtual

Sets the ID of the Spatial Reference System used by the Geometry.

Reimplemented from geos::geom::Geometry.

The documentation for this class was generated from the following file:

- GeometryCollection.h