QGIS API Documentation
2.5.0Master

#include <qgsgeometry.h>
Classes  
class  Error 
Public Member Functions  
QgsGeometry ()  
Constructor. More...  
QgsGeometry (const QgsGeometry &)  
copy constructor will prompt a deep copy of the object More...  
QgsGeometry &  operator= (QgsGeometry const &rhs) 
assignments will prompt a deep copy of the object More...  
~QgsGeometry ()  
Destructor. More...  
void  fromGeos (GEOSGeometry *geos) 
Set the geometry, feeding in a geometry in GEOS format. More...  
void  fromWkb (unsigned char *wkb, size_t length) 
Set the geometry, feeding in the buffer containing OGC WellKnown Binary and the buffer's length. More...  
const unsigned char *  asWkb () const 
Returns the buffer containing this geometry in WKB format. More...  
size_t  wkbSize () const 
Returns the size of the WKB in asWkb(). More...  
const GEOSGeometry *  asGeos () const 
Returns a geos geomtry. More...  
QGis::WkbType  wkbType () const 
Returns type of wkb (point / linestring / polygon etc.) More...  
QGis::GeometryType  type () 
Returns type of the vector. More...  
bool  isMultipart () 
Returns true if wkb of the geometry is of WKBMulti* type. More...  
bool  isGeosEqual (QgsGeometry &) 
compare geometries using GEOS More...  
bool  isGeosValid () 
check validity using GEOS More...  
bool  isGeosEmpty () 
check if geometry is empty using GEOS More...  
double  area () 
get area of geometry using GEOS More...  
double  length () 
get length of geometry using GEOS More...  
double  distance (QgsGeometry &geom) 
QgsPoint  closestVertex (const QgsPoint &point, int &atVertex, int &beforeVertex, int &afterVertex, double &sqrDist) 
Returns the vertex closest to the given point, the corresponding vertex index, squared distance snap point / target point and the indices of the vertices before/after. More...  
void  adjacentVertices (int atVertex, int &beforeVertex, int &afterVertex) 
Returns the indexes of the vertices before and after the given vertex index. More...  
bool  insertVertex (double x, double y, int beforeVertex) 
Insert a new vertex before the given vertex index, ring and item (first number is index 0) If the requested vertex number (beforeVertex.back()) is greater than the last actual vertex on the requested ring and item, it is assumed that the vertex is to be appended instead of inserted. More...  
bool  moveVertex (double x, double y, int atVertex) 
Moves the vertex at the given position number and item (first number is index 0) to the given coordinates. More...  
bool  deleteVertex (int atVertex) 
Deletes the vertex at the given position number and item (first number is index 0) Returns false if atVertex does not correspond to a valid vertex on this geometry (including if this geometry is a Point), or if the number of remaining verticies in the linestring would be less than two. More...  
QgsPoint  vertexAt (int atVertex) 
Returns coordinates of a vertex. More...  
double  sqrDistToVertexAt (QgsPoint &point, int atVertex) 
Returns the squared cartesian distance between the given point to the given vertex index (vertex at the given position number, ring and item (first number is index 0)) More...  
double  closestVertexWithContext (const QgsPoint &point, int &atVertex) 
Searches for the closest vertex in this geometry to the given point. More...  
double  closestSegmentWithContext (const QgsPoint &point, QgsPoint &minDistPoint, int &afterVertex, double *leftOf=0, double epsilon=DEFAULT_SEGMENT_EPSILON) 
Searches for the closest segment of geometry to the given point. More...  
int  addRing (const QList< QgsPoint > &ring) 
Adds a new ring to this geometry. More...  
int  addPart (const QList< QgsPoint > &points, QGis::GeometryType geomType=QGis::UnknownGeometry) 
Adds a new island polygon to a multipolygon feature. More...  
int  addPart (GEOSGeometry *newPart) 
Adds a new island polygon to a multipolygon feature. More...  
int  addPart (QgsGeometry *newPart) 
Adds a new island polygon to a multipolygon feature. More...  
int  translate (double dx, double dy) 
Translate this geometry by dx, dy. More...  
int  transform (const QgsCoordinateTransform &ct) 
Transform this geometry as described by CoordinateTranasform ct. More...  
int  splitGeometry (const QList< QgsPoint > &splitLine, QList< QgsGeometry * > &newGeometries, bool topological, QList< QgsPoint > &topologyTestPoints) 
Splits this geometry according to a given line. More...  
int  reshapeGeometry (const QList< QgsPoint > &reshapeWithLine) 
Replaces a part of this geometry with another line. More...  
int  makeDifference (QgsGeometry *other) 
Changes this geometry such that it does not intersect the other geometry. More...  
QgsRectangle  boundingBox () 
Returns the bounding box of this feature. More...  
bool  intersects (const QgsRectangle &r) const 
Test for intersection with a rectangle (uses GEOS) More...  
bool  intersects (const QgsGeometry *geometry) const 
Test for intersection with a geometry (uses GEOS) More...  
bool  contains (const QgsPoint *p) const 
Test for containment of a point (uses GEOS) More...  
bool  contains (const QgsGeometry *geometry) const 
Test for if geometry is contained in another (uses GEOS) More...  
bool  disjoint (const QgsGeometry *geometry) const 
Test for if geometry is disjoint of another (uses GEOS) More...  
bool  equals (const QgsGeometry *geometry) const 
Test for if geometry equals another (uses GEOS) More...  
bool  touches (const QgsGeometry *geometry) const 
Test for if geometry touch another (uses GEOS) More...  
bool  overlaps (const QgsGeometry *geometry) const 
Test for if geometry overlaps another (uses GEOS) More...  
bool  within (const QgsGeometry *geometry) const 
Test for if geometry is within another (uses GEOS) More...  
bool  crosses (const QgsGeometry *geometry) const 
Test for if geometry crosses another (uses GEOS) More...  
QgsGeometry *  buffer (double distance, int segments) 
Returns a buffer region around this geometry having the given width and with a specified number of segments used to approximate curves. More...  
QgsGeometry *  buffer (double distance, int segments, int endCapStyle, int joinStyle, double mitreLimit) 
Returns a buffer region around the geometry, with additional style options. More...  
QgsGeometry *  offsetCurve (double distance, int segments, int joinStyle, double mitreLimit) 
Returns an offset line at a given distance and side from an input line. More...  
QgsGeometry *  simplify (double tolerance) 
Returns a simplified version of this geometry using a specified tolerance value. More...  
QgsGeometry *  centroid () 
Returns the center of mass of a geometry. More...  
QgsGeometry *  pointOnSurface () 
Returns a point within a geometry. More...  
QgsGeometry *  convexHull () 
Returns the smallest convex polygon that contains all the points in the geometry. More...  
QgsGeometry *  interpolate (double distance) 
QgsGeometry *  intersection (QgsGeometry *geometry) 
Returns a geometry representing the points shared by this geometry and other. More...  
QgsGeometry *  combine (QgsGeometry *geometry) 
Returns a geometry representing all the points in this geometry and other (a union geometry operation). More...  
QgsGeometry *  difference (QgsGeometry *geometry) 
Returns a geometry representing the points making up this geometry that do not make up other. More...  
QgsGeometry *  symDifference (QgsGeometry *geometry) 
Returns a Geometry representing the points making up this Geometry that do not make up other. More...  
QString  exportToWkt (const int &precision=17) const 
Exports the geometry to WKT. More...  
QString  exportToGeoJSON (const int &precision=17) const 
Exports the geometry to GeoJSON. More...  
QgsGeometry *  convertToType (QGis::GeometryType destType, bool destMultipart=false) 
try to convert the geometry to the requested type More...  
QgsPoint  asPoint () const 
return contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0] More...  
QgsPolyline  asPolyline () const 
return contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list More...  
QgsPolygon  asPolygon () const 
return contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list More...  
QgsMultiPoint  asMultiPoint () const 
return contents of the geometry as a multi point if wkbType is WKBMultiPoint, otherwise an empty list More...  
QgsMultiPolyline  asMultiPolyline () const 
return contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list More...  
QgsMultiPolygon  asMultiPolygon () const 
return contents of the geometry as a multi polygon if wkbType is WKBMultiPolygon, otherwise an empty list More...  
QList< QgsGeometry * >  asGeometryCollection () const 
return contents of the geometry as a list of geometries More...  
bool  deleteRing (int ringNum, int partNum=0) 
delete a ring in polygon or multipolygon. More...  
bool  deletePart (int partNum) 
delete part identified by the part number More...  
bool  convertToMultiType () 
Converts single type geometry into multitype geometry e.g. More...  
int  avoidIntersections (QMap< QgsVectorLayer *, QSet< QgsFeatureId > > ignoreFeatures=(QMap< QgsVectorLayer *, QSet< QgsFeatureId > >())) 
Modifies geometry to avoid intersections with the layers specified in project properties. More...  
void  validateGeometry (QList< Error > &errors) 
Validate geometry and produce a list of geometry errors. More...  
Static Public Member Functions  
static QgsGeometry *  fromWkt (QString wkt) 
static method that creates geometry from Wkt More...  
static QgsGeometry *  fromPoint (const QgsPoint &point) 
construct geometry from a point More...  
static QgsGeometry *  fromMultiPoint (const QgsMultiPoint &multipoint) 
construct geometry from a multipoint More...  
static QgsGeometry *  fromPolyline (const QgsPolyline &polyline) 
construct geometry from a polyline More...  
static QgsGeometry *  fromMultiPolyline (const QgsMultiPolyline &multiline) 
construct geometry from a multipolyline More...  
static QgsGeometry *  fromPolygon (const QgsPolygon &polygon) 
construct geometry from a polygon More...  
static QgsGeometry *  fromMultiPolygon (const QgsMultiPolygon &multipoly) 
construct geometry from a multipolygon More...  
static QgsGeometry *  fromRect (const QgsRectangle &rect) 
construct geometry from a rectangle More...  
static QgsGeometry *  unaryUnion (const QList< QgsGeometry * > &geometryList) 
compute the unary union on a list of geometries. More...  
QgsGeometry::QgsGeometry  (  ) 
Constructor.
QgsGeometry::QgsGeometry  (  const QgsGeometry &  rhs  ) 
copy constructor will prompt a deep copy of the object
QgsGeometry::~QgsGeometry  (  ) 
Destructor.
int QgsGeometry::addPart  (  const QList< QgsPoint > &  points, 
QGis::GeometryType  geomType = QGis::UnknownGeometry 

) 
Adds a new island polygon to a multipolygon feature.
int QgsGeometry::addPart  (  GEOSGeometry *  newPart  ) 
Adds a new island polygon to a multipolygon feature.
int QgsGeometry::addPart  (  QgsGeometry *  newPart  ) 
Adds a new island polygon to a multipolygon feature.
int QgsGeometry::addRing  (  const QList< QgsPoint > &  ring  ) 
Adds a new ring to this geometry.
This makes only sense for polygon and multipolygons.
void QgsGeometry::adjacentVertices  (  int  atVertex, 
int &  beforeVertex,  
int &  afterVertex  
) 
Returns the indexes of the vertices before and after the given vertex index.
This function takes into account the following factors:
double QgsGeometry::area  (  ) 
get area of geometry using GEOS
QList< QgsGeometry * > QgsGeometry::asGeometryCollection  (  )  const 
return contents of the geometry as a list of geometries
const GEOSGeometry * QgsGeometry::asGeos  (  )  const 
Returns a geos geomtry.
QgsGeometry keeps ownership, don't delete the returned object!
QgsMultiPoint QgsGeometry::asMultiPoint  (  )  const 
return contents of the geometry as a multi point if wkbType is WKBMultiPoint, otherwise an empty list
QgsMultiPolygon QgsGeometry::asMultiPolygon  (  )  const 
return contents of the geometry as a multi polygon if wkbType is WKBMultiPolygon, otherwise an empty list
QgsMultiPolyline QgsGeometry::asMultiPolyline  (  )  const 
return contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list
QgsPoint QgsGeometry::asPoint  (  )  const 
return contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0]
QgsPolygon QgsGeometry::asPolygon  (  )  const 
return contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list
QgsPolyline QgsGeometry::asPolyline  (  )  const 
return contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list
const unsigned char * QgsGeometry::asWkb  (  )  const 
Returns the buffer containing this geometry in WKB format.
You may wish to use in conjunction with wkbSize().
int QgsGeometry::avoidIntersections  (  QMap< QgsVectorLayer *, QSet< QgsFeatureId > >  ignoreFeatures = ( QMap<QgsVectorLayer*, QSet<QgsFeatureId> >() )  ) 
Modifies geometry to avoid intersections with the layers specified in project properties.
ignoreFeatures  possibility to give a list of features where intersections should be ignored (not available in python bindings) 
QgsRectangle QgsGeometry::boundingBox  (  ) 
Returns the bounding box of this feature.
QgsGeometry * QgsGeometry::buffer  (  double  distance, 
int  segments  
) 
Returns a buffer region around this geometry having the given width and with a specified number of segments used to approximate curves.
QgsGeometry * QgsGeometry::buffer  (  double  distance, 
int  segments,  
int  endCapStyle,  
int  joinStyle,  
double  mitreLimit  
) 
Returns a buffer region around the geometry, with additional style options.
distance  buffer distance 
segments  For round joins, number of segments to approximate quartercircle 
endCapStyle  Round (1) / Flat (2) / Square (3) end cap style 
joinStyle  Round (1) / Mitre (2) / Bevel (3) join style 
mitreLimit  Limit on the mitre ratio used for very sharp corners 
QgsGeometry * QgsGeometry::centroid  (  ) 
Returns the center of mass of a geometry.
double QgsGeometry::closestSegmentWithContext  (  const QgsPoint &  point, 
QgsPoint &  minDistPoint,  
int &  afterVertex,  
double *  leftOf = 0 , 

double  epsilon = DEFAULT_SEGMENT_EPSILON 

) 
Searches for the closest segment of geometry to the given point.
point  Specifies the point for search 
minDistPoint  Receives the nearest point on the segment 
afterVertex  Receives index of the vertex after the closest segment. The vertex before the closest segment is always afterVertex  1 
leftOf  Out: Returns if the point lies on the left of right side of the segment ( < 0 means left, > 0 means right ) 
epsilon  epsilon for segment snapping (added in 1.8) 
QgsPoint QgsGeometry::closestVertex  (  const QgsPoint &  point, 
int &  atVertex,  
int &  beforeVertex,  
int &  afterVertex,  
double &  sqrDist  
) 
Returns the vertex closest to the given point, the corresponding vertex index, squared distance snap point / target point and the indices of the vertices before/after.
The vertices before/after are 1 if not present
double QgsGeometry::closestVertexWithContext  (  const QgsPoint &  point, 
int &  atVertex  
) 
Searches for the closest vertex in this geometry to the given point.
point  Specifiest the point for search 
atVertex  Receives index of the closest vertex 
QgsGeometry * QgsGeometry::combine  (  QgsGeometry *  geometry  ) 
Returns a geometry representing all the points in this geometry and other (a union geometry operation).
bool QgsGeometry::contains  (  const QgsPoint *  p  )  const 
Test for containment of a point (uses GEOS)
bool QgsGeometry::contains  (  const QgsGeometry *  geometry  )  const 
Test for if geometry is contained in another (uses GEOS)
bool QgsGeometry::convertToMultiType  (  ) 
Converts single type geometry into multitype geometry e.g.
a polygon into a multipolygon geometry with one polygon
QgsGeometry * QgsGeometry::convertToType  (  QGis::GeometryType  destType, 
bool  destMultipart = false 

) 
try to convert the geometry to the requested type
destType  the geometry type to be converted to 
destMultipart  determines if the output geometry will be multipart or not 
QgsGeometry * QgsGeometry::convexHull  (  ) 
Returns the smallest convex polygon that contains all the points in the geometry.
bool QgsGeometry::crosses  (  const QgsGeometry *  geometry  )  const 
Test for if geometry crosses another (uses GEOS)
bool QgsGeometry::deletePart  (  int  partNum  ) 
delete part identified by the part number
bool QgsGeometry::deleteRing  (  int  ringNum, 
int  partNum = 0 

) 
delete a ring in polygon or multipolygon.
Ring 0 is outer ring and can't be deleted.
bool QgsGeometry::deleteVertex  (  int  atVertex  ) 
Deletes the vertex at the given position number and item (first number is index 0) Returns false if atVertex does not correspond to a valid vertex on this geometry (including if this geometry is a Point), or if the number of remaining verticies in the linestring would be less than two.
It is up to the caller to distinguish between these error conditions. (Or maybe we add another method to this object to help make the distinction?)
QgsGeometry * QgsGeometry::difference  (  QgsGeometry *  geometry  ) 
Returns a geometry representing the points making up this geometry that do not make up other.
bool QgsGeometry::disjoint  (  const QgsGeometry *  geometry  )  const 
Test for if geometry is disjoint of another (uses GEOS)
double QgsGeometry::distance  (  QgsGeometry &  geom  ) 
bool QgsGeometry::equals  (  const QgsGeometry *  geometry  )  const 
Test for if geometry equals another (uses GEOS)
QString QgsGeometry::exportToGeoJSON  (  const int &  precision = 17  )  const 
Exports the geometry to GeoJSON.
QString QgsGeometry::exportToWkt  (  const int &  precision = 17  )  const 
Exports the geometry to WKT.
void QgsGeometry::fromGeos  (  GEOSGeometry *  geos  ) 
Set the geometry, feeding in a geometry in GEOS format.
This class will take ownership of the buffer.

