QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
QgsGeometry Class Reference

#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...
 
QgsGeometryoperator= (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 Well-Known 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...
 
QgsGeometrybuffer (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...
 
QgsGeometrybuffer (double distance, int segments, int endCapStyle, int joinStyle, double mitreLimit)
 Returns a buffer region around the geometry, with additional style options. More...
 
QgsGeometryoffsetCurve (double distance, int segments, int joinStyle, double mitreLimit)
 Returns an offset line at a given distance and side from an input line. More...
 
QgsGeometrysimplify (double tolerance)
 Returns a simplified version of this geometry using a specified tolerance value. More...
 
QgsGeometrycentroid ()
 Returns the center of mass of a geometry. More...
 
QgsGeometrypointOnSurface ()
 Returns a point within a geometry. More...
 
QgsGeometryconvexHull ()
 Returns the smallest convex polygon that contains all the points in the geometry. More...
 
QgsGeometryinterpolate (double distance)
 
QgsGeometryintersection (QgsGeometry *geometry)
 Returns a geometry representing the points shared by this geometry and other. More...
 
QgsGeometrycombine (QgsGeometry *geometry)
 Returns a geometry representing all the points in this geometry and other (a union geometry operation). More...
 
QgsGeometrydifference (QgsGeometry *geometry)
 Returns a geometry representing the points making up this geometry that do not make up other. More...
 
QgsGeometrysymDifference (QgsGeometry *geometry)
 Returns a Geometry representing the points making up this Geometry that do not make up other. More...
 
QString exportToWkt () const
 Exports the geometry to mWkt. More...
 
QString exportToGeoJSON () const
 Exports the geometry to mGeoJSON. More...
 
QgsGeometryconvertToType (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 QgsGeometryfromWkt (QString wkt)
 static method that creates geometry from Wkt More...
 
static QgsGeometryfromPoint (const QgsPoint &point)
 construct geometry from a point More...
 
static QgsGeometryfromMultiPoint (const QgsMultiPoint &multipoint)
 construct geometry from a multipoint More...
 
static QgsGeometryfromPolyline (const QgsPolyline &polyline)
 construct geometry from a polyline More...
 
static QgsGeometryfromMultiPolyline (const QgsMultiPolyline &multiline)
 construct geometry from a multipolyline More...
 
static QgsGeometryfromPolygon (const QgsPolygon &polygon)
 construct geometry from a polygon More...
 
static QgsGeometryfromMultiPolygon (const QgsMultiPolygon &multipoly)
 construct geometry from a multipolygon More...
 
static QgsGeometryfromRect (const QgsRectangle &rect)
 construct geometry from a rectangle More...
 
static QgsGeometryunaryUnion (const QList< QgsGeometry * > &geometryList)
 compute the unary union on a list of geometries. More...
 

Private Member Functions

bool exportWkbToGeos () const
 Converts from the WKB geometry to the GEOS geometry. More...
 
bool exportGeosToWkb () const
 Converts from the GEOS geometry to the WKB geometry. More...
 
bool insertVertex (double x, double y, int beforeVertex, const GEOSCoordSequence *old_sequence, GEOSCoordSequence **new_sequence)
 Insert a new vertex before the given vertex index (first number is index 0) in the given GEOS Coordinate Sequence. More...
 
void translateVertex (QgsWkbPtr &wkbPtr, double dx, double dy, bool hasZValue)
 Translates a single vertex by dx and dy. More...
 
void transformVertex (QgsWkbPtr &wkbPtr, const QgsCoordinateTransform &ct, bool hasZValue)
 Transforms a single vertex by ct. More...
 
int splitLinearGeometry (GEOSGeometry *splitLine, QList< QgsGeometry * > &newGeometries)
 Splits line/multiline geometries. More...
 
int splitPolygonGeometry (GEOSGeometry *splitLine, QList< QgsGeometry * > &newGeometries)
 Splits polygon/multipolygon geometries. More...
 
GEOSGeometry * linePointDifference (GEOSGeometry *GEOSsplitPoint)
 Splits line/multiline geometries following a single point. More...
 
int topologicalTestPointsSplit (const GEOSGeometry *splitLine, QList< QgsPoint > &testPoints) const
 Finds out the points that need to be tested for topological correctnes if this geometry will be split. More...
 
int numberOfGeometries (GEOSGeometry *g) const
 Returns number of single geometry in a geos geometry. More...
 
int mergeGeometriesMultiTypeSplit (QVector< GEOSGeometry * > &splitResult)
 
QgsPoint asPoint (QgsConstWkbPtr &wkbPtr, bool hasZValue) const
 return point from wkb More...
 
QgsPolyline asPolyline (QgsConstWkbPtr &wkbPtr, bool hasZValue) const
 return polyline from wkb More...
 
QgsPolygon asPolygon (QgsConstWkbPtr &wkbPtr, bool hasZValue) const
 return polygon from wkb More...
 
double leftOf (double x, double y, double &x1, double &y1, double &x2, double &y2)
 Returns < 0 if point(x/y) is left of the line x1,y1 -> x1,y2. More...
 
QgsGeometryconvertToPoint (bool destMultipart)
 try to convert the geometry to a point More...
 
QgsGeometryconvertToLine (bool destMultipart)
 try to convert the geometry to a line More...
 
QgsGeometryconvertToPolygon (bool destMultipart)
 try to convert the geometry to a polygon More...
 

Static Private Member Functions

static GEOSGeometry * reshapeLine (const GEOSGeometry *origLine, const GEOSGeometry *reshapeLineGeos)
 Creates a new line from an original line and a reshape line. More...
 
static GEOSGeometry * reshapePolygon (const GEOSGeometry *polygon, const GEOSGeometry *reshapeLineGeos)
 Creates a new polygon replacing the part from the first to the second intersection with the reshape line. More...
 
static GEOSGeometry * nodeGeometries (const GEOSGeometry *splitLine, const GEOSGeometry *poly)
 Nodes together a split line and a (multi-) polygon geometry in a multilinestring. More...
 
static int lineContainedInLine (const GEOSGeometry *line1, const GEOSGeometry *line2)
 Tests if line1 is completely contained in line2. More...
 
static int pointContainedInLine (const GEOSGeometry *point, const GEOSGeometry *line)
 Tests if a point is on a line. More...
 
static int geomDigits (const GEOSGeometry *geom)
 Determines the maximum number of digits before the dot. More...
 
static bool geosRelOp (char(*op)(const GEOSGeometry *, const GEOSGeometry *), const QgsGeometry *a, const QgsGeometry *b)
 
static bool moveVertex (QgsWkbPtr &wkbPtr, const double &x, const double &y, int atVertex, bool hasZValue, int &pointIndex, bool isRing)
 
static int deleteVertex (QgsConstWkbPtr &srcPtr, QgsWkbPtr &dstPtr, int atVertex, bool hasZValue, int &pointIndex, bool isRing, bool lastItem)
 
static bool insertVertex (QgsConstWkbPtr &srcPtr, QgsWkbPtr &dstPtr, int beforeVertex, const double &x, const double &y, bool hasZValue, int &pointIndex, bool isRing)
 

Private Attributes

unsigned char * mGeometry
 pointer to geometry in binary WKB format This is the class' native implementation More...
 
size_t mGeometrySize
 size of geometry More...
 
GEOSGeometry * mGeos
 cached GEOS version of this geometry More...
 
bool mDirtyWkb
 If the geometry has been set since the last conversion to WKB. More...
 
bool mDirtyGeos
 If the geometry has been set since the last conversion to GEOS. More...
 

Detailed Description

Definition at line 74 of file qgsgeometry.h.

Constructor & Destructor Documentation

QgsGeometry::QgsGeometry ( )

Constructor.

Definition at line 191 of file qgsgeometry.cpp.

Referenced by asGeometryCollection(), combine(), convertToLine(), convertToPoint(), convertToPolygon(), and unaryUnion().

QgsGeometry::QgsGeometry ( const QgsGeometry rhs)

copy constructor will prompt a deep copy of the object

Definition at line 200 of file qgsgeometry.cpp.

References mGeometry, mGeometrySize, and mGeos.

QgsGeometry::~QgsGeometry ( )

Destructor.

Definition at line 221 of file qgsgeometry.cpp.

References mGeometry, and mGeos.

Member Function Documentation

int QgsGeometry::addPart ( const QList< QgsPoint > &  points,
QGis::GeometryType  geomType = QGis::UnknownGeometry 
)

Adds a new island polygon to a multipolygon feature.

Returns
0 in case of success, 1 if not a multipolygon, 2 if ring is not a valid geometry, 3 if new polygon ring not disjoint with existing polygons of the feature

Definition at line 2511 of file qgsgeometry.cpp.

References createGeosLinearRing(), createGeosLineString(), createGeosPoint(), createGeosPolygon(), fromGeos(), QGis::Line, QgsMessageLog::logMessage(), QGis::Point, QGis::Polygon, QgsDebugMsg, tr, type(), QGis::UnknownGeometry, and GEOSException::what().

Referenced by QgsVectorLayerEditUtils::addPart(), addPart(), and QgsVectorLayerEditUtils::splitParts().

int QgsGeometry::addPart ( GEOSGeometry *  newPart)

Adds a new island polygon to a multipolygon feature.

Returns
0 in case of success, 1 if not a multipolygon, 2 if ring is not a valid geometry, 3 if new polygon ring not disjoint with existing polygons of the feature
Note
not available in python bindings

Definition at line 2618 of file qgsgeometry.cpp.

References convertToMultiType(), createGeosCollection(), exportWkbToGeos(), isMultipart(), QgsMessageLog::logMessage(), mDirtyGeos, mDirtyWkb, mGeos, QGis::Polygon, QgsDebugMsg, tr, type(), and GEOSException::what().

int QgsGeometry::addPart ( QgsGeometry newPart)

Adds a new island polygon to a multipolygon feature.

Returns
0 in case of success, 1 if not a multipolygon, 2 if ring is not a valid geometry, 3 if new polygon ring not disjoint with existing polygons of the feature
Note
available in python bindings as addPartGeometry (added in 2.2)

Definition at line 2609 of file qgsgeometry.cpp.

References addPart(), and asGeos().

int QgsGeometry::addRing ( const QList< QgsPoint > &  ring)

Adds a new ring to this geometry.

This makes only sense for polygon and multipolygons.

Returns
0 in case of success (ring added), 1 problem with geometry type, 2 ring not closed, 3 ring is not valid geometry, 4 ring not disjoint with existing rings, 5 no polygon found which contained the ring

Definition at line 2313 of file qgsgeometry.cpp.

References createGeosCollection(), createGeosLinearRing(), createGeosPolygon(), exportWkbToGeos(), QgsMessageLog::logMessage(), mDirtyGeos, mDirtyWkb, mGeos, QGis::Polygon, throwGEOSException(), tr, type(), GEOSException::what(), QGis::WKBMultiPolygon, QGis::WKBPolygon, and wkbType().

Referenced by QgsVectorLayerEditUtils::addRing().

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:

  1. If the given vertex index is at the end of a linestring, the adjacent index will be -1 (for "no adjacent vertex")
  2. If the given vertex index is at the end of a linear ring (such as in a polygon), the adjacent index will take into account the first vertex is equal to the last vertex (and will skip equal vertex positions).

Definition at line 949 of file qgsgeometry.cpp.

References exportGeosToWkb(), index, mDirtyWkb, mGeometry, QgsDebugMsg, QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPoint, QGis::WKBPolygon, QGis::WKBPolygon25D, and wkbType().

double QgsGeometry::area ( )

get area of geometry using GEOS

Note
added in 1.5

Definition at line 5598 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), mDirtyGeos, and mGeos.

Referenced by QgsPalLayerSettings::checkMinimumSizeMM(), and QgsZonalStatistics::statisticsFromPreciseIntersection().

QList< QgsGeometry * > QgsGeometry::asGeometryCollection ( ) const

return contents of the geometry as a list of geometries

Note
added in version 1.1

Definition at line 5891 of file qgsgeometry.cpp.

References exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, mGeos, QgsDebugMsg, and QgsGeometry().

Referenced by QgsGeometryAnalyzer::addEventLayerFeature(), and QgsGeometryAnalyzer::createOffsetGeometry().

const GEOSGeometry * QgsGeometry::asGeos ( ) const

Returns a geos geomtry.

QgsGeometry keeps ownership, don't delete the returned object!

Note
this method was added in version 1.1
not available in python bindings

Definition at line 615 of file qgsgeometry.cpp.

References exportWkbToGeos(), mDirtyGeos, and mGeos.

Referenced by addPart(), avoidIntersections(), isGeosEmpty(), isGeosValid(), linePointDifference(), QgsPalLabeling::registerDiagramFeature(), QgsPalLayerSettings::registerFeature(), QgsGeometryValidator::run(), QgsZonalStatistics::statisticsFromMiddlePointTest(), and unaryUnion().

QgsMultiPoint QgsGeometry::asMultiPoint ( ) const

return contents of the geometry as a multi point if wkbType is WKBMultiPoint, otherwise an empty list

Definition at line 5534 of file qgsgeometry.cpp.

References asPoint(), mGeometry, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, and wkbType().

Referenced by QgsDxfExport::addFeature(), QgsRubberBand::addGeometry(), convertToLine(), convertToPoint(), convertToPolygon(), deletePart(), and QgsHighlight::paint().

QgsMultiPolygon QgsGeometry::asMultiPolygon ( ) const
QgsMultiPolyline QgsGeometry::asMultiPolyline ( ) const
QgsPoint QgsGeometry::asPoint ( ) const
QgsPoint QgsGeometry::asPoint ( QgsConstWkbPtr wkbPtr,
bool  hasZValue 
) const
private

return point from wkb

Definition at line 5433 of file qgsgeometry.cpp.

QgsPolygon QgsGeometry::asPolygon ( ) const
QgsPolygon QgsGeometry::asPolygon ( QgsConstWkbPtr wkbPtr,
bool  hasZValue 
) const
private

return polygon from wkb

Definition at line 5468 of file qgsgeometry.cpp.

QgsPolyline QgsGeometry::asPolyline ( ) const
QgsPolyline QgsGeometry::asPolyline ( QgsConstWkbPtr wkbPtr,
bool  hasZValue 
) const
private

return polyline from wkb

Definition at line 5445 of file qgsgeometry.cpp.

const unsigned char * QgsGeometry::asWkb ( ) const
int QgsGeometry::avoidIntersections ( QMap< QgsVectorLayer *, QSet< QgsFeatureId > >  ignoreFeatures = ( QMap<QgsVectorLayer*, QSet<QgsFeatureId> >() ))

Modifies geometry to avoid intersections with the layers specified in project properties.

Returns
0 in case of success, 1 if geometry is not of polygon type, 2 if avoid intersection would change the geometry type, 3 other error during intersection removal
Parameters
ignoreFeaturespossibility to give a list of features where intersections should be ignored (not available in python bindings)
Note
added in 1.5

Definition at line 6064 of file qgsgeometry.cpp.

References _makeUnion(), asGeos(), boundingBox(), QgsFeatureRequest::ExactIntersect, fromGeos(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsFeature::id(), QgsMapLayerRegistry::instance(), QgsProject::instance(), QgsMessageLog::logMessage(), QgsMapLayerRegistry::mapLayer(), QgsFeatureIterator::nextFeature(), QGis::Polygon, QgsProject::readListEntry(), tr, type(), GEOSException::what(), and wkbType().

QgsRectangle QgsGeometry::boundingBox ( )
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.

Definition at line 5659 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by QgsGeometryAnalyzer::bufferFeature(), QgsTransectSample::clipBufferLine(), fcnBuffer(), offsetLine(), QgsTransectSample::otherTransectWithinDistance(), and QgsPalLayerSettings::registerFeature().

QgsGeometry * QgsGeometry::buffer ( double  distance,
int  segments,
int  endCapStyle,
int  joinStyle,
double  mitreLimit 
)

Returns a buffer region around the geometry, with additional style options.

Parameters
distancebuffer distance
segmentsFor round joins, number of segments to approximate quarter-circle
endCapStyleRound (1) / Flat (2) / Square (3) end cap style
joinStyleRound (1) / Mitre (2) / Bevel (3) join style
mitreLimitLimit on the mitre ratio used for very sharp corners
Note
added in 2.4
needs GEOS >= 3.3 - otherwise always returns 0

Definition at line 5674 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

QgsGeometry * QgsGeometry::centroid ( )

Returns the center of mass of a geometry.

Note
for line based geometries, the center point of the line is returned, and for point based geometries, the point itself is returned

Definition at line 5729 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by QgsGeometryAnalyzer::centroidFeature(), fcnCentroid(), and QgsRelationReferenceWidget::highlightFeature().

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.

Parameters
pointSpecifies the point for search
minDistPointReceives the nearest point on the segment
afterVertexReceives index of the vertex after the closest segment. The vertex before the closest segment is always afterVertex - 1
leftOfOut: Returns if the point lies on the left of right side of the segment ( < 0 means left, > 0 means right )
epsilonepsilon for segment snapping (added in 1.8)
Returns
The squared cartesian distance is also returned in sqrDist, negative number on error

Definition at line 2087 of file qgsgeometry.cpp.

References exportGeosToWkb(), index, leftOf(), pal::max(), mDirtyWkb, mGeometry, QgsDebugMsg, QgsPoint::sqrDistToSegment(), QgsPoint::toString(), QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPoint, QGis::WKBPoint25D, QGis::WKBPolygon, QGis::WKBPolygon25D, wkbType(), QGis::WKBUnknown, QgsPoint::x(), and QgsPoint::y().

Referenced by QgsGeometryAnalyzer::createPointOffset(), QgsTransectSample::createSample(), and QgsVectorLayer::snapToGeometry().

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

Definition at line 706 of file qgsgeometry.cpp.

References exportGeosToWkb(), index, pal::max(), mDirtyWkb, mGeometry, QgsDebugMsg, QgsPoint::set(), QgsPoint::sqrDist(), QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPoint, QGis::WKBPoint25D, QGis::WKBPolygon, QGis::WKBPolygon25D, and wkbType().

Referenced by QgsVectorLayer::snapToGeometry().

double QgsGeometry::closestVertexWithContext ( const QgsPoint point,
int &  atVertex 
)

Searches for the closest vertex in this geometry to the given point.

Parameters
pointSpecifiest the point for search
atVertexReceives index of the closest vertex
Returns
The squared cartesian distance is also returned in sqrDist, negative number on error

Definition at line 2037 of file qgsgeometry.cpp.

References exportWkbToGeos(), QgsMessageLog::logMessage(), pal::max(), mDirtyGeos, mGeos, QgsPoint::sqrDist(), tr, and GEOSException::what().

QgsGeometry * QgsGeometry::combine ( QgsGeometry geometry)

Returns a geometry representing all the points in this geometry and other (a union geometry operation).

Note
this operation is not called union since its a reserved word in C++.

Definition at line 5815 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), QGis::Line, mDirtyGeos, mGeos, QgsGeometry(), and type().

Referenced by QgsGeometryAnalyzer::bufferFeature(), QgsGeometryAnalyzer::convexFeature(), QgsGeometryAnalyzer::dissolveFeature(), and fcnCombine().

bool QgsGeometry::contains ( const QgsPoint p) const

Test for containment of a point (uses GEOS)

Definition at line 3443 of file qgsgeometry.cpp.

References createGeosPoint(), exportWkbToGeos(), QgsMessageLog::logMessage(), mGeos, QgsDebugMsg, tr, and GEOSException::what().

Referenced by fcnContains(), and QgsPalLayerSettings::registerFeature().

bool QgsGeometry::contains ( const QgsGeometry geometry) const

Test for if geometry is contained in another (uses GEOS)

Note
added in 1.5

Definition at line 3504 of file qgsgeometry.cpp.

References geosRelOp().

QgsGeometry * QgsGeometry::convertToLine ( bool  destMultipart)
private
bool QgsGeometry::convertToMultiType ( )
QgsGeometry * QgsGeometry::convertToPoint ( bool  destMultipart)
private
QgsGeometry * QgsGeometry::convertToPolygon ( bool  destMultipart)
private
QgsGeometry * QgsGeometry::convertToType ( QGis::GeometryType  destType,
bool  destMultipart = false 
)

try to convert the geometry to the requested type

Parameters
destTypethe geometry type to be converted to
destMultipartdetermines if the output geometry will be multipart or not
Returns
the converted geometry or NULL pointer if the conversion fails.
Note
added in 2.2

Definition at line 4517 of file qgsgeometry.cpp.

References convertToLine(), convertToPoint(), convertToPolygon(), QGis::Line, QGis::Point, and QGis::Polygon.

QgsGeometry * QgsGeometry::convexHull ( )

Returns the smallest convex polygon that contains all the points in the geometry.

Definition at line 5759 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by QgsGeometryAnalyzer::convexFeature(), QgsGeometryAnalyzer::convexHull(), and fcnConvexHull().

bool QgsGeometry::crosses ( const QgsGeometry geometry) const

Test for if geometry crosses another (uses GEOS)

Note
added in 1.5

Definition at line 3534 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by fcnCrosses().

bool QgsGeometry::deletePart ( int  partNum)
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.

Returns
true on success
Note
added in version 1.2

Definition at line 5926 of file qgsgeometry.cpp.

References asMultiPolygon(), asPolygon(), fromMultiPolygon(), fromPolygon(), QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPolygon, QGis::WKBPolygon25D, and wkbType().

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?)

Definition at line 1460 of file qgsgeometry.cpp.

References exportGeosToWkb(), QGis::flatType(), mDirtyGeos, mDirtyWkb, mGeometry, mGeometrySize, QgsDebugMsg, QGis::wkbDimensions(), QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBNoGeometry, QGis::WKBPoint, QGis::WKBPoint25D, QGis::WKBPolygon, QGis::WKBPolygon25D, wkbType(), and QGis::WKBUnknown.

Referenced by QgsVectorLayerEditUtils::deleteVertex().

int QgsGeometry::deleteVertex ( QgsConstWkbPtr srcPtr,
QgsWkbPtr dstPtr,
int  atVertex,
bool  hasZValue,
int &  pointIndex,
bool  isRing,
bool  lastItem 
)
inlinestaticprivate

Definition at line 1378 of file qgsgeometry.cpp.

References QgsDebugMsg.

QgsGeometry * QgsGeometry::difference ( QgsGeometry geometry)

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

Definition at line 5849 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by fcnDifference(), and QgsInvertedPolygonRenderer::stopRender().

bool QgsGeometry::disjoint ( const QgsGeometry geometry) const

Test for if geometry is disjoint of another (uses GEOS)

Note
added in 1.5

Definition at line 3509 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by fcnDisjoint().

double QgsGeometry::distance ( QgsGeometry geom)
bool QgsGeometry::equals ( const QgsGeometry geometry) const

Test for if geometry equals another (uses GEOS)

Note
added in 1.5

Definition at line 3514 of file qgsgeometry.cpp.

References geosRelOp().

bool QgsGeometry::exportGeosToWkb ( ) const
private
QString QgsGeometry::exportToGeoJSON ( ) const
QString QgsGeometry::exportToWkt ( ) const
bool QgsGeometry::exportWkbToGeos ( ) const
private
void QgsGeometry::fromGeos ( GEOSGeometry *  geos)

Set the geometry, feeding in a geometry in GEOS format.

This class will take ownership of the buffer.

Note
not available in python bindings

Definition at line 684 of file qgsgeometry.cpp.

References mDirtyGeos, mDirtyWkb, mGeometry, and mGeos.

Referenced by addPart(), avoidIntersections(), QgsGeometryAnalyzer::createOffsetGeometry(), fromGeosGeom(), and unaryUnion().

QgsGeometry * QgsGeometry::fromMultiPoint ( const QgsMultiPoint multipoint)
static
QgsGeometry * QgsGeometry::fromMultiPolygon ( const QgsMultiPolygon multipoly)
static
QgsGeometry * QgsGeometry::fromMultiPolyline ( const QgsMultiPolyline multiline)
static
QgsGeometry * QgsGeometry::fromPoint ( const QgsPoint point)
static
QgsGeometry * QgsGeometry::fromPolygon ( const QgsPolygon polygon)
static
QgsGeometry * QgsGeometry::fromPolyline ( const QgsPolyline polyline)
static
QgsGeometry * QgsGeometry::fromRect ( const QgsRectangle rect)
static
void QgsGeometry::fromWkb ( unsigned char *  wkb,
size_t  length 
)
QgsGeometry * QgsGeometry::fromWkt ( QString  wkt)
static
int QgsGeometry::geomDigits ( const GEOSGeometry *  geom)
staticprivate

Determines the maximum number of digits before the dot.

Definition at line 5311 of file qgsgeometry.cpp.

Referenced by lineContainedInLine(), and pointContainedInLine().

bool QgsGeometry::geosRelOp ( char(*)(const GEOSGeometry *, const GEOSGeometry *)  op,
const QgsGeometry a,
const QgsGeometry b 
)
staticprivate
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?)

