GEOS  3.9.1dev
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Attributes | Static Private Attributes | Friends | List of all members
geos::geom::Geometry Class Referenceabstract

Basic implementation of Geometry, constructed and destructed by GeometryFactory. More...

#include <geos.h>

Inheritance diagram for geos::geom::Geometry:
[legend]
Collaboration diagram for geos::geom::Geometry:
[legend]

Classes

class  GeometryChangedFilter
 

Public Types

using ConstVect = std::vector< const Geometry * >
 A vector of const Geometry pointers. More...
 
using NonConstVect = std::vector< Geometry * >
 A vector of non-const Geometry pointers. More...
 
using Ptr = std::unique_ptr< Geometry >
 An unique_ptr of Geometry. More...
 

Public Member Functions

virtual std::unique_ptr< Geometryclone () const =0
 Make a deep-copy of this Geometry. More...
 
virtual ~Geometry ()
 Destroy Geometry and all components. More...
 
const GeometryFactorygetFactory () const
 Gets the factory which contains the context in which this geometry was created. More...
 
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. More...
 
void * getUserData () const
 Gets the user data object for this geometry, if any. More...
 
virtual int getSRID () const
 Returns the ID of the Spatial Reference System used by the Geometry. More...
 
virtual void setSRID (int newSRID)
 Sets the ID of the Spatial Reference System used by the Geometry. More...
 
const PrecisionModelgetPrecisionModel () const
 Get the PrecisionModel used to create this Geometry. More...
 
virtual const CoordinategetCoordinate () const =0
 Returns a vertex of this Geometry, or NULL if this is the empty geometry. More...
 
virtual std::unique_ptr< CoordinateSequencegetCoordinates () const =0
 Returns this Geometry vertices. Caller takes ownership of the returned object. More...
 
virtual std::size_t getNumPoints () const =0
 Returns the count of this Geometrys vertices. More...
 
virtual bool isSimple () const
 Returns false if the Geometry not simple. More...
 
virtual std::string getGeometryType () const =0
 Return a string representation of this Geometry type. More...
 
virtual GeometryTypeId getGeometryTypeId () const =0
 Return an integer representation of this Geometry type. More...
 
virtual std::size_t getNumGeometries () const
 
virtual const GeometrygetGeometryN (std::size_t) const
 Returns a pointer to the nth Geometry in this collection (or self if this is not a collection) More...
 
virtual bool isValid () const
 Tests the validity of this Geometry. More...
 
virtual bool isEmpty () const =0
 Returns whether or not the set of points in this Geometry is empty. More...
 
virtual bool isRectangle () const
 Polygon overrides to check for actual rectangle. More...
 
virtual Dimension::DimensionType getDimension () const =0
 Returns the dimension of this Geometry (0=point, 1=line, 2=surface) More...
 
virtual bool isDimensionStrict (Dimension::DimensionType d) const
 Checks whether this Geometry consists only of components having dimension d. More...
 
bool isPuntal () const
 
bool isLineal () const
 
bool isPolygonal () const
 
bool isCollection () const
 
virtual uint8_t getCoordinateDimension () const =0
 Returns the coordinate dimension of this Geometry (2=XY, 3=XYZ, 4=XYZM in future). More...
 
virtual std::unique_ptr< GeometrygetBoundary () const =0
 Returns the boundary, or an empty geometry of appropriate dimension if this Geometry is empty. More...
 
virtual int getBoundaryDimension () const =0
 Returns the dimension of this Geometrys inherent boundary. More...
 
virtual std::unique_ptr< GeometrygetEnvelope () const
 Returns this Geometrys bounding box. More...
 
virtual const EnvelopegetEnvelopeInternal () const
 Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty. More...
 
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****. More...
 
virtual bool intersects (const Geometry *g) const
 Returns true if disjoint returns false. More...
 
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***. More...
 
virtual bool contains (const Geometry *g) const
 Returns true if other.within(this) returns true. More...
 
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). More...
 
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. More...
 
bool relate (const Geometry &g, const std::string &intersectionPattern) const
 
std::unique_ptr< IntersectionMatrixrelate (const Geometry *g) const
 Returns the DE-9IM intersection matrix for the two Geometrys. More...
 
std::unique_ptr< IntersectionMatrixrelate (const Geometry &g) const
 
