#include <geos.h>
Inheritance diagram for geos::geom::Geometry:
Public Types  
typedef std::vector< const Geometry * >  ConstVect 
A vector of const Geometry pointers.  
typedef std::vector< Geometry * >  NonConstVect 
A vector of nonconst Geometry pointers.  
typedef std::auto_ptr< Geometry >  AutoPtr 
An auto_ptr of Geometry.  
Public Member Functions  
virtual Geometry *  clone () const =0 
Make a deepcopy 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 () 
Gets the user data object for this geometry, if any.  
virtual int  getSRID () const 
virtual void  setSRID (int newSRID) 
const PrecisionModel *  getPrecisionModel () const 
Get the PrecisionModel used to create this Geometry.  
virtual const Coordinate *  getCoordinate () const =0 
Returns a vertex of this Geometry, or NULL if this is the empty geometry.  
virtual CoordinateSequence *  getCoordinates () const =0 
Returns this Geometry vertices. Caller takes ownership of the returned object.  
virtual size_t  getNumPoints () const =0 
Returns the count of this Geometrys vertices.  
virtual bool  isSimple () const 
Returns false if the Geometry not simple.  
virtual std::string  getGeometryType () const =0 
Return a string representation of this Geometry type.  
virtual GeometryTypeId  getGeometryTypeId () const =0 
Return an integer representation of this Geometry type.  
virtual size_t  getNumGeometries () const 
virtual const Geometry *  getGeometryN (size_t) const 
virtual bool  isValid () const 
Tests the validity of this Geometry .  
virtual bool  isEmpty () const =0 
Returns whether or not the set of points in this Geometry is empty.  
virtual bool  isRectangle () const 
Polygon overrides to check for actual rectangle.  
virtual Dimension::DimensionType  getDimension () const =0 
Returns the dimension of this Geometry (0=point, 1=line, 2=surface).  
virtual Geometry *  getBoundary () const =0 
Returns the boundary, or an empty geometry of appropriate dimension if this Geometry is empty.  
virtual int  getBoundaryDimension () const =0 
Returns the dimension of this Geometrys inherent boundary.  
virtual Geometry *  getEnvelope () const 
Returns this Geometrys bounding box.  
virtual const Envelope *  getEnvelopeInternal () const 
Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty.  
virtual bool  disjoint (const Geometry *other) const 
virtual bool  touches (const Geometry *other) const 
Returns true if the DE9IM 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 DE9IM 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 DE9IM intersection matrix for the two Geometrys is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).  
virtual bool  relate (const Geometry *g, const std::string &intersectionPattern) const 
Returns true if the elements in the DE9IM intersection matrix for the two Geometrys match the elements in intersectionPattern.  
bool  relate (const Geometry &g, const std::string &intersectionPattern) const 
virtual IntersectionMatrix *  relate (const Geometry *g) const 
Returns the DE9IM intersection matrix for the two Geometrys.  
IntersectionMatrix *  relate (const Geometry &g) const 
virtual bool  equals (const Geometry *g) const 
Returns true if the DE9IM 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 Wellknown Text representation of this Geometry.  
virtual std::string  toText () const 
virtual Geometry *  buffer (double distance) const 
Returns a buffer region around this Geometry having the given width.  
virtual 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.  
virtual 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 Geometry *  convexHull () const 
Returns the smallest convex Polygon that contains all the points in the Geometry.  
virtual Geometry *  intersection (const Geometry *other) const 
Returns a Geometry representing the points shared by this Geometry and other.  
virtual Geometry *  Union (const Geometry *other) const 
Returns a Geometry representing all the points in this Geometry and other.  
virtual Geometry *  difference (const Geometry *other) const 
Returns a Geometry representing the points making up this Geometry that do not make up other.  
virtual 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.  
virtual bool  equalsExact (const Geometry *other, double tolerance=0) const =0 
Returns true if the two Geometrys are exactly equal, up to a specified tolerance.  
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 fiter to each component of this geometry. The filter is expected to provide a .filter(const Geometry*) method.  
virtual void  normalize ()=0 
Converts this Geometry to normal form (or canonical form).  
virtual int  compareTo (const Geometry *geom) const 
virtual double  distance (const Geometry *g) const 
Returns the minimum distance between this Geometry and the Geometry g.  
virtual double  getArea () const 
Returns the area of this Geometry.  
virtual double  getLength () const 
Returns the length of this Geometry.  
virtual bool  isWithinDistance (const Geometry *geom, double cDistance) 
Tests whether the distance from this Geometry to another is less than or equal to a specified value.  
virtual Point *  getCentroid () const 
Computes the centroid of this Geometry .  
virtual bool  getCentroid (Coordinate &ret) const 
Computes the centroid of this Geometry as a Coordinate.  
virtual Point *  getInteriorPoint () const 
Computes an interior point of this Geometry .  
virtual void  geometryChanged () 
void  geometryChangedAction () 
Notifies this Geometry that its Coordinates have been changed by an external party.  
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.  
virtual Envelope::AutoPtr  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 
bool  equal (const Coordinate &a, const Coordinate &b, double tolerance) const 
Geometry (const Geometry &geom)  
Polygon overrides to check for actual rectangle.  
Geometry (const GeometryFactory *factory)  
Construct a geometry with the given GeometryFactory.  
Static Protected Member Functions  
static bool  hasNonEmptyElements (const std::vector< Geometry * > *geometries) 
Returns true if the array contains any nonempty Geometrys.  
static bool  hasNullElements (const CoordinateSequence *list) 
Returns true if the CoordinateSequence contains any null elements.  
static bool  hasNullElements (const std::vector< Geometry * > *lrs) 
Returns true if the vector contains any null elements.  
static void  checkNotGeometryCollection (const Geometry *g) 
Protected Attributes  
std::auto_ptr< Envelope >  envelope 
The bounding box of this Geometry.  
int  SRID 
Friends  
class  GeometryFactory 
std::ostream &  operator<< (std::ostream &os, const Geometry &geom) 
Write the Wellknown Binary representation of this Geometry as an HEX string to the given output stream. 
clone
returns a deep copy of the object. Use GeometryFactory to construct.
Because it is not clear at this time what semantics for spatial analysis methods involving GeometryCollection
s would be useful, GeometryCollection
s are not supported as arguments to binary predicates (other than convexHull
) or the relate
method.
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 settheoretic methods involving GeometryCollection
s would be useful, GeometryCollections
are not supported as arguments to the settheoretic methods.
The SFS states that the result of a settheoretic method is the "pointset" result of the usual settheoretic 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 Geometry
s returned from spatial analysis methods. The canonical form is a Geometry
which is simple and noded:
isSimple
. LineString
s. It means that all intersection points on LineString
s will be present as endpoints of LineString
s in the result.
The results computed by the settheoretic 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.