Definition at line 1703 of file qgsgeometry.cpp.

References exportGeosToWkb(), QGis::flatType(), mDirtyGeos, mDirtyWkb, mGeometry, mGeometrySize, QgsDebugMsg, QGis::wkbDimensions(), QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBNoGeometry, QGis::WKBPoint, QGis::WKBPoint25D, QGis::WKBPolygon, QGis::WKBPolygon25D, wkbType(), and QGis::WKBUnknown.

Referenced by QgsVectorLayerEditUtils::insertVertex().

bool QgsGeometry::insertVertex ( double  x,
double  y,
int  beforeVertex,
const GEOSCoordSequence *  old_sequence,
GEOSCoordSequence **  new_sequence 
)
private

Insert a new vertex before the given vertex index (first number is index 0) in the given GEOS Coordinate Sequence.

If the requested vertex number is greater than the last actual vertex, it is assumed that the vertex is to be appended instead of inserted.

Parameters
xx coordinate
yy coordinate
beforeVertexinsert before vertex with this index
old_sequenceThe sequence to update (The caller remains the owner).
new_sequenceThe updated sequence (The caller becomes the owner if the function returns true). Returns false if beforeVertex does not correspond to a valid vertex number on the Coordinate Sequence.

Definition at line 1142 of file qgsgeometry.cpp.