virtual bool equals (const Geometry *g) const
 Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**FFF*. More...
 
bool covers (const Geometry *g) const
 Returns true if this geometry covers the specified geometry. More...
 
bool coveredBy (const Geometry *g) const
 Tests whether this geometry is covered by the specified geometry. More...
 
virtual std::string toString () const
 Returns the Well-known Text representation of this Geometry. More...
 
virtual std::string toText () const
 
std::unique_ptr< Geometrybuffer (double distance) const
 
std::unique_ptr< Geometrybuffer (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. More...
 
std::unique_ptr< Geometrybuffer (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. More...
 
virtual std::unique_ptr< GeometryconvexHull () const
 Returns the smallest convex Polygon that contains all the points in the Geometry. More...
 
virtual std::unique_ptr< Geometryreverse () const =0
 Computes a new geometry which has all component coordinate sequences in reverse order (opposite orientation) to this one. More...
 
std::unique_ptr< Geometryintersection (const Geometry *other) const
 Returns a Geometry representing the points shared by this Geometry and other. More...
 
std::unique_ptr< GeometryUnion (const Geometry *other) const
 Returns a Geometry representing all the points in this Geometry and other. More...
 
Ptr Union () const
 Computes the union of all the elements of this geometry. Heterogeneous GeometryCollections are fully supported. More...
 
std::unique_ptr< Geometrydifference (const Geometry *other) const
 Returns a Geometry representing the points making up this Geometry that do not make up other. More...
 
std::unique_ptr< GeometrysymDifference (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. More...
 
virtual bool equalsExact (const Geometry *other, double tolerance=0) const =0
 Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are equal up to a specified tolerance. More...
 
virtual void apply_rw (const CoordinateFilter *filter)=0
 
virtual void apply_ro (CoordinateFilter *filter) const =0
 
virtual void apply_rw (GeometryFilter *filter)
 
virtual void apply_ro (GeometryFilter *filter) const
 
virtual void apply_rw (GeometryComponentFilter *filter)
 
virtual void apply_ro (GeometryComponentFilter *filter) const
 
virtual void apply_rw (CoordinateSequenceFilter &filter)=0
 
virtual void apply_ro (CoordinateSequenceFilter &filter) const =0
 
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. More...
 
virtual void normalize ()=0
 
virtual int compareTo (const Geometry *geom) const
 Comparator for sorting geometry. More...
 
virtual double distance (const Geometry *g) const
 Returns the minimum distance between this Geometry and the Geometry g. More...
 
virtual double getArea () const
 Returns the area of this Geometry. More...
 
virtual double getLength () const
 Returns the length of this Geometry. More...
 
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. More...
 
virtual std::unique_ptr< PointgetCentroid () const
 Computes the centroid of this Geometry. More...
 
virtual bool getCentroid (Coordinate &ret) const
 Computes the centroid of this Geometry as a Coordinate. More...
 
std::unique_ptr< PointgetInteriorPoint () const
 Computes an interior point of this Geometry. More...
 
virtual void geometryChanged ()
 Notifies this Geometry that its Coordinates have been changed by an external party (using a CoordinateFilter, for example). More...
 
void geometryChangedAction ()
 Notifies this Geometry that its Coordinates have been changed by an external party. More...
 

Protected Member Functions

virtual bool isEquivalentClass (const Geometry *other) const
 Returns whether the two Geometrys are equal, from the point of view of the equalsExact method. More...
 
virtual Envelope::Ptr computeEnvelopeInternal () const =0
 
virtual int compareToSameClass (const Geometry *geom) const =0
 
int compare (std::vector< Coordinate > a, std::vector< Coordinate > b) const
 
int compare (std::vector< Geometry * > a, std::vector< Geometry * > b) const
 
int compare (const std::vector< std::unique_ptr< Geometry >> &a, const std::vector< std::unique_ptr< Geometry >> &b) const
 
bool equal (const Coordinate &a, const Coordinate &b, double tolerance) const
 
 Geometry (const Geometry &geom)
 
 Geometry (const GeometryFactory *factory)
 Construct a geometry with the given GeometryFactory. More...
 
virtual int getSortIndex () const =0
 

Static Protected Member Functions

template<typename T >
static bool hasNonEmptyElements (const std::vector< T > *geometries)
 Returns true if the array contains any non-empty Geometrys. More...
 
static bool hasNullElements (const CoordinateSequence *list)
 Returns true if the CoordinateSequence contains any null elements. More...
 
template<typename T >
static bool hasNullElements (const std::vector< T > *geometries)
 Returns true if the vector contains any null elements. More...
 
static void checkNotGeometryCollection (const Geometry *g)
 
template<typename T >
static std::vector< std::unique_ptr< Geometry > > toGeometryArray (std::vector< std::unique_ptr< T >> &&v)
 

Protected Attributes

std::unique_ptr< Envelopeenvelope
 The bounding box of this Geometry. More...
 
int SRID
 

Private Attributes

const GeometryFactory_factory
 
void * _userData
 

Static Private Attributes

static GeometryChangedFilter geometryChangedFilter
 

Friends

class GeometryFactory
 

Detailed Description

Basic implementation of Geometry, constructed and destructed by GeometryFactory.

clone returns a deep copy of the object. Use GeometryFactory to construct.

Binary Predicates

Because it is not clear at this time what semantics for spatial analysis methods involving GeometryCollections would be useful, GeometryCollections are not supported as arguments to binary predicates (other than convexHull) or the relate method.

Set-Theoretic Methods

The spatial analysis methods will return the most specific class possible to represent the result. If the result is homogeneous, a Point, LineString, or Polygon will be returned if the result contains a single element; otherwise, a MultiPoint, MultiLineString, or MultiPolygon will be returned. If the result is heterogeneous a GeometryCollection will be returned.

Because it is not clear at this time what semantics for set-theoretic methods involving GeometryCollections would be useful, GeometryCollections are not supported as arguments to the set-theoretic methods.

Representation of Computed Geometries

The SFS states that the result of a set-theoretic method is the "point-set" result of the usual set-theoretic definition of the operation (SFS 3.2.21.1). However, there are sometimes many ways of representing a point set as a Geometry.

The SFS does not specify an unambiguous representation of a given point set returned from a spatial analysis method. One goal of JTS is to make this specification precise and unambiguous. JTS will use a canonical form for Geometrys returned from spatial analysis methods. The canonical form is a Geometry which is simple and noded:

This definition implies that non-simple geometries which are arguments to spatial analysis methods must be subjected to a line-dissolve process to ensure that the results are simple.

Constructed Points And The Precision Model

The results computed by the set-theoretic methods may contain constructed points which are not present in the input Geometry. These new points arise from intersections between line segments in the edges of the input Geometry. In the general case it is not possible to represent constructed points exactly. This is due to the fact that the coordinates of an intersection point may contain twice as many bits of precision as the coordinates of the input line segments. In order to represent these constructed points explicitly, JTS must truncate them to fit the PrecisionModel.

Unfortunately, truncating coordinates moves them slightly. Line segments which would not be coincident in the exact result may become coincident in the truncated representation. This in turn leads to "topology collapses" – situations where a computed element has a lower dimension than it would in the exact result.

When JTS detects topology collapses during the computation of spatial analysis methods, it will throw an exception. If possible the exception will report the location of the collapse.

equals(Object) and hashCode are not overridden, so that when two topologically equal Geometries are added to HashMaps and HashSets, they remain distinct. This behaviour is desired in many cases.

Definition at line 188 of file Geometry.h.

Member Typedef Documentation

using geos::geom::Geometry::ConstVect = std::vector<const Geometry*>

A vector of const Geometry pointers.

Definition at line 195 of file Geometry.h.

A vector of non-const Geometry pointers.

Definition at line 198 of file Geometry.h.

using geos::geom::Geometry::Ptr = std::unique_ptr<Geometry>

An unique_ptr of Geometry.

Definition at line 201 of file Geometry.h.

Constructor & Destructor Documentation

virtual geos::geom::Geometry::~Geometry ( )
virtual

Destroy Geometry and all components.

geos::geom::Geometry::Geometry ( const Geometry geom)
protected
geos::geom::Geometry::Geometry ( const GeometryFactory factory)
protected

Construct a geometry 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.

Parameters
factory

Member Function Documentation

virtual void geos::geom::Geometry::apply_ro ( CoordinateFilter filter) const
pure virtual
virtual void geos::geom::Geometry::apply_ro ( GeometryFilter filter) const
virtual
virtual void geos::geom::Geometry::apply_ro ( GeometryComponentFilter filter) const
virtual
virtual void geos::geom::Geometry::apply_ro ( CoordinateSequenceFilter filter) const
pure virtual

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

Parameters
filterthe filter to apply

Implemented in geos::geom::LineString, geos::geom::GeometryCollection, geos::geom::Point, and geos::geom::Polygon.

virtual void geos::geom::Geometry::apply_rw ( const CoordinateFilter filter)
pure virtual
virtual void geos::geom::Geometry::apply_rw ( GeometryFilter filter)
virtual
virtual void geos::geom::Geometry::apply_rw ( GeometryComponentFilter filter)
virtual
virtual void geos::geom::Geometry::apply_rw ( CoordinateSequenceFilter filter)
pure 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
filterthe filter to apply

Implemented in geos::geom::LineString, geos::geom::GeometryCollection, geos::geom::Point, and geos::geom::Polygon.

template<class T >
void geos::geom::Geometry::applyComponentFilter ( T &  f) const
inline

Apply a filter to each component of this geometry. The filter is expected to provide a .filter(const Geometry*) method.

I intend similar templated methods to replace all the virtual apply_rw and apply_ro functions... –strk(2005-02-06);

Definition at line 768 of file Geometry.h.

Referenced by geos::operation::linemerge::LineSequencer::add().

Here is the caller graph for this function:

std::unique_ptr<Geometry> geos::geom::Geometry::buffer ( double  distance) const

Returns a buffer region around this Geometry having the given width.

Exceptions
util::TopologyExceptionif a robustness error occurs
std::unique_ptr<Geometry> geos::geom::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.

Exceptions
util::TopologyExceptionif a robustness error occurs
std::unique_ptr<Geometry> geos::geom::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.

Buffer area boundaries can contain circular arcs. To represent these arcs using linear geometry they must be approximated with line segments.

The quadrantSegments argument allows controlling the accuracy of the approximation by specifying the number of line segments used to represent a quadrant of a circle

The end cap style specifies the buffer geometry that will be created at the ends of linestrings. The styles provided are:

  • BufferOp::CAP_ROUND - (default) a semi-circle
  • BufferOp::CAP_BUTT - a straight line perpendicular to the end segment
  • BufferOp::CAP_SQUARE - a half-square
Parameters
distancethe width of the buffer (may be positive, negative or 0)
quadrantSegmentsthe number of line segments used to represent a quadrant of a circle
endCapStylethe end cap style to use
Returns
an area geometry representing the buffer region
Exceptions
util::TopologyExceptionif a robustness error occurs
See also
BufferOp
static void geos::geom::Geometry::checkNotGeometryCollection ( const Geometry g)
staticprotected
virtual std::unique_ptr<Geometry> geos::geom::Geometry::clone ( ) const
pure virtual
int geos::geom::Geometry::compare ( std::vector< Coordinate a,
std::vector< Coordinate b 
) const
protected
int geos::geom::Geometry::compare ( std::vector< Geometry * >  a,
std::vector< Geometry * >  b 
) const
protected
int geos::geom::Geometry::compare ( const std::vector< std::unique_ptr< Geometry >> &  a,
const std::vector< std::unique_ptr< Geometry >> &  b 
) const
protected
virtual int geos::geom::Geometry::compareTo ( const Geometry geom) const
virtual

Comparator for sorting geometry.

Referenced by geos::geom::LineStringLT::operator()().

Here is the caller graph for this function:

virtual int geos::geom::Geometry::compareToSameClass ( const Geometry geom) const
protectedpure virtual
virtual Envelope::Ptr geos::geom::Geometry::computeEnvelopeInternal ( ) const
protectedpure virtual
virtual bool geos::geom::Geometry::contains ( const Geometry g) const
virtual

Returns true if other.within(this) returns true.

virtual std::unique_ptr<Geometry> geos::geom::Geometry::convexHull ( ) const
virtual

Returns the smallest convex Polygon that contains all the points in the Geometry.

Reimplemented in geos::geom::Polygon.

bool geos::geom::Geometry::coveredBy ( const Geometry g) const
inline

Tests whether this geometry is covered by the specified geometry.

The coveredBy predicate has the following equivalent definitions:

  • Every point of this geometry is a point of the other geometry.
  • The DE-9IM Intersection Matrix for the two geometries matches [T*F**F***] or [*TF**F***] or [**FT*F***] or [**F*TF***]
  • g.covers(this) (coveredBy is the converse of covers)

If either geometry is empty, the value of this predicate is false.

This predicate is similar to within, but is more inclusive (i.e. returns true for more cases).

Parameters
gthe Geometry with which to compare this Geometry
Returns
true if this Geometry is covered by g
See also
Geometry::within
Geometry::covers

Definition at line 581 of file Geometry.h.

References covers().

Here is the call graph for this function:

bool geos::geom::Geometry::covers ( const Geometry g) const

Returns true if this geometry covers the specified geometry.

The covers predicate has the following equivalent definitions:

  • Every point of the other geometry is a point of this geometry.
  • The DE-9IM Intersection Matrix for the two geometries is T*****FF* or *T****FF* or ***T**FF* or ****T*FF*
  • g.coveredBy(this) (covers is the inverse of coveredBy)

If either geometry is empty, the value of this predicate is false.

This predicate is similar to contains, but is more inclusive (i.e. returns true for more cases). In particular, unlike contains it does not distinguish between points in the boundary and in the interior of geometries. For most situations, covers should be used in preference to contains. As an added benefit, covers is more amenable to optimization, and hence should be more performant.

Parameters
gthe Geometry with which to compare this Geometry
Returns
true if this Geometry covers g
See also
Geometry::contains
Geometry::coveredBy

Referenced by coveredBy().

Here is the caller graph for this function:

virtual bool geos::geom::Geometry::crosses ( const Geometry g) const
virtual

Tests whether this geometry crosses the specified geometry.

The crosses predicate has the following equivalent definitions:

  • The geometries have some but not all interior points in common.
  • The DE-9IM Intersection Matrix for the two geometries matches
    • [T*T******] (for P/L, P/A, and L/A situations)
    • [T*****T**] (for L/P, A/P, and A/L situations)
    • [0********] (for L/L situations) For any other combination of dimensions this predicate returns false.

The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations. JTS extends the definition to apply to L/P, A/P and A/L situations as well, in order to make the relation symmetric.

Parameters
gthe Geometry with which to compare this Geometry
Returns
true if the two Geometrys cross.
std::unique_ptr<Geometry> geos::geom::Geometry::difference ( const Geometry other) const

Returns a Geometry representing the points making up this Geometry that do not make up other.

Exceptions
util::TopologyExceptionif a robustness error occurs
util::IllegalArgumentExceptionif either input is a non-empty GeometryCollection
virtual bool geos::geom::Geometry::disjoint ( const Geometry other) const
virtual

Tests whether this geometry is disjoint from the specified geometry.

The disjoint predicate has the following equivalent definitions:

  • The two geometries have no point in common
  • The DE-9IM Intersection Matrix for the two geometries matches [FF*FF****]
  • ! g.intersects(this) (disjoint is the inverse of intersects)
Parameters
otherthe Geometry with which to compare this Geometry
Returns
true if the two Geometrys are disjoint
See also
Geometry::intersects
virtual double geos::geom::Geometry::distance ( const Geometry g) const
virtual

Returns the minimum distance between this Geometry and the Geometry g.

bool geos::geom::Geometry::equal ( const Coordinate a,
const Coordinate b,
double  tolerance 
) const
protected
virtual bool geos::geom::Geometry::equals ( const Geometry g) const
virtual

Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**FFF*.

virtual bool geos::geom::Geometry::equalsExact ( const Geometry other,
double  tolerance = 0 
) const
pure virtual

Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are equal up to a specified tolerance.

Implemented in geos::geom::LineString, geos::geom::Point, geos::geom::GeometryCollection, geos::geom::Polygon, geos::geom::MultiPolygon, geos::geom::MultiPoint, and geos::geom::MultiLineString.

virtual void geos::geom::Geometry::geometryChanged ( )
virtual

Notifies this Geometry that its Coordinates have been changed by an external party (using a CoordinateFilter, for example).

void geos::geom::Geometry::geometryChangedAction ( )

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

virtual double geos::geom::Geometry::getArea ( ) const
virtual

Returns the area of this Geometry.

Reimplemented in geos::geom::GeometryCollection, and geos::geom::Polygon.

virtual std::unique_ptr<Geometry> geos::geom::Geometry::getBoundary ( ) const
pure 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.

Implemented in geos::geom::GeometryCollection, geos::geom::Point, geos::geom::LineString, geos::geom::Polygon, geos::geom::MultiPolygon, geos::geom::MultiPoint, and geos::geom::MultiLineString.

virtual int geos::geom::Geometry::getBoundaryDimension ( ) const
pure virtual
virtual std::unique_ptr<Point> geos::geom::Geometry::getCentroid ( ) const
virtual

Computes the centroid of this Geometry.

The centroid is equal to the centroid of the set of component Geometries of highest dimension (since the lower-dimension geometries contribute zero "weight" to the centroid)

Returns
a Point which is the centroid of this Geometry
virtual bool geos::geom::Geometry::getCentroid ( Coordinate ret) const
virtual

Computes the centroid of this Geometry as a Coordinate.

Returns false if centroid cannot be computed (EMPTY geometry)

virtual const Coordinate* geos::geom::Geometry::getCoordinate ( ) const
pure virtual

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

Implemented in geos::geom::LineString, geos::geom::GeometryCollection, geos::geom::Polygon, and geos::geom::Point.

virtual uint8_t geos::geom::Geometry::getCoordinateDimension ( ) const
pure virtual

Returns the coordinate dimension of this Geometry (2=XY, 3=XYZ, 4=XYZM in future).

Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::Point, and geos::geom::Polygon.

virtual std::unique_ptr<CoordinateSequence> geos::geom::Geometry::getCoordinates ( ) const
pure virtual

Returns this Geometry vertices. Caller takes ownership of the returned object.

Implemented in geos::geom::GeometryCollection, geos::geom::Point, geos::geom::LineString, and geos::geom::Polygon.

virtual Dimension::DimensionType geos::geom::Geometry::getDimension ( ) const
pure virtual
virtual std::unique_ptr<Geometry> geos::geom::Geometry::getEnvelope ( ) const
virtual

Returns this Geometrys bounding box.

virtual const Envelope* geos::geom::Geometry::getEnvelopeInternal ( ) const
virtual

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

const GeometryFactory* geos::geom::Geometry::getFactory ( ) const
inline

Gets the factory which contains the context in which this geometry was created.

Returns
the factory for this geometry

Definition at line 218 of file Geometry.h.

Referenced by geos::operation::geounion::UnaryUnionOp::extract().

Here is the caller graph for this function:

virtual const Geometry* geos::geom::Geometry::getGeometryN ( std::size_t  ) const
inlinevirtual

Returns a pointer to the nth Geometry in this collection (or self if this is not a collection)

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

Definition at line 318 of file Geometry.h.

virtual std::string geos::geom::Geometry::getGeometryType ( ) const
pure virtual
virtual GeometryTypeId geos::geom::Geometry::getGeometryTypeId ( ) const
pure virtual
std::unique_ptr<Point> geos::geom::Geometry::getInteriorPoint ( ) const

Computes an interior point of this Geometry.

An interior point is guaranteed to lie in the interior of the Geometry, if it possible to calculate such a point exactly. Otherwise, the point may lie on the boundary of the geometry.

Returns
a Point which is in the interior of this Geometry, or null if the geometry doesn't have an interior (empty)
virtual double geos::geom::Geometry::getLength ( ) const
virtual

Returns the length of this Geometry.

Reimplemented in geos::geom::LineString, geos::geom::GeometryCollection, and geos::geom::Polygon.

virtual std::size_t geos::geom::Geometry::getNumGeometries ( ) const
inlinevirtual

Returns the number of geometries in this collection (or 1 if this is not a collection)

Reimplemented in geos::geom::GeometryCollection.

Definition at line 310 of file Geometry.h.

virtual std::size_t geos::geom::Geometry::getNumPoints ( ) const
pure virtual

Returns the count of this Geometrys vertices.

Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::Point, and geos::geom::Polygon.

const PrecisionModel* geos::geom::Geometry::getPrecisionModel ( ) const

Get the PrecisionModel used to create this Geometry.

virtual int geos::geom::Geometry::getSortIndex ( ) const
protectedpure virtual

Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::Polygon, geos::geom::Point, geos::geom::MultiPoint, geos::geom::MultiLineString, geos::geom::MultiPolygon, and geos::geom::LinearRing.

Referenced by geos::geom::GeometryFactory::buildGeometry().

Here is the caller graph for this function:

virtual int geos::geom::Geometry::getSRID ( ) const
inlinevirtual

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

GEOS supports Spatial Reference System information in the simple way defined in the SFS. A Spatial Reference System ID (SRID) is present in each Geometry object. Geometry provides basic accessor operations for this field, but no others. The SRID is represented as an integer.

Returns
the ID of the coordinate space in which the Geometry is defined.

Definition at line 265 of file Geometry.h.

void* geos::geom::Geometry::getUserData ( ) const
inline

Gets the user data object for this geometry, if any.

Returns
the user data object, or null if none set

Definition at line 249 of file Geometry.h.

template<typename T >
static bool geos::geom::Geometry::hasNonEmptyElements ( const std::vector< T > *  geometries)
inlinestaticprotected

Returns true if the array contains any non-empty Geometrys.

Definition at line 861 of file Geometry.h.

References isEmpty().

Here is the call graph for this function:

static bool geos::geom::Geometry::hasNullElements ( const CoordinateSequence list)
staticprotected

Returns true if the CoordinateSequence contains any null elements.

template<typename T >
static bool geos::geom::Geometry::hasNullElements ( const std::vector< T > *  geometries)
inlinestaticprotected

Returns true if the vector contains any null elements.

Definition at line 870 of file Geometry.h.

std::unique_ptr<Geometry> geos::geom::Geometry::intersection ( const Geometry other) const

Returns a Geometry representing the points shared by this Geometry and other.

Exceptions
util::TopologyExceptionif a robustness error occurs
util::IllegalArgumentExceptionif either input is a non-empty GeometryCollection
virtual bool geos::geom::Geometry::intersects ( const Geometry g) const
virtual

Returns true if disjoint returns false.

bool geos::geom::Geometry::isCollection ( ) const
inline
virtual bool geos::geom::Geometry::isDimensionStrict ( Dimension::DimensionType  d) const
inlinevirtual

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

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

Definition at line 348 of file Geometry.h.

virtual bool geos::geom::Geometry::isEmpty ( ) const
pure virtual

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

Implemented in geos::geom::LineString, geos::geom::Polygon, geos::geom::GeometryCollection, and geos::geom::Point.

Referenced by hasNonEmptyElements().

Here is the caller graph for this function:

virtual bool geos::geom::Geometry::isEquivalentClass ( const Geometry other) const
protectedvirtual

Returns whether the two Geometrys are equal, from the point of view of the equalsExact method.

bool geos::geom::Geometry::isLineal ( ) const
inline

Definition at line 356 of file Geometry.h.

References geos::geom::Dimension::L.

Referenced by geos::linearref::LocationIndexedLine::checkGeometryType().

Here is the caller graph for this function:

bool geos::geom::Geometry::isPolygonal ( ) const
inline

Definition at line 360 of file Geometry.h.

References geos::geom::Dimension::A.

bool geos::geom::Geometry::isPuntal ( ) const
inline

Definition at line 352 of file Geometry.h.

References geos::geom::Dimension::P.

virtual bool geos::geom::Geometry::isRectangle ( ) const
inlinevirtual

Polygon overrides to check for actual rectangle.

Reimplemented in geos::geom::Polygon.

Definition at line 339 of file Geometry.h.

virtual bool geos::geom::Geometry::isSimple ( ) const
virtual

Returns false if the Geometry not simple.

Reimplemented in geos::geom::Point.

virtual bool geos::geom::Geometry::isValid ( ) const
virtual

Tests the validity of this Geometry.

Subclasses provide their own definition of "valid".

Returns
true if this Geometry is valid
See also
IsValidOp
virtual bool geos::geom::Geometry::isWithinDistance ( const Geometry geom,
double  cDistance 
) const
virtual

Tests whether the distance from this Geometry to another is less than or equal to a specified value.

Parameters
geomthe Geometry to check the distance to
cDistancethe distance value to compare
Returns
true if the geometries are less than distance apart.
Todo:
doesn't seem to need being virtual, make it concrete
virtual void geos::geom::Geometry::normalize ( )
pure virtual

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

Implemented in geos::geom::LineString, geos::geom::GeometryCollection, geos::geom::Point, and geos::geom::Polygon.

virtual bool geos::geom::Geometry::overlaps ( const Geometry g) const
virtual

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 geos::geom::Geometry::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.

IntersectionPattern elements may be: 0 1 2 T ( = 0, 1 or 2) F ( = -1) * ( = -1, 0, 1 or 2).

For more information on the DE-9IM, see the OpenGIS Simple Features Specification.

Exceptions
util::IllegalArgumentExceptionif either arg is a collection
bool geos::geom::Geometry::relate ( const Geometry g,
const std::string &  intersectionPattern 
) const
inline

Definition at line 490 of file Geometry.h.

std::unique_ptr<IntersectionMatrix> geos::geom::Geometry::relate ( const Geometry g) const

Returns the DE-9IM intersection matrix for the two Geometrys.

std::unique_ptr<IntersectionMatrix> geos::geom::Geometry::relate ( const Geometry g) const
inline

Definition at line 498 of file Geometry.h.

virtual std::unique_ptr<Geometry> geos::geom::Geometry::reverse ( ) const
pure virtual

Computes a new geometry which has all component coordinate sequences in reverse order (opposite orientation) to this one.

Returns
a reversed geometry

Implemented in geos::geom::LineString, geos::geom::GeometryCollection, geos::geom::Point, geos::geom::Polygon, geos::geom::LinearRing, geos::geom::MultiPoint, geos::geom::MultiLineString, and geos::geom::MultiPolygon.

virtual void geos::geom::Geometry::setSRID ( int  newSRID)
inlinevirtual

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

Reimplemented in geos::geom::GeometryCollection.

Definition at line 274 of file Geometry.h.

void geos::geom::Geometry::setUserData ( void *  newUserData)
inline

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.

Note that user data objects are not present in geometries created by construction methods.

Parameters
newUserDataan object, the semantics for which are defined by the application using this Geometry

Definition at line 237 of file Geometry.h.

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

Exceptions
util::TopologyExceptionif a robustness error occurs
util::IllegalArgumentExceptionif either input is a non-empty GeometryCollection
template<typename T >
static std::vector<std::unique_ptr<Geometry> > geos::geom::Geometry::toGeometryArray ( std::vector< std::unique_ptr< T >> &&  v)
inlinestaticprotected

Definition at line 920 of file Geometry.h.

Referenced by geos::geom::GeometryFactory::createGeometryCollection().

Here is the caller graph for this function:

virtual std::string geos::geom::Geometry::toString ( ) const
virtual

Returns the Well-known Text representation of this Geometry.

virtual std::string geos::geom::Geometry::toText ( ) const
virtual
virtual bool geos::geom::Geometry::touches ( const Geometry other) const
virtual

Returns true if the DE-9IM intersection matrix for the two Geometrys is FT*******, F**T***** or F***T****.

std::unique_ptr<Geometry> geos::geom::Geometry::Union ( const Geometry other) const

Returns a Geometry representing all the points in this Geometry and other.

Exceptions
util::TopologyExceptionif a robustness error occurs
util::IllegalArgumentExceptionif either input is a non-empty GeometryCollection
Ptr geos::geom::Geometry::Union ( ) const

Computes the union of all the elements of this geometry. Heterogeneous GeometryCollections are fully supported.

The result obeys the following contract:

Returns
the union geometry
See also
UnaryUnionOp
virtual bool geos::geom::Geometry::within ( const Geometry g) const
virtual

Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**F***.

Friends And Related Function Documentation

friend class GeometryFactory
friend

Definition at line 192 of file Geometry.h.

Member Data Documentation

const GeometryFactory* geos::geom::Geometry::_factory
private

The GeometryFactory used to create this Geometry

Externally owned

Definition at line 947 of file Geometry.h.

void* geos::geom::Geometry::_userData
private

Definition at line 949 of file Geometry.h.

std::unique_ptr<Envelope> geos::geom::Geometry::envelope
mutableprotected

The bounding box of this Geometry.

Definition at line 857 of file Geometry.h.

GeometryChangedFilter geos::geom::Geometry::geometryChangedFilter
staticprivate

Definition at line 941 of file Geometry.h.

int geos::geom::Geometry::SRID
protected

Definition at line 904 of file Geometry.h.


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