GEOS 3.14.0dev
|
Represents a collection of heterogeneous Geometry objects. More...
#include <geos.h>
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. | |
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 |
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) |
Represents a collection of heterogeneous Geometry objects.
Collections of Geometry of the same type are represented by GeometryCollection subclasses MultiPoint, MultiLineString, MultiPolygon.
|
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.
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 |
|
overridevirtual |
Implements geos::geom::Geometry.
|
overridevirtual |
Performs a read-only operation on the coordinates in this Geometry's CoordinateSequences.
filter | the filter to apply |
Implements geos::geom::Geometry.
|
overridevirtual |
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
Implements geos::geom::Geometry.
|
overridevirtual |
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.
filter | the filter to apply |
Implements geos::geom::Geometry.
|
overridevirtual |
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
Reimplemented from geos::geom::Geometry.
|
inline |
Creates and returns a full copy of this GeometryCollection object. (including all coordinates contained by it).
|
inlineoverrideprotectedvirtual |
Make a deep-copy of this Geometry.
Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overrideprotectedvirtual |
Implements geos::geom::Geometry.
|
overridevirtual |
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.
|
overridevirtual |
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.
|
inlineoverrideprotectedvirtual |
Notifies this Geometry that its Coordinates have been changed by an external party.
Implements geos::geom::Geometry.
References geos::geom::Envelope::setToNull().
|
overridevirtual |
Returns the total area of this collection.
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
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."
Geometry
. Ownershipof the returned object transferred to caller. Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overridevirtual |
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.
|
overridevirtual |
Returns a vertex of this Geometry, or NULL if this is the empty geometry.
Implements geos::geom::Geometry.
|
overridevirtual |
Returns coordinate dimension.
Implements geos::geom::Geometry.
|
overridevirtual |
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.
Implements geos::geom::Geometry.
|
overridevirtual |
Returns the maximum dimension of geometries in this collection (0=point, 1=line, 2=surface)
Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
inlineoverridevirtual |
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.
|
overridevirtual |
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.
|
overridevirtual |
Return a string representation of this Geometry type.
Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overridevirtual |
Return an integer representation of this Geometry type.
Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overridevirtual |
Returns the total length of this collection.
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
Returns the number of geometries in this collection.
Reimplemented from geos::geom::Geometry.
|
overridevirtual |
Returns the count of this Geometrys vertices.
Implements geos::geom::Geometry.
|
inlineoverrideprotectedvirtual |
Implements geos::geom::Geometry.
|
overrideprotectedvirtual |
Returns whether the Geometry contains curved components.
Reimplemented from geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overridevirtual |
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.
|
overridevirtual |
Implements geos::geom::Geometry.
|
overridevirtual |
Implements geos::geom::Geometry.
|
overridevirtual |
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.
|
overridevirtual |
Returns whether or not the set of points in this Geometry is empty.
Implements geos::geom::Geometry.
|
overridevirtual |
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.
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.
|
inline |
Creates a GeometryCollection with every component reversed. The order of the components in the collection are not reversed.
|
overrideprotectedvirtual |
Make a geometry with coordinates in reverse order.
Implements geos::geom::Geometry.
Reimplemented in geos::geom::MultiLineString, geos::geom::MultiPoint, and geos::geom::MultiPolygon.
|
overridevirtual |
Sets the ID of the Spatial Reference System used by the Geometry.
Reimplemented from geos::geom::Geometry.