bool QgsGeometry::insertVertex ( QgsConstWkbPtr srcPtr,
QgsWkbPtr dstPtr,
int  beforeVertex,
const double &  x,
const double &  y,
bool  hasZValue,
int &  pointIndex,
bool  isRing 
)
inlinestaticprivate

Definition at line 1655 of file qgsgeometry.cpp.

QgsGeometry * QgsGeometry::interpolate ( double  distance)
QgsGeometry * QgsGeometry::intersection ( QgsGeometry geometry)
bool QgsGeometry::intersects ( const QgsRectangle r) const
bool QgsGeometry::intersects ( const QgsGeometry geometry) const

Test for intersection with a geometry (uses GEOS)

Definition at line 3421 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), mGeos, and QgsDebugMsg.

bool QgsGeometry::isGeosEmpty ( )

check if geometry is empty using GEOS

Note
added in 1.5

Definition at line 6172 of file qgsgeometry.cpp.

References asGeos(), QgsMessageLog::logMessage(), tr, and GEOSException::what().

bool QgsGeometry::isGeosEqual ( QgsGeometry g)

compare geometries using GEOS

Note
added in 1.5

Definition at line 6167 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by QgsVectorLayer::updateFeature().

bool QgsGeometry::isGeosValid ( )

check validity using GEOS