static 
construct geometry from a multipoint

static 
construct geometry from a multipolygon

static 
construct geometry from a multipolyline

static 
construct geometry from a point

static 
construct geometry from a polygon

static 
construct geometry from a polyline

static 
construct geometry from a rectangle
void QgsGeometry::fromWkb  (  unsigned char *  wkb, 
size_t  length  
) 
Set the geometry, feeding in the buffer containing OGC WellKnown Binary and the buffer's length.
This class will take ownership of the buffer.

static 
static method that creates geometry from Wkt
bool QgsGeometry::insertVertex  (  double  x, 
double  y,  
int  beforeVertex  
) 
Insert a new vertex before the given vertex index, ring and item (first number is index 0) If the requested vertex number (beforeVertex.back()) is greater than the last actual vertex on the requested ring and item, it is assumed that the vertex is to be appended instead of inserted.
Returns false if atVertex does not correspond to a valid vertex on this geometry (including if this geometry is a Point). It is up to the caller to distinguish between these error conditions. (Or maybe we add another method to this object to help make the distinction?)
QgsGeometry * QgsGeometry::interpolate  (  double  distance  ) 
QgsGeometry * QgsGeometry::intersection  (  QgsGeometry *  geometry  ) 
Returns a geometry representing the points shared by this geometry and other.
bool QgsGeometry::intersects  (  const QgsRectangle &  r  )  const 
Test for intersection with a rectangle (uses GEOS)
bool QgsGeometry::intersects  (  const QgsGeometry *  geometry  )  const 
Test for intersection with a geometry (uses GEOS)
bool QgsGeometry::isGeosEmpty  (  ) 
check if geometry is empty using GEOS
bool QgsGeometry::isGeosEqual  (  QgsGeometry &  g  ) 
compare geometries using GEOS
bool QgsGeometry::isGeosValid  (  ) 
check validity using GEOS
bool QgsGeometry::isMultipart  (  ) 
Returns true if wkb of the geometry is of WKBMulti* type.
double QgsGeometry::length  (  ) 
get length of geometry using GEOS
int QgsGeometry::makeDifference  (  QgsGeometry *  other  ) 
Changes this geometry such that it does not intersect the other geometry.
other  geometry that should not be intersect 
bool QgsGeometry::moveVertex  (  double  x, 
double  y,  
int  atVertex  
) 
Moves the vertex at the given position number and item (first number is index 0) to the given coordinates.
Returns false if atVertex does not correspond to a valid vertex on this geometry
QgsGeometry * QgsGeometry::offsetCurve  (  double  distance, 
int  segments,  
int  joinStyle,  
double  mitreLimit  
) 
Returns an offset line at a given distance and side from an input line.
See buffer() method for details on parameters.
QgsGeometry & QgsGeometry::operator=  (  QgsGeometry const &  rhs  ) 
assignments will prompt a deep copy of the object
bool QgsGeometry::overlaps  (  const QgsGeometry *  geometry  )  const 
Test for if geometry overlaps another (uses GEOS)
QgsGeometry * QgsGeometry::pointOnSurface  (  ) 
Returns a point within a geometry.
int QgsGeometry::reshapeGeometry  (  const QList< QgsPoint > &  reshapeWithLine  ) 
Replaces a part of this geometry with another line.
QgsGeometry * QgsGeometry::simplify  (  double  tolerance  ) 
Returns a simplified version of this geometry using a specified tolerance value.
int QgsGeometry::splitGeometry  (  const QList< QgsPoint > &  splitLine, 
QList< QgsGeometry * > &  newGeometries,  
bool  topological,  
QList< QgsPoint > &  topologyTestPoints  
) 
Splits this geometry according to a given line.
Note that the geometry is only split once. If there are several intersections between geometry and splitLine, only the first one is considered.
splitLine  the line that splits the geometry  
[out]  newGeometries  list of new geometries that have been created with the split 
topological  true if topological editing is enabled  
[out]  topologyTestPoints  points that need to be tested for topological completeness in the dataset 
double QgsGeometry::sqrDistToVertexAt  (  QgsPoint &  point, 
int  atVertex  
) 
Returns the squared cartesian distance between the given point to the given vertex index (vertex at the given position number, ring and item (first number is index 0))
QgsGeometry * QgsGeometry::symDifference  (  QgsGeometry *  geometry  ) 
Returns a Geometry representing the points making up this Geometry that do not make up other.
bool QgsGeometry::touches  (  const QgsGeometry *  geometry  )  const 
Test for if geometry touch another (uses GEOS)
int QgsGeometry::transform  (  const QgsCoordinateTransform &  ct  ) 
Transform this geometry as described by CoordinateTranasform ct.
int QgsGeometry::translate  (  double  dx, 
double  dy  
) 
Translate this geometry by dx, dy.
QGis::GeometryType QgsGeometry::type  (  ) 
Returns type of the vector.

static 
compute the unary union on a list of geometries.
May be faster than an iterative union on a set of geometries.
geometryList  a list of QgsGeometry* as input 
void QgsGeometry::validateGeometry  (  QList< Error > &  errors  ) 
Validate geometry and produce a list of geometry errors.
QgsPoint QgsGeometry::vertexAt  (  int  atVertex  ) 
Returns coordinates of a vertex.
atVertex  index of the vertex 
bool QgsGeometry::within  (  const QgsGeometry *  geometry  )  const 
Test for if geometry is within another (uses GEOS)
size_t QgsGeometry::wkbSize  (  )  const 
Returns the size of the WKB in asWkb().
QGis::WkbType QgsGeometry::wkbType  (  )  const 
Returns type of wkb (point / linestring / polygon etc.)