geos::geom::GeometryFactory Class Reference

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

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.
std::unique_ptr< Point > | createPoint (bool hasZ, bool hasM) const
std::unique_ptr< Point > | createPoint (const Coordinate &coordinate) const
| Creates a Point using the given Coordinate.
std::unique_ptr< Point > | createPoint (const CoordinateXY &coordinate) const
std::unique_ptr< Point > | createPoint (const CoordinateXYM &coordinate) const
std::unique_ptr< Point > | createPoint (const CoordinateXYZM &coordinate) const
std::unique_ptr< Point > | createPoint (std::unique_ptr< CoordinateSequence > &&coordinates) const
| Creates a Point taking ownership of the given CoordinateSequence.
std::unique_ptr< 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 (GeometryTypeId type=GEOS_GEOMETRYCOLLECTION, bool hasZ=false, bool hasM=false) const
| Construct the EMPTY Geometry.
template<typename T>
std::unique_ptr< GeometryCollection > | createGeometryCollection (std::vector< std::unique_ptr< T > > &&newGeoms) const
| Construct a GeometryCollection taking ownership of given arguments.
std::unique_ptr< 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.
std::unique_ptr< 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
| Construct a MultiLineString taking ownership of given arguments.
std::unique_ptr< MultiLineString > | createMultiLineString (std::vector< std::unique_ptr< Geometry > > &&fromLines) const
std::unique_ptr< MultiCurve > | createMultiCurve () const
| Construct an EMPTY MultiCurve.
std::unique_ptr< MultiCurve > | createMultiCurve (std::vector< std::unique_ptr< Geometry > > &&fromCurves) const
| Construct a MultiCurve taking ownership of given arguments.
std::unique_ptr< MultiCurve > | createMultiCurve (std::vector< std::unique_ptr< Curve > > &&fromCurves) const
std::unique_ptr< MultiPolygon > | createMultiPolygon () const
| Construct an EMPTY MultiPolygon.
std::unique_ptr< 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
| Construct a MultiPolygon taking ownership of given arguments.
std::unique_ptr< MultiPolygon > | createMultiPolygon (std::vector< std::unique_ptr< Geometry > > &&fromPolys) const
std::unique_ptr< MultiSurface > | createMultiSurface () const
| Construct an EMPTY MultiSurface.
std::unique_ptr< MultiSurface > | createMultiSurface (std::vector< std::unique_ptr< Geometry > > &&from) const
| Construct a MultiSurface taking ownership of given arguments.
std::unique_ptr< MultiSurface > | createMultiSurface (std::vector< std::unique_ptr< Surface > > &&from) const
std::unique_ptr< LinearRing > | createLinearRing (std::size_t coordinateDimension=2) const
| Construct an EMPTY LinearRing.
std::unique_ptr< LinearRing > | createLinearRing (bool hasZ, bool hasM) const
std::unique_ptr< LinearRing > | createLinearRing (std::unique_ptr< CoordinateSequence > &&newCoords) const
| Construct a LinearRing taking ownership of given arguments.
std::unique_ptr< 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`.
template<typename T>
std::unique_ptr< MultiPoint > | createMultiPoint (const T &fromCoords) const
std::unique_ptr< MultiPoint > | createMultiPoint (std::vector< std::unique_ptr< Point > > &&newPoints) const
| Construct a MultiPoint taking ownership of given arguments.
std::unique_ptr< MultiPoint > | createMultiPoint (std::vector< std::unique_ptr< Geometry > > &&newPoints) const
std::unique_ptr< MultiPoint > | createMultiPoint (const std::vector< const Geometry * > &fromPoints) const
| Construct a MultiPoint with a deep-copy of given arguments.
std::unique_ptr< MultiPoint > | createMultiPoint (const CoordinateSequence &fromCoords) const
| Construct a MultiPoint containing a Point geometry for each Coordinate in the given list.
std::unique_ptr< Polygon > | createPolygon (std::size_t coordinateDimension=2) const
| Construct an EMPTY Polygon.
std::unique_ptr< Polygon > | createPolygon (bool hasZ, bool hasM) const
std::unique_ptr< Polygon > | createPolygon (std::unique_ptr< LinearRing > &&shell) const
| Construct a Polygon taking ownership of given arguments.
std::unique_ptr< Polygon > | createPolygon (std::unique_ptr< LinearRing > &&shell, std::vector< std::unique_ptr< LinearRing > > &&holes) const
std::unique_ptr< Polygon > | createPolygon (CoordinateSequence &&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< CurvePolygon > | createCurvePolygon (bool hasZ, bool hasM) const
| Construct an EMPTY CurvePolygon.
std::unique_ptr< CurvePolygon > | createCurvePolygon (std::unique_ptr< Curve > &&shell) const
| Construct a CurvePolygon taking ownership of given arguments.
std::unique_ptr< CurvePolygon > | createCurvePolygon (std::unique_ptr< Curve > &&shell, std::vector< std::unique_ptr< Curve > > &&holes) const
std::unique_ptr< LineString > | createLineString (std::size_t coordinateDimension=2) const
| Construct an EMPTY LineString.
std::unique_ptr< LineString > | createLineString (bool hasZ, bool hasM) const
std::unique_ptr< LineString > | createLineString (const LineString &ls) const
| Copy a LineString.
std::unique_ptr< LineString > | createLineString (std::unique_ptr< CoordinateSequence > &&coordinates) const
| Construct a LineString taking ownership of given argument.
std::unique_ptr< LineString > | createLineString (const CoordinateSequence &coordinates) const
| Construct a LineString with a deep-copy of given argument.
std::unique_ptr< CircularString > | createCircularString (bool hasZ, bool hasM) const
| Construct an EMPTY CircularString.
std::unique_ptr< CircularString > | createCircularString (const CircularString &ls) const
| Copy a CircularString.
std::unique_ptr< CircularString > | createCircularString (std::unique_ptr< CoordinateSequence > &&coordinates) const
| Construct a CircularString taking ownership of given argument.
std::unique_ptr< CircularString > | createCircularString (const CoordinateSequence &coordinates) const
| Construct a CircularString with a deep-copy of given argument.
std::unique_ptr< CompoundCurve > | createCompoundCurve () const
| Construct an EMPTY CompoundCurve.
std::unique_ptr< CompoundCurve > | createCompoundCurve (std::vector< std::unique_ptr< SimpleCurve > > &&) const
| Construct a CompoundCurve taking ownership of given argument.
std::unique_ptr< Geometry > | createEmpty (int dimension) const
std::unique_ptr< Geometry > | createEmpty (GeometryTypeId typeId) const
std::unique_ptr< Geometry > | createMulti (std::unique_ptr< Geometry > &&geom) 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.
std::unique_ptr< 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.
int | getSRID () const
std::unique_ptr< 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)
| Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.
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.
static GeometryFactory::Ptr | create (const GeometryFactory &gf)
| Copy constructor.
static const GeometryFactory * | getDefaultInstance ()
| Return a pointer to the default GeometryFactory. This is a global shared object instantiated using default constructor.
static std::unique_ptr< Point > | createPointFromInternalCoord (const Coordinate *coord, const Geometry *exemplar)

## 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)
| Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.
| 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.
| GeometryFactory (const GeometryFactory &gf)
| Copy constructor.
virtual | ~GeometryFactory ()
| Destructor.

## Friends

class | Geometry

## Detailed Description

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.

## Constructor & Destructor Documentation

## GeometryFactory() [1/3]

geos::geom::GeometryFactory::GeometryFactory | ( | const PrecisionModel * | pm | ) |

protected

Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.

Parameters

  pm | the PrecisionModel to use

## GeometryFactory() [2/3]

geos::geom::GeometryFactory::GeometryFactory | ( | const PrecisionModel * | pm,
|  | int | newSRID )

protected

Constructs a GeometryFactory that generates Geometries having the given `PrecisionModel` and spatial-reference ID, and the default CoordinateSequence implementation.

Parameters

  pm | the PrecisionModel to use, will be copied internally
  newSRID | the SRID to use

## GeometryFactory() [3/3]

geos::geom::GeometryFactory::GeometryFactory | ( | const GeometryFactory & | gf | ) |

protected

Copy constructor.

Parameters

  gf | the GeometryFactory to clone from

References GeometryFactory().

## Member Function Documentation

## buildGeometry() [1/3]

std::unique_ptr< 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.

## buildGeometry() [2/3]

std::unique_ptr< Geometry > geos::geom::GeometryFactory::buildGeometry | ( | std::vector< std::unique_ptr< Geometry > > && | geoms | ) | const

Build an appropriate `Geometry`, `MultiGeometry`, or `GeometryCollection` to contain the `Geometry`s in it.

For example:

- If `geomList` contains a single `Polygon`, the `Polygon` is returned.
- If `geomList` contains several `Polygon`s, a `MultiPolygon` is returned.
- If `geomList` contains some `Polygon`s and some `LineString`s, a `GeometryCollection` is returned.
- If `geomList` is empty, an empty `GeometryCollection` is returned

Note 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.

Parameters

  geoms | the `Geometry`s to combine

Returns
  A `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

References buildGeometry().

Referenced by buildGeometry().

## buildGeometry() [3/3]

template<class T>

std::unique_ptr< Geometry > geos::geom::GeometryFactory::buildGeometry | ( | T | from,
|  | T | toofar ) const

inline

See buildGeometry(std::vector<Geometry *>&) for semantics.

Will clone the geometries accessible through the iterator.

Template Parameters

  T | an iterator yielding something which casts to const Geometry*

Parameters

  from | start iterator
  toofar | end iterator

References geos::geom::Dimension::A, createGeometryCollection(), createMultiLineString(), createMultiPoint(), createMultiPolygon(), geos::geom::Dimension::L, and geos::geom::Dimension::P.

## create() [1/3]

GeometryFactory::Ptr geos::geom::GeometryFactory::create | ( | const GeometryFactory & | gf | ) |

static

Copy constructor.

Parameters

  gf | the GeometryFactory to clone from

References GeometryFactory().

## create() [2/3]

GeometryFactory::Ptr geos::geom::GeometryFactory::create | ( | const PrecisionModel * | pm | ) |

static

Constructs a GeometryFactory that generates Geometries having the given PrecisionModel and the default CoordinateSequence implementation.

Parameters

  pm | the PrecisionModel to use

## create() [3/3]

GeometryFactory::Ptr geos::geom::GeometryFactory::create | ( | const PrecisionModel * | pm,
|  | int | newSRID )

static

Constructs a GeometryFactory that generates Geometries having the given `PrecisionModel` and spatial-reference ID, and the default CoordinateSequence implementation.

Parameters

  pm | the PrecisionModel to use, will be copied internally
  newSRID | the SRID to use

## createEmpty() [1/2]

std::unique_ptr< Geometry > geos::geom::GeometryFactory::createEmpty | ( | GeometryTypeId | typeId | ) | const

Creates an empty atomic geometry of the given type.

Parameters

  typeId | the desired GeometryTypeId

Returns
  an empty atomic geometry of given dimension

## createEmpty() [2/2]

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`.

Parameters

  dimension | the required dimension (-1, 0, 1 or 2)

Returns
  an empty atomic geometry of given dimension

## destroy()

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!).

## toGeometry()

std::unique_ptr< Geometry > geos::geom::GeometryFactory::toGeometry | ( | const Envelope * | envelope | ) | const

Converts an Envelope to a Geometry.

Returned Geometry can be a Point, a Polygon or an EMPTY geom.

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

- GeometryFactory.h