Note
added in 1.5

Definition at line 6149 of file qgsgeometry.cpp.

References asGeos(), QgsMessageLog::logMessage(), tr, and GEOSException::what().

Referenced by QgsPalLayerSettings::registerFeature().

bool QgsGeometry::isMultipart ( )
double QgsGeometry::leftOf ( double  x,
double  y,
double &  x1,
double &  y1,
double &  x2,
double &  y2 
)
private

Returns < 0 if point(x/y) is left of the line x1,y1 -> x1,y2.

Definition at line 6190 of file qgsgeometry.cpp.

Referenced by closestSegmentWithContext().

double QgsGeometry::length ( )

get length of geometry using GEOS

Note
added in 1.5

Definition at line 5618 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), mDirtyGeos, and mGeos.

Referenced by QgsPalLayerSettings::checkMinimumSizeMM(), QgsTransectSample::createSample(), and fromWkb().

int QgsGeometry::lineContainedInLine ( const GEOSGeometry *  line1,
const GEOSGeometry *  line2 
)
staticprivate

Tests if line1 is completely contained in line2.

This method works with a very small buffer around line2 and therefore is less prone to numerical errors as the corresponding geos method

Definition at line 5260 of file qgsgeometry.cpp.

References DEFAULT_QUADRANT_SEGMENTS, and geomDigits().

