GEOS 3.11.1
|
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geometry objects. More...
#include <GeometryFactory.h>
Public Types | |
using | Ptr = std::unique_ptr< GeometryFactory, GeometryFactoryDeleter > |
Public Member Functions | |
Point * | createPointFromInternalCoord (const Coordinate *coord, const Geometry *exemplar) const |
std::unique_ptr< Geometry > | toGeometry (const Envelope *envelope) const |
const PrecisionModel * | getPrecisionModel () const |
Returns the PrecisionModel that Geometries created by this factory will be associated with. | |
std::unique_ptr< Point > | createPoint (std::size_t coordinateDimension=2) const |
Creates an EMPTY Point. | |
Point * | createPoint (const Coordinate &coordinate) const |
Creates a Point using the given Coordinate. | |
Point * | createPoint (CoordinateSequence *coordinates) const |
Creates a Point taking ownership of the given CoordinateSequence. | |
Point * | createPoint (const CoordinateSequence &coordinates) const |
Creates a Point with a deep-copy of the given CoordinateSequence. | |
std::unique_ptr< GeometryCollection > | createGeometryCollection () const |
Construct an EMPTY GeometryCollection. | |
std::unique_ptr< Geometry > | createEmptyGeometry () const |
Construct the EMPTY Geometry. | |
GeometryCollection * | createGeometryCollection (std::vector< Geometry * > *newGeoms) const |
Construct a GeometryCollection taking ownership of given arguments. | |
template<typename T > | |
std::unique_ptr< GeometryCollection > | createGeometryCollection (std::vector< std::unique_ptr< T > > &&newGeoms) const |
GeometryCollection * | createGeometryCollection (const std::vector< const Geometry * > &newGeoms) const |
Constructs a GeometryCollection with a deep-copy of args. | |
std::unique_ptr< MultiLineString > | createMultiLineString () const |
Construct an EMPTY MultiLineString. | |
MultiLineString * | createMultiLineString (std::vector< Geometry * > *newLines) const |
Construct a MultiLineString taking ownership of given arguments. | |
MultiLineString * | createMultiLineString (const std::vector< const Geometry * > &fromLines) const |
Construct a MultiLineString with a deep-copy of given arguments. | |
std::unique_ptr< MultiLineString > | createMultiLineString (std::vector< std::unique_ptr< LineString > > &&fromLines) const |
std::unique_ptr< MultiLineString > | createMultiLineString (std::vector< std::unique_ptr< Geometry > > &&fromLines) const |
std::unique_ptr< MultiPolygon > | createMultiPolygon () const |
Construct an EMPTY MultiPolygon. | |
MultiPolygon * | createMultiPolygon (std::vector< Geometry * > *newPolys) const |
Construct a MultiPolygon taking ownership of given arguments. | |
MultiPolygon * | createMultiPolygon (const std::vector< const Geometry * > &fromPolys) const |
Construct a MultiPolygon with a deep-copy of given arguments. | |
std::unique_ptr< MultiPolygon > | createMultiPolygon (std::vector< std::unique_ptr< Polygon > > &&fromPolys) const |
std::unique_ptr< MultiPolygon > | createMultiPolygon (std::vector< std::unique_ptr< Geometry > > &&fromPolys) const |
std::unique_ptr< LinearRing > | createLinearRing () const |
Construct an EMPTY LinearRing. | |
LinearRing * | createLinearRing (CoordinateSequence *newCoords) const |
Construct a LinearRing taking ownership of given arguments. | |
std::unique_ptr< LinearRing > | createLinearRing (std::unique_ptr< CoordinateSequence > &&newCoords) const |
std::unique_ptr< LinearRing > | createLinearRing (std::vector< Coordinate > &&coordinates) const |
LinearRing * | createLinearRing (const CoordinateSequence &coordinates) const |
Construct a LinearRing with a deep-copy of given arguments. | |
std::unique_ptr< MultiPoint > | createMultiPoint () const |
Constructs an EMPTY MultiPoint . | |
MultiPoint * | createMultiPoint (std::vector< Geometry * > *newPoints) const |
Construct a MultiPoint taking ownership of given arguments. | |
std::unique_ptr< MultiPoint > | createMultiPoint (std::vector< Coordinate > &&newPoints) const |
std::unique_ptr< MultiPoint > | createMultiPoint (std::vector< std::unique_ptr< Point > > &&newPoints) const |
std::unique_ptr< MultiPoint > | createMultiPoint (std::vector< std::unique_ptr< Geometry > > &&newPoints) const |
MultiPoint * | createMultiPoint (const std::vector< const Geometry * > &fromPoints) const |
Construct a MultiPoint with a deep-copy of given arguments. | |
MultiPoint * | createMultiPoint (const CoordinateSequence &fromCoords) const |
Construct a MultiPoint containing a Point geometry for each Coordinate in the given list. | |
MultiPoint * | createMultiPoint (const std::vector< Coordinate > &fromCoords) const |
Construct a MultiPoint containing a Point geometry for each Coordinate in the given vector. | |
std::unique_ptr< Polygon > | createPolygon (std::size_t coordinateDimension=2) const |
Construct an EMPTY Polygon. | |
Polygon * | createPolygon (LinearRing *shell, std::vector< LinearRing * > *holes) const |
Construct a Polygon taking ownership of given arguments. | |
std::unique_ptr< Polygon > | createPolygon (std::unique_ptr< LinearRing > &&shell) const |
std::unique_ptr< Polygon > | createPolygon (std::unique_ptr< LinearRing > &&shell, std::vector< std::unique_ptr< LinearRing > > &&holes) const |
std::unique_ptr< Polygon > | createPolygon (std::vector< Coordinate > &&coords) const |
Construct a Polygon from a Coordinate vector, taking ownership of the vector. | |
Polygon * | createPolygon (const LinearRing &shell, const std::vector< LinearRing * > &holes) const |
Construct a Polygon with a deep-copy of given arguments. | |
std::unique_ptr< LineString > | createLineString (std::size_t coordinateDimension=2) const |
Construct an EMPTY LineString. | |
std::unique_ptr< LineString > | createLineString (const LineString &ls) const |
Copy a LineString. | |
LineString * | createLineString (CoordinateSequence *coordinates) const |
Construct a LineString taking ownership of given argument. | |
std::unique_ptr< LineString > | createLineString (std::unique_ptr< CoordinateSequence > &&coordinates) const |
std::unique_ptr< LineString > | createLineString (std::vector< Coordinate > &&coordinates) const |
LineString * | createLineString (const CoordinateSequence &coordinates) const |
Construct a LineString with a deep-copy of given argument. | |
std::unique_ptr< Geometry > | createEmpty (int dimension) const |
Geometry * | buildGeometry (std::vector< Geometry * > *geoms) const |
std::unique_ptr< Geometry > | buildGeometry (std::vector< std::unique_ptr< Geometry > > &&geoms) const |
std::unique_ptr< Geometry > | buildGeometry (std::vector< std::unique_ptr< Point > > &&geoms) const |
std::unique_ptr< Geometry > | buildGeometry (std::vector< std::unique_ptr< LineString > > &&geoms) const |
std::unique_ptr< Geometry > | buildGeometry (std::vector< std::unique_ptr< Polygon > > &&geoms) const |
template<class T > | |
std::unique_ptr< Geometry > | buildGeometry (T from, T toofar) const |
See buildGeometry(std::vector<Geometry *>&) for semantics. More... | |
Geometry * | buildGeometry (const std::vector< const Geometry * > &geoms) const |
This function does the same thing of the omonimouse function taking vector pointer instead of reference. More... | |
int | getSRID () const |
const CoordinateSequenceFactory * | getCoordinateSequenceFactory () const |
Returns the CoordinateSequenceFactory associated with this GeometryFactory. | |
Geometry * | createGeometry (const Geometry *g) const |
Returns a clone of given Geometry. | |
void | destroyGeometry (Geometry *g) const |
Destroy a Geometry, or release it. | |
void | destroy () |
Static Public Member Functions | |
static GeometryFactory::Ptr | create () |
Constructs a GeometryFactory that generates Geometries having a floating PrecisionModel and a spatial-reference ID of 0. | |
static GeometryFactory::Ptr | create (const PrecisionModel *pm, int newSRID, CoordinateSequenceFactory *nCoordinateSequenceFactory) |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation. More... | |
static GeometryFactory::Ptr | create (CoordinateSequenceFactory *nCoordinateSequenceFactory) |
Constructs a GeometryFactory that generates Geometries having the given CoordinateSequence implementation, a double-precision floating PrecisionModel and a spatial-reference ID of 0. | |
static GeometryFactory::Ptr | create (const PrecisionModel *pm) |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation. More... | |
static GeometryFactory::Ptr | create (const PrecisionModel *pm, int newSRID) |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and spatial-reference ID, and the default CoordinateSequence implementation. More... | |
static GeometryFactory::Ptr | create (const GeometryFactory &gf) |
Copy constructor. More... | |
static const GeometryFactory * | getDefaultInstance () |
Return a pointer to the default GeometryFactory. This is a global shared object instantiated using default constructor. | |
Protected Member Functions | |
GeometryFactory () | |
Constructs a GeometryFactory that generates Geometries having a floating PrecisionModel and a spatial-reference ID of 0. | |
GeometryFactory (const PrecisionModel *pm, int newSRID, CoordinateSequenceFactory *nCoordinateSequenceFactory) | |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation. More... | |
GeometryFactory (CoordinateSequenceFactory *nCoordinateSequenceFactory) | |
Constructs a GeometryFactory that generates Geometries having the given CoordinateSequence implementation, a double-precision floating PrecisionModel and a spatial-reference ID of 0. | |
GeometryFactory (const PrecisionModel *pm) | |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation. More... | |
GeometryFactory (const PrecisionModel *pm, int newSRID) | |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and spatial-reference ID, and the default CoordinateSequence implementation. More... | |
GeometryFactory (const GeometryFactory &gf) | |
Copy constructor. More... | |
virtual | ~GeometryFactory () |
Destructor. | |
Friends | |
class | Geometry |
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geometry objects.
Note that the factory constructor methods do not change the input coordinates in any way. In particular, they are not rounded to the supplied PrecisionModel
. It is assumed that input Coordinates meet the given precision.
|
protected |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
NOTES: (1) the given PrecisionModel is COPIED (2) the CoordinateSequenceFactory is NOT COPIED and must be available for the whole lifetime of the GeometryFactory
|
protected |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.
pm | the PrecisionModel to use |
|
protected |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel
and spatial-reference ID, and the default CoordinateSequence implementation.
pm | the PrecisionModel to use, will be copied internally |
newSRID | the SRID to use |
|
protected |
Copy constructor.
gf | the GeometryFactory to clone from |
Geometry * geos::geom::GeometryFactory::buildGeometry | ( | const std::vector< const Geometry * > & | geoms | ) | const |
This function does the same thing of the omonimouse function taking vector pointer instead of reference.
The difference is that this version will copy needed data leaving ownership to the caller.
Build an appropriate Geometry
, MultiGeometry
, or GeometryCollection
to contain the Geometry
s in it.
For example:
geomList
contains a single Polygon
, the Polygon
is returned.geomList
contains several Polygon
s, a MultiPolygon
is returned.geomList
contains some Polygon
s and some LineString
s, a GeometryCollection
is returned.geomList
is empty, an empty GeometryCollection
is returnedNote that this method does not "flatten" Geometries in the input, and hence if any MultiGeometries are contained in the input a GeometryCollection containing them will be returned.
geoms | the Geometry s to combine |
Geometry
of the "smallest", "most type-specific" class that can contain the elements of geomList
.NOTE: the returned Geometry will take ownership of the given vector AND its elements
|
inline |
See buildGeometry(std::vector<Geometry *>&) for semantics.
Will clone the geometries accessible trough the iterator.
T | an iterator yielding something which casts to const Geometry* |
from | start iterator |
toofar | end iterator |
References geos::geom::Dimension::A, geos::geom::Dimension::L, and geos::geom::Dimension::P.
|
static |
Copy constructor.
gf | the GeometryFactory to clone from |
|
static |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.
pm | the PrecisionModel to use |
|
static |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel
and spatial-reference ID, and the default CoordinateSequence implementation.
pm | the PrecisionModel to use, will be copied internally |
newSRID | the SRID to use |
|
static |
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
NOTES: (1) the given PrecisionModel is COPIED (2) the CoordinateSequenceFactory is NOT COPIED and must be available for the whole lifetime of the GeometryFactory
std::unique_ptr< Geometry > geos::geom::GeometryFactory::createEmpty | ( | int | dimension | ) | const |
Creates an empty atomic geometry of the given dimension. If passed a dimension of -1 will create an empty GeometryCollection
.
dimension | the required dimension (-1, 0, 1 or 2) |
void geos::geom::GeometryFactory::destroy | ( | ) |
Request that the instance is deleted.
It will really be deleted only after last child Geometry is deleted. Do not use the instance anymore after calling this function (unless you're a live child!).