Polygon overrides to check for actual rectangle.


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.


Performs a readonly operation on the coordinates in this Geometry's CoordinateSequences.
Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::Point, and geos::geom::Polygon. 

Performs an operation on the coordinates in this Geometry's CoordinateSequences.s If the filter reports that a coordinate value has been changed, geometryChanged will be called automatically.
Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::Point, and geos::geom::Polygon. 

Apply a fiter 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(20050206); 

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 The end cap style specifies the buffer geometry that will be created at the ends of linestrings. The styles provided are:


Returns a buffer region around this Geometry having the given width and with a specified number of segments used to approximate curves.


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


Tests whether this geometry is covered by the specified geometry.
The
If either geometry is empty, the value of this predicate is
This predicate is similar to within, but is more inclusive (i.e. returns


Returns
The
If either geometry is empty, the value of this predicate is
This predicate is similar to contains, but is more inclusive (i.e. returns


Tests whether this geometry crosses the specified geometry.
The
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.


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


Tests whether this geometry is disjoint from the specified geometry.
The


Returns the boundary, or an empty geometry of appropriate dimension if this (In the case of zerodimensional 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."
Implemented in geos::geom::GeometryCollection, geos::geom::LineString, geos::geom::MultiLineString, geos::geom::MultiPoint, geos::geom::MultiPolygon, geos::geom::Point, and geos::geom::Polygon. 

Computes the centroid of this Geometry as a Coordinate. Returns false if centroid cannot be computed (EMPTY geometry) 

Computes the centroid of this The centroid is equal to the centroid of the set of component Geometrys of highest dimension (since the lowerdimension geometries contribute zero "weight" to the centroid)


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


Returns a pointer to the nth Geometry int this collection (or self if this is not a collection) Reimplemented in geos::geom::GeometryCollection. 

Computes an interior point of this 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 the number of geometries in this collection (or 1 if this is not a collection) Reimplemented in geos::geom::GeometryCollection. 

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


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


Tests the validity of this Subclasses provide their own definition of "valid".


Returns true if the elements in the DE9IM 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 DE9IM, see the OpenGIS Simple Features Specification.


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.


Returns a set combining the points in this Geometry not in other, and the points in other not in this Geometry.


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