Referenced by reshapeLine().

GEOSGeometry * QgsGeometry::linePointDifference ( GEOSGeometry *  GEOSsplitPoint)
private

Splits line/multiline geometries following a single point.

Definition at line 4643 of file qgsgeometry.cpp.

References asGeos(), asMultiPolyline(), asPoint(), asPolyline(), fromGeosGeom(), fromMultiPolyline(), and mGeos.

Referenced by splitLinearGeometry().

int QgsGeometry::makeDifference ( QgsGeometry other)

Changes this geometry such that it does not intersect the other geometry.

Parameters
othergeometry that should not be intersect
Returns
0 in case of success

Definition at line 3122 of file qgsgeometry.cpp.

References CATCH_GEOS, convertToMultiType(), exportWkbToGeos(), isMultipart(), mDirtyGeos, mDirtyWkb, and mGeos.

Referenced by QgsVectorLayer::removePolygonIntersections().

int QgsGeometry::mergeGeometriesMultiTypeSplit ( QVector< GEOSGeometry * > &  splitResult)
private
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

Definition at line 1229 of file qgsgeometry.cpp.

References exportGeosToWkb(), mDirtyGeos, mDirtyWkb, mGeometry, QgsDebugMsg, QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPoint, QGis::WKBMultiPoint25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPoint, QGis::WKBPoint25D, QGis::WKBPolygon, QGis::WKBPolygon25D, and wkbType().

Referenced by QgsVectorLayerEditUtils::moveVertex().

bool QgsGeometry::moveVertex ( QgsWkbPtr wkbPtr,
const double &  x,
const double &  y,
int  atVertex,
bool  hasZValue,
int &  pointIndex,
bool  isRing 
)
inlinestaticprivate

Definition at line 1194 of file qgsgeometry.cpp.

GEOSGeometry * QgsGeometry::nodeGeometries ( const GEOSGeometry *  splitLine,
const GEOSGeometry *  poly 
)
staticprivate

Nodes together a split line and a (multi-) polygon geometry in a multilinestring.

Returns
the noded multiline geometry or 0 in case of error. The calling function takes ownership of the node geometry

Definition at line 5241 of file qgsgeometry.cpp.

Referenced by reshapeLine(), and splitPolygonGeometry().

int QgsGeometry::numberOfGeometries ( GEOSGeometry *  g) const
private

Returns number of single geometry in a geos geometry.

Is save for geos 2 and 3

Definition at line 5350 of file qgsgeometry.cpp.

Referenced by splitPolygonGeometry().

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.

Note
added in 2.4
needs GEOS >= 3.3 - otherwise always returns 0

Definition at line 5694 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), QGis::Line, mDirtyGeos, mGeos, and type().

Referenced by offsetLine().

