GEOS  3.14.0dev
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
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< GeometrytoGeometry (const Envelope *envelope) const
 
const PrecisionModelgetPrecisionModel () const
 Returns the PrecisionModel that Geometries created by this factory will be associated with.
 
std::unique_ptr< PointcreatePoint (std::size_t coordinateDimension=2) const
 Creates an EMPTY Point.
 
std::unique_ptr< PointcreatePoint (bool hasZ, bool hasM) const
 
std::unique_ptr< PointcreatePoint (const Coordinate &coordinate) const
 Creates a Point using the given Coordinate.
 
std::unique_ptr< PointcreatePoint (const CoordinateXY &coordinate) const
 
std::unique_ptr< PointcreatePoint (const CoordinateXYM &coordinate) const
 
std::unique_ptr< PointcreatePoint (const CoordinateXYZM &coordinate) const
 
std::unique_ptr< PointcreatePoint (std::unique_ptr< CoordinateSequence > &&coordinates) const
 Creates a Point taking ownership of the given CoordinateSequence.
 
std::unique_ptr< PointcreatePoint (const CoordinateSequence &coordinates) const
 Creates a Point with a deep-copy of the given CoordinateSequence.
 
std::unique_ptr< GeometryCollectioncreateGeometryCollection () const
 Construct an EMPTY GeometryCollection.
 
std::unique_ptr< GeometrycreateEmptyGeometry (GeometryTypeId type=GEOS_GEOMETRYCOLLECTION, bool hasZ=false, bool hasM=false) const
 Construct the EMPTY Geometry.
 
template<typename T >
std::unique_ptr< GeometryCollectioncreateGeometryCollection (std::vector< std::unique_ptr< T >> &&newGeoms) const
 Construct a GeometryCollection taking ownership of given arguments.
 
std::unique_ptr< GeometryCollectioncreateGeometryCollection (const std::vector< const Geometry * > &newGeoms) const
 Constructs a GeometryCollection with a deep-copy of args.
 
std::unique_ptr< MultiLineStringcreateMultiLineString () const
 Construct an EMPTY MultiLineString.
 
std::unique_ptr< MultiLineStringcreateMultiLineString (const std::vector< const Geometry * > &fromLines) const
 Construct a MultiLineString with a deep-copy of given arguments.
 
std::unique_ptr< MultiLineStringcreateMultiLineString (std::vector< std::unique_ptr< LineString >> &&fromLines) const
 Construct a MultiLineString taking ownership of given arguments.
 