QgsGeometry & QgsGeometry::operator= ( QgsGeometry const &  rhs)

assignments will prompt a deep copy of the object

Note
not available in python bindings

Definition at line 546 of file qgsgeometry.cpp.

References mDirtyGeos, mDirtyWkb, mGeometry, mGeometrySize, and mGeos.

bool QgsGeometry::overlaps ( const QgsGeometry geometry) const

Test for if geometry overlaps another (uses GEOS)

Note
added in 1.5

Definition at line 3524 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by fcnOverlaps().

int QgsGeometry::pointContainedInLine ( const GEOSGeometry *  point,
const GEOSGeometry *  line 
)
staticprivate

Tests if a point is on a line.

This method works with a very small buffer and is thus less prone to numerical problems as the direct geos functions.

Parameters
pointthe point to test
lineline to test
Returns
0 not contained, 1 if contained, <0 in case of error

Definition at line 5292 of file qgsgeometry.cpp.

References geomDigits().

Referenced by reshapeLine().

QgsGeometry * QgsGeometry::pointOnSurface ( )

Returns a point within a geometry.

Definition at line 5744 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by QgsSymbolLayerV2Utils::polygonPointOnSurface().

int QgsGeometry::reshapeGeometry ( const QList< QgsPoint > &  reshapeWithLine)

Replaces a part of this geometry with another line.

Returns
0 in case of success
Note
: this function was added in version 1.3

Definition at line 3015 of file qgsgeometry.cpp.

References createGeosLineString(), exportWkbToGeos(), QGis::Line, mDirtyGeos, mDirtyWkb, mGeos, QGis::Point, reshapeLine(), reshapePolygon(), and type().

GEOSGeometry * QgsGeometry::reshapeLine ( const GEOSGeometry *  origLine,
const GEOSGeometry *  reshapeLineGeos 
)
staticprivate

Creates a new line from an original line and a reshape line.

The part of the input line from the first to the last intersection with the reshape line will be replaced. The calling function takes ownership of the result.

Parameters
origLinethe original line
reshapeLineGeosthe reshape line
Returns
the reshaped line or 0 in case of error

Definition at line 4973 of file qgsgeometry.cpp.

References createGeosPoint(), lineContainedInLine(), QgsMessageLog::logMessage(), nodeGeometries(), pointContainedInLine(), tr, and GEOSException::what().

Referenced by reshapeGeometry(), and reshapePolygon().

GEOSGeometry * QgsGeometry::reshapePolygon ( const GEOSGeometry *  polygon,
const GEOSGeometry *  reshapeLineGeos 
)
staticprivate

Creates a new polygon replacing the part from the first to the second intersection with the reshape line.

As a polygon ring is always closed, the method keeps the longer part of the existing boundary

Parameters
polygongeometry to reshape
reshapeLineGeosthe reshape line
Returns
the reshaped polygon or 0 in case of error

Definition at line 4860 of file qgsgeometry.cpp.

References QgsMessageLog::logMessage(), reshapeLine(), tr, and GEOSException::what().

Referenced by reshapeGeometry().

QgsGeometry * QgsGeometry::simplify ( double  tolerance)

Returns a simplified version of this geometry using a specified tolerance value.

Definition at line 5714 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by QgsTopologyPreservingSimplifier::simplify(), QgsGeometryAnalyzer::simplifyFeature(), and QgsTopologyPreservingSimplifier::simplifyGeometry().

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.

Parameters
splitLinethe line that splits the geometry
[out]newGeometrieslist of new geometries that have been created with the split
topologicaltrue if topological editing is enabled
[out]topologyTestPointspoints that need to be tested for topological completeness in the dataset
Returns
0 in case of success, 1 if geometry has not been split, error else

Definition at line 2935 of file qgsgeometry.cpp.

References CATCH_GEOS, createGeosLineString(), createGeosPoint(), exportGeosToWkb(), exportWkbToGeos(), QGis::Line, mDirtyGeos, mDirtyWkb, mGeos, QGis::Point, QGis::Polygon, splitLinearGeometry(), splitPolygonGeometry(), topologicalTestPointsSplit(), and type().

Referenced by QgsVectorLayerEditUtils::splitFeatures(), and QgsVectorLayerEditUtils::splitParts().

int QgsGeometry::splitLinearGeometry ( GEOSGeometry *  splitLine,
QList< QgsGeometry * > &  newGeometries 
)
private

Splits line/multiline geometries.

Parameters
splitLinethe line that splits the feature
newGeometriesnew geometries if splitting was successful
Returns
0 in case of success, 1 if geometry has not been split, error else

Definition at line 4688 of file qgsgeometry.cpp.

References exportWkbToGeos(), fromGeosGeom(), linePointDifference(), mDirtyGeos, mDirtyWkb, mergeGeometriesMultiTypeSplit(), and mGeos.

Referenced by splitGeometry().

int QgsGeometry::splitPolygonGeometry ( GEOSGeometry *  splitLine,
QList< QgsGeometry * > &  newGeometries 
)
private

Splits polygon/multipolygon geometries.

Returns
0 in case of success, 1 if geometry has not been split, error else

Definition at line 4752 of file qgsgeometry.cpp.

References exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, mDirtyWkb, mergeGeometriesMultiTypeSplit(), mGeos, nodeGeometries(), numberOfGeometries(), and QgsDebugMsg.

Referenced by splitGeometry().

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

Definition at line 2021 of file qgsgeometry.cpp.

References pal::max(), QgsDebugMsg, QgsPoint::sqrDist(), QgsPoint::toString(), and vertexAt().

QgsGeometry * QgsGeometry::symDifference ( QgsGeometry geometry)

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

Definition at line 5870 of file qgsgeometry.cpp.

References CATCH_GEOS, exportWkbToGeos(), fromGeosGeom(), mDirtyGeos, and mGeos.

Referenced by fcnSymDifference().

int QgsGeometry::topologicalTestPointsSplit ( const GEOSGeometry *  splitLine,
QList< QgsPoint > &  testPoints 
) const
private

Finds out the points that need to be tested for topological correctnes if this geometry will be split.

Returns
0 in case of success

Definition at line 5193 of file qgsgeometry.cpp.

References mGeos.

Referenced by splitGeometry().

bool QgsGeometry::touches ( const QgsGeometry geometry) const

Test for if geometry touch another (uses GEOS)

Note
added in 1.5

Definition at line 3519 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by fcnTouches().

int QgsGeometry::transform ( const QgsCoordinateTransform ct)
void QgsGeometry::transformVertex ( QgsWkbPtr wkbPtr,
const QgsCoordinateTransform ct,
bool  hasZValue 
)
private

Transforms a single vertex by ct.

Parameters
wkbPtrpointer to current position in wkb. Is increased automatically by the function
ctthe QgsCoordinateTransform
hasZValue25D type?

Definition at line 4626 of file qgsgeometry.cpp.

References QgsCoordinateTransform::transformInPlace().

Referenced by transform().

int QgsGeometry::translate ( double  dx,
double  dy 
)
void QgsGeometry::translateVertex ( QgsWkbPtr wkbPtr,
double  dx,
double  dy,
bool  hasZValue 
)
private

Translates a single vertex by dx and dy.

Parameters
wkbPtrpointer to current position in wkb array. Is increased automatically by the function
dxtranslation of x coordinate
dytranslation of y coordinate
hasZValue25D type?

Definition at line 4606 of file qgsgeometry.cpp.

Referenced by translate().

QGis::GeometryType QgsGeometry::type ( )
QgsGeometry * QgsGeometry::unaryUnion ( const QList< QgsGeometry * > &  geometryList)
static

compute the unary union on a list of geometries.

May be faster than an iterative union on a set of geometries.

Parameters
geometryLista list of QgsGeometry* as input
Returns
the new computed QgsGeometry, or null

Definition at line 6516 of file qgsgeometry.cpp.

References _makeUnion(), asGeos(), fromGeos(), and QgsGeometry().

Referenced by QgsInvertedPolygonRenderer::stopRender().

void QgsGeometry::validateGeometry ( QList< Error > &  errors)

Validate geometry and produce a list of geometry errors.

Note
added in 1.5
python binding added in 1.6

Definition at line 6144 of file qgsgeometry.cpp.

References QgsGeometryValidator::validateGeometry().

QgsPoint QgsGeometry::vertexAt ( int  atVertex)
bool QgsGeometry::within ( const QgsGeometry geometry) const

Test for if geometry is within another (uses GEOS)

Note
added in 1.5

Definition at line 3529 of file qgsgeometry.cpp.

References geosRelOp().

Referenced by QgsPointSample::addSamplePoints(), and fcnWithin().

size_t QgsGeometry::wkbSize ( ) const
QGis::WkbType QgsGeometry::wkbType ( ) const

Member Data Documentation

bool QgsGeometry::mDirtyGeos
mutableprivate
bool QgsGeometry::mDirtyWkb
mutableprivate
unsigned char* QgsGeometry::mGeometry
mutableprivate
size_t QgsGeometry::mGeometrySize
mutableprivate

size of geometry

Definition at line 527 of file qgsgeometry.h.

Referenced by convertToMultiType(), deleteVertex(), exportGeosToWkb(), fromWkb(), insertVertex(), operator=(), QgsGeometry(), and wkbSize().

GEOSGeometry* QgsGeometry::mGeos
mutableprivate

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