std::unique_ptr< MultiLineStringcreateMultiLineString (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< MultiPolygoncreateMultiPolygon () const
 Construct an EMPTY MultiPolygon.
 
std::unique_ptr< MultiPolygoncreateMultiPolygon (const std::vector< const Geometry * > &fromPolys) const
 Construct a MultiPolygon with a deep-copy of given arguments.
 
std::unique_ptr< MultiPolygoncreateMultiPolygon (std::vector< std::unique_ptr< Polygon >> &&fromPolys) const
 Construct a MultiPolygon taking ownership of given arguments.
 
std::unique_ptr< MultiPolygoncreateMultiPolygon (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< LinearRingcreateLinearRing (std::size_t coordinateDimension=2) const
 Construct an EMPTY LinearRing.
 
std::unique_ptr< LinearRingcreateLinearRing (bool hasZ, bool hasM) const
 
std::unique_ptr< LinearRingcreateLinearRing (std::unique_ptr< CoordinateSequence > &&newCoords) const
 Construct a LinearRing taking ownership of given arguments.
 
std::unique_ptr< LinearRingcreateLinearRing (const CoordinateSequence &coordinates) const
 Construct a LinearRing with a deep-copy of given arguments.
 
std::unique_ptr< MultiPointcreateMultiPoint () const
 Constructs an EMPTY MultiPoint.
 
template<typename T >
std::unique_ptr< MultiPointcreateMultiPoint (const T &fromCoords) const
 
std::unique_ptr< MultiPointcreateMultiPoint (std::vector< std::unique_ptr< Point >> &&newPoints) const
 Construct a MultiPoint taking ownership of given arguments.
 
std::unique_ptr< MultiPointcreateMultiPoint (std::vector< std::unique_ptr< Geometry >> &&newPoints) const
 
std::unique_ptr< MultiPointcreateMultiPoint (const std::vector< const Geometry * > &fromPoints) const
 Construct a MultiPoint with a deep-copy of given arguments.
 
std::unique_ptr< MultiPointcreateMultiPoint (const CoordinateSequence &fromCoords) const
 Construct a MultiPoint containing a Point geometry for each Coordinate in the given list.
 
std::unique_ptr< PolygoncreatePolygon (std::size_t coordinateDimension=2) const
 Construct an EMPTY Polygon.
 
std::unique_ptr< PolygoncreatePolygon (bool hasZ, bool hasM) const
 
std::unique_ptr< PolygoncreatePolygon (std::unique_ptr< LinearRing > &&shell) const
 Construct a Polygon taking ownership of given arguments.
 
std::unique_ptr< PolygoncreatePolygon (std::unique_ptr< LinearRing > &&shell, std::vector< std::unique_ptr< LinearRing >> &&holes) const
 
std::unique_ptr< PolygoncreatePolygon (CoordinateSequence &&coords) const
 Construct a Polygon from a Coordinate vector, taking ownership of the vector.
 
PolygoncreatePolygon (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< LineStringcreateLineString (std::size_t coordinateDimension=2) const
 Construct an EMPTY LineString.
 
std::unique_ptr< LineStringcreateLineString (bool hasZ, bool hasM) const
 
std::unique_ptr< LineStringcreateLineString (const LineString &ls) const
 Copy a LineString.
 
std::unique_ptr< LineStringcreateLineString (std::unique_ptr< CoordinateSequence > &&coordinates) const
 Construct a LineString taking ownership of given argument.
 
std::unique_ptr< LineStringcreateLineString (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< GeometrycreateEmpty (int dimension) const
 
std::unique_ptr< GeometrycreateEmpty (GeometryTypeId typeId) const
 
std::unique_ptr< GeometrycreateMulti (std::unique_ptr< Geometry > &&geom) const
 
std::unique_ptr< GeometrybuildGeometry (std::vector< std::unique_ptr< Geometry >> &&geoms) const
 
std::unique_ptr< GeometrybuildGeometry (std::vector< std::unique_ptr< Point >> &&geoms) const
 
std::unique_ptr< GeometrybuildGeometry (std::vector< std::unique_ptr< LineString >> &&geoms) const
 
std::unique_ptr< GeometrybuildGeometry (std::vector< std::unique_ptr< Polygon >> &&geoms) const
 
template<class T >
std::unique_ptr< GeometrybuildGeometry (T from, T toofar) const
 See buildGeometry(std::vector<Geometry *>&) for semantics. More...
 
std::unique_ptr< GeometrybuildGeometry (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
 
std::unique_ptr< GeometrycreateGeometry (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. 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 GeometryFactorygetDefaultInstance ()
 Return a pointer to the default GeometryFactory. This is a global shared object instantiated using default constructor.
 
static std::unique_ptr< PointcreatePointFromInternalCoord (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. 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
 

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
pmthe 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
pmthe PrecisionModel to use, will be copied internally
newSRIDthe SRID to use

◆ GeometryFactory() [3/3]

geos::geom::GeometryFactory::GeometryFactory ( const GeometryFactory gf)
protected

Copy constructor.

Parameters
gfthe GeometryFactory to clone from

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 Geometrys in it.

For example:

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
geomsthe Geometrys 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

◆ buildGeometry() [3/3]

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

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

Will clone the geometries accessible through the iterator.

Template Parameters
Tan iterator yielding something which casts to const Geometry*
Parameters
fromstart iterator
toofarend iterator

References geos::geom::Dimension::A, geos::geom::Dimension::L, and geos::geom::Dimension::P.

◆ create() [1/3]

static GeometryFactory::Ptr geos::geom::GeometryFactory::create ( const GeometryFactory gf)
static

Copy constructor.

Parameters
gfthe GeometryFactory to clone from

◆ create() [2/3]

static 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
pmthe PrecisionModel to use

◆ create() [3/3]

static 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
pmthe PrecisionModel to use, will be copied internally
newSRIDthe 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
typeIdthe 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
dimensionthe 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: