QGIS API Documentation  2.99.0-Master (19b062c)
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
QgsGeometry Class Reference

A geometry is the spatial representation of a feature. More...

#include <qgsgeometry.h>

Classes

class  Error
 

Public Types

enum  BufferSide { SideLeft = 0, SideRight }
 Side of line to buffer. More...
 
enum  EndCapStyle { CapRound = 1, CapFlat, CapSquare }
 End cap styles for buffers. More...
 
enum  JoinStyle { JoinStyleRound = 1, JoinStyleMiter, JoinStyleBevel }
 Join styles for buffers. More...
 
enum  OperationResult {
  Success = 0, NothingHappened = 1000, InvalidBaseGeometry, InvalidInputGeometryType,
  SelectionIsEmpty, SelectionIsGreaterThanOne, GeometryEngineError, LayerNotEditable,
  AddPartSelectedGeometryNotFound, AddPartNotMultiGeometry, AddRingNotClosed, AddRingNotValid,
  AddRingCrossesExistingRings, AddRingNotInExistingFeature, SplitCannotSplitPoint
}
 Success or failure of a geometry operation. More...
 
enum  ValidationMethod { ValidatorQgisInternal, ValidatorGeos }
 Available methods for validating geometries. More...
 

Public Member Functions

 QgsGeometry ()
 Constructor. More...
 
 QgsGeometry (const QgsGeometry &)
 Copy constructor will prompt a deep copy of the object. More...
 
 QgsGeometry (QgsAbstractGeometry *geom)
 Creates a geometry from an abstract geometry object. More...
 
 QgsGeometry (std::unique_ptr< QgsAbstractGeometry > geom)
 Creates a geometry from an abstract geometry object. More...
 
 ~QgsGeometry ()
 
OperationResult addPart (const QVector< QgsPointXY > &points, QgsWkbTypes::GeometryType geomType=QgsWkbTypes::UnknownGeometry)
 Adds a new part to a the geometry. More...
 
OperationResult addPart (const QgsPointSequence &points, QgsWkbTypes::GeometryType geomType=QgsWkbTypes::UnknownGeometry)
 Adds a new part to a the geometry. More...
 
OperationResult addPart (QgsAbstractGeometry *part, QgsWkbTypes::GeometryType geomType=QgsWkbTypes::UnknownGeometry)
 Adds a new part to this geometry. More...
 
OperationResult addPart (GEOSGeometry *newPart)
 Adds a new island polygon to a multipolygon feature. More...
 
OperationResult addPart (const QgsGeometry &newPart)
 Adds a new island polygon to a multipolygon feature. More...
 
OperationResult addRing (const QVector< QgsPointXY > &ring)
 Adds a new ring to this geometry. More...
 
OperationResult addRing (QgsCurve *ring)
 Adds a new ring to this geometry. More...
 
void adjacentVertices (int atVertex, int &beforeVertex, int &afterVertex) const
 Returns the indexes of the vertices before and after the given vertex index. More...
 
double angleAtVertex (int vertex) const
 Returns the bisector angle for this geometry at the specified vertex. More...
 
double area () const
 Returns the area of the geometry using GEOS. More...
 
QVector< QgsGeometryasGeometryCollection () const
 Return contents of the geometry as a list of geometries. More...
 
QString asJson (int precision=17) const
 Exports the geometry to a GeoJSON string. More...
 
QgsMultiPointXY asMultiPoint () const
 Returns contents of the geometry as a multi point if wkbType is WKBMultiPoint, otherwise an empty list. More...
 
QgsMultiPolygonXY asMultiPolygon () const
 Returns contents of the geometry as a multi polygon if wkbType is WKBMultiPolygon, otherwise an empty list. More...
 
QgsMultiPolylineXY asMultiPolyline () const
 Returns contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list. More...
 
QgsPointXY asPoint () const
 Returns contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0]. More...
 
QgsPolygonXY asPolygon () const
 Returns contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list. More...
 
QgsPolylineXY asPolyline () const
 Returns contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list. More...
 
QPointF asQPointF () const
 Returns contents of the geometry as a QPointF if wkbType is WKBPoint, otherwise returns a null QPointF. More...
 
QPolygonF asQPolygonF () const
 Returns contents of the geometry as a QPolygonF. More...
 
QByteArray asWkb () const
 Export the geometry to WKB. More...
 
QString asWkt (int precision=17) const
 Exports the geometry to WKT. More...
 
int avoidIntersections (const QList< QgsVectorLayer *> &avoidIntersectionsLayers, const QHash< QgsVectorLayer *, QSet< QgsFeatureId > > &ignoreFeatures=(QHash< QgsVectorLayer *, QSet< QgsFeatureId > >()))
 Modifies geometry to avoid intersections with the layers specified in project properties. More...
 
QgsRectangle boundingBox () const
 Returns the bounding box of the geometry. More...
 
QgsGeometry buffer (double distance, int segments) const
 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, EndCapStyle endCapStyle, JoinStyle joinStyle, double miterLimit) const
 Returns a buffer region around the geometry, with additional style options. More...
 
QgsGeometry centroid () const
 Returns the center of mass of a geometry. More...
 
QgsGeometry clipped (const QgsRectangle &rectangle)
 Clips the geometry using the specified rectangle. More...
 
double closestSegmentWithContext (const QgsPointXY &point, QgsPointXY &minDistPoint, int &afterVertex, int *leftOf=nullptr, double epsilon=DEFAULT_SEGMENT_EPSILON) const
 Searches for the closest segment of geometry to the given point. More...
 
QgsPointXY closestVertex (const QgsPointXY &point, int &atVertex, int &beforeVertex, int &afterVertex, double &sqrDist) const
 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 and after the closest vertex. More...
 
double closestVertexWithContext (const QgsPointXY &point, int &atVertex) const
 Searches for the closest vertex in this geometry to the given point. More...
 
QgsGeometry combine (const QgsGeometry &geometry) const
 Returns a geometry representing all the points in this geometry and other (a union geometry operation). More...
 
const QgsAbstractGeometryconstGet () const
 Returns a non-modifiable (const) reference to the underlying abstract geometry primitive. More...
 
bool contains (const QgsPointXY *p) const
 Tests for containment of a point (uses GEOS) More...
 
bool contains (const QgsGeometry &geometry) const
 Tests for if geometry is contained in another (uses GEOS) More...
 
bool convertToMultiType ()
 Converts single type geometry into multitype geometry e.g. More...
 
bool convertToSingleType ()
 Converts multi type geometry into single type geometry e.g. More...
 
void convertToStraightSegment ()
 Converts the geometry to straight line segments, if it is a curved geometry type. More...
 
QgsGeometry convertToType (QgsWkbTypes::GeometryType destType, bool destMultipart=false) const
 Try to convert the geometry to the requested type. More...
 
QgsGeometry convexHull () const
 Returns the smallest convex polygon that contains all the points in the geometry. More...
 
bool crosses (const QgsGeometry &geometry) const
 Test for if geometry crosses another (uses GEOS) More...
 
QgsGeometry delaunayTriangulation (double tolerance=0.0, bool edgesOnly=false) const
 Returns the Delaunay triangulation for the vertices of the geometry. More...
 
bool deletePart (int partNum)
 Deletes part identified by the part number. More...
 
bool deleteRing (int ringNum, int partNum=0)
 Deletes a ring in polygon or multipolygon. More...
 
bool deleteVertex (int atVertex)
 Deletes the vertex at the given position number and item (first number is index 0) More...
 
QgsGeometry densifyByCount (int extraNodesPerSegment) const
 Returns a copy of the geometry which has been densified by adding the specified number of extra nodes within each segment of the geometry. More...
 
QgsGeometry densifyByDistance (double distance) const
 Densifies the geometry by adding regularly placed extra nodes inside each segment so that the maximum distance between any two nodes does not exceed the specified distance. More...
 
QgsGeometry difference (const QgsGeometry &geometry) const
 Returns a geometry representing the points making up this geometry that do not make up other. More...
 
bool disjoint (const QgsGeometry &geometry) const
 Tests for if geometry is disjoint of another (uses GEOS) More...
 
double distance (const QgsGeometry &geom) const
 Returns the minimum distance between this geometry and another geometry, using GEOS. More...
 
double distanceToVertex (int vertex) const
 Returns the distance along this geometry from its first vertex to the specified vertex. More...
 
void draw (QPainter &p) const
 Draws the geometry onto a QPainter. More...
 
bool equals (const QgsGeometry &geometry) const
 Test for if geometry equals another (uses GEOS) More...
 
GEOSGeometry * exportToGeos (double precision=0) const
 Returns a geos geometry - caller takes ownership of the object (should be deleted with GEOSGeom_destroy_r) More...
 
QgsGeometry extendLine (double startDistance, double endDistance) const
 Extends a (multi)line geometry by extrapolating out the start or end of the line by a specified distance. More...
 
QgsGeometry extrude (double x, double y)
 Returns an extruded version of this geometry. More...
 
void fromGeos (GEOSGeometry *geos)
 Set the geometry, feeding in a geometry in GEOS format. More...
 
void fromWkb (unsigned char *wkb, int length)
 Set the geometry, feeding in the buffer containing OGC Well-Known Binary and the buffer's length. More...
 
void fromWkb (const QByteArray &wkb)
 Set the geometry, feeding in the buffer containing OGC Well-Known Binary. More...
 
QgsAbstractGeometryget ()
 Returns a modifiable (non-const) reference to the underlying abstract geometry primitive. More...
 
double hausdorffDistance (const QgsGeometry &geom) const
 Returns the Hausdorff distance between this geometry and geom. More...
 
double hausdorffDistanceDensify (const QgsGeometry &geom, double densifyFraction) const
 Returns the Hausdorff distance between this geometry and geom. 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 insertVertex (const QgsPoint &point, 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...
 
QgsGeometry interpolate (double distance) const
 Returns interpolated point on line at distance. More...
 
double interpolateAngle (double distance) const
 Returns the angle parallel to the linestring or polygon boundary at the specified distance along the geometry. More...
 
QgsGeometry intersection (const QgsGeometry &geometry) const
 Returns a geometry representing the points shared by this geometry and other. More...
 
bool intersects (const QgsRectangle &r) const
 Tests for intersection with a rectangle (uses GEOS) More...
 
bool intersects (const QgsGeometry &geometry) const
 Tests for intersection with a geometry (uses GEOS) More...
 
bool isEmpty () const
 Returns true if the geometry is empty (eg a linestring with no vertices, or a collection with no geometries). More...
 
bool isGeosEqual (const QgsGeometry &) const
 Compares the geometry with another geometry using GEOS. More...
 
bool isGeosValid () const
 Checks validity of the geometry using GEOS. More...
 
bool isMultipart () const
 Returns true if WKB of the geometry is of WKBMulti* type. More...
 
bool isNull () const
 Returns true if the geometry is null (ie, contains no underlying geometry accessible via geometry() ). More...
 
bool isSimple () const
 Determines whether the geometry is simple (according to OGC definition), i.e. More...
 
QString lastError () const
 Returns an error string referring to the last error encountered either when this geometry was created or when an operation was performed on the geometry. More...
 
double length () const
 Returns the length of geometry using GEOS. More...
 
double lineLocatePoint (const QgsGeometry &point) const
 Returns a distance representing the location along this linestring of the closest point on this linestring geometry to the specified point. More...
 
QgsGeometry makeDifference (const QgsGeometry &other) const
 Returns the geometry formed by modifying this geometry such that it does not intersect the other geometry. More...
 
int makeDifferenceInPlace (const QgsGeometry &other)
 Changes this geometry such that it does not intersect the other geometry. More...
 
QgsGeometry makeValid () const
 Attempts to make an invalid geometry valid without losing vertices. More...
 
void mapToPixel (const QgsMapToPixel &mtp)
 Transforms the geometry from map units to pixels in place. More...
 
QgsGeometry mergeLines () const
 Merges any connected lines in a LineString/MultiLineString geometry and converts them to single line strings. More...
 
QgsGeometry minimalEnclosingCircle (QgsPointXY &center, double &radius, unsigned int segments=36) const
 Returns the minimal enclosing circle for the geometry. More...
 
QgsGeometry minimalEnclosingCircle (unsigned int segments=36) const
 Returns the minimal enclosing circle for the geometry. 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 moveVertex (const QgsPoint &p, int atVertex)
 Moves the vertex at the given position number and item (first number is index 0) to the given coordinates. More...
 
QgsGeometry nearestPoint (const QgsGeometry &other) const
 Returns the nearest point on this geometry to another geometry. More...
 
QgsGeometry offsetCurve (double distance, int segments, JoinStyle joinStyle, double miterLimit) const
 Returns an offset line at a given distance and side from an input line. More...
 
 operator bool () const
 Returns true if the geometry is non empty (ie, isNull() returns false), or false if it is an empty, uninitialized geometry (ie, isNull() returns true). More...
 
 operator QVariant () const
 Allows direct construction of QVariants from geometry. More...
 
QgsGeometryoperator= (QgsGeometry const &rhs)
 Creates a deep copy of the object. More...
 
QgsGeometry orientedMinimumBoundingBox (double &area, double &angle, double &width, double &height) const
 Returns the oriented minimum bounding box for the geometry, which is the smallest (by area) rotated rectangle which fully encompasses the geometry. More...
 
QgsGeometry orientedMinimumBoundingBox () const
 Returns the oriented minimum bounding box for the geometry, which is the smallest (by area) rotated rectangle which fully encompasses the geometry. More...
 
QgsGeometry orthogonalize (double tolerance=1.0E-8, int maxIterations=1000, double angleThreshold=15.0) const
 Attempts to orthogonalize a line or polygon geometry by shifting vertices to make the geometries angles either right angles or flat lines. More...
 
bool overlaps (const QgsGeometry &geometry) const
 Test for if geometry overlaps another (uses GEOS) More...
 
QgsGeometry pointOnSurface () const
 Returns a point guaranteed to lie on the surface of a geometry. More...
 
QgsGeometry poleOfInaccessibility (double precision, double *distanceToBoundary=nullptr) const
 Calculates the approximate pole of inaccessibility for a surface, which is the most distant internal point from the boundary of the surface. More...
 
QgsGeometry removeInteriorRings (double minimumAllowedArea=-1) const
 Removes the interior rings from a (multi)polygon geometry. More...
 
bool requiresConversionToStraightSegments () const
 Returns true if the geometry is a curved geometry type which requires conversion to display as straight line segments. More...
 
OperationResult reshapeGeometry (const QgsLineString &reshapeLineString)
 Replaces a part of this geometry with another line. More...
 
OperationResult rotate (double rotation, const QgsPointXY &center)
 Rotate this geometry around the Z axis. More...
 
void set (QgsAbstractGeometry *geometry)
 Sets the underlying geometry store. More...
 
QgsGeometry shortestLine (const QgsGeometry &other) const
 Returns the shortest line joining this geometry to another geometry. More...
 
QgsGeometry simplify (double tolerance) const
 Returns a simplified version of this geometry using a specified tolerance value. More...
 
QgsGeometry singleSidedBuffer (double distance, int segments, BufferSide side, JoinStyle joinStyle=JoinStyleRound, double miterLimit=2.0) const
 Returns a single sided buffer for a (multi)line geometry. More...
 
QgsGeometry smooth (const unsigned int iterations=1, const double offset=0.25, double minimumDistance=-1.0, double maxAngle=180.0) const
 Smooths a geometry by rounding off corners using the Chaikin algorithm. More...
 
QgsGeometry snappedToGrid (double hSpacing, double vSpacing, double dSpacing=0, double mSpacing=0) const
 Returns a new geometry with all points or vertices snapped to the closest point of the grid. More...
 
OperationResult splitGeometry (const QVector< QgsPointXY > &splitLine, QVector< QgsGeometry > &newGeometries, bool topological, QVector< QgsPointXY > &topologyTestPoints)
 Splits this geometry according to a given line. More...
 
double sqrDistToVertexAt (QgsPointXY &point SIP_IN, int atVertex) const
 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...
 
QgsGeometry subdivide (int maxNodes=256) const
 Subdivides the geometry. More...
 
QgsGeometry symDifference (const QgsGeometry &geometry) const
 Returns a geometry representing the points making up this geometry that do not make up other. More...
 
bool touches (const QgsGeometry &geometry) const
 Test for if geometry touch another (uses GEOS) More...
 
OperationResult transform (const QgsCoordinateTransform &ct)
 Transforms this geometry as described by CoordinateTransform ct. More...
 
OperationResult transform (const QTransform &t, double zTranslate=0.0, double zScale=1.0, double mTranslate=0.0, double mScale=1.0)
 Transforms the x and y components of the geometry using a QTransform object t. More...
 
OperationResult translate (double dx, double dy, double dz=0.0, double dm=0.0)
 Translates this geometry by dx, dy, dz and dm. More...
 
QgsWkbTypes::GeometryType type () const
 Returns type of the geometry as a QgsWkbTypes::GeometryType. More...
 
void validateGeometry (QVector< QgsGeometry::Error > &errors, ValidationMethod method=ValidatorQgisInternal) const
 Validates geometry and produces a list of geometry errors. More...
 
QgsPoint vertexAt (int atVertex) const
 Returns coordinates of a vertex. More...
 
bool vertexIdFromVertexNr (int number, QgsVertexId &id) const
 Calculates the vertex ID from a vertex number. More...
 
int vertexNrFromVertexId (QgsVertexId id) const
 Returns the vertex number corresponding to a vertex id. More...
 
QgsVertexIterator vertices () const
 Returns Java-style iterator for traversal of vertices of the geometry. More...
 
QgsAbstractGeometry::vertex_iterator vertices_begin () const
 Returns STL-style iterator pointing to the first vertex of the geometry. More...
 
QgsAbstractGeometry::vertex_iterator vertices_end () const
 Returns STL-style iterator pointing to the imaginary vertex after the last vertex of the geometry. More...
 
QgsGeometry voronoiDiagram (const QgsGeometry &extent=QgsGeometry(), double tolerance=0.0, bool edgesOnly=false) const
 Creates a Voronoi diagram for the nodes contained within the geometry. More...
 
bool within (const QgsGeometry &geometry) const
 Test for if geometry is within another (uses GEOS) More...
 
QgsWkbTypes::Type wkbType () const
 Returns type of the geometry as a WKB type (point / linestring / polygon etc.) More...
 

Static Public Member Functions

static QgsGeometry collectGeometry (const QVector< QgsGeometry > &geometries)
 Creates a new multipart geometry from a list of QgsGeometry objects. More...
 
static bool compare (const QgsPolylineXY &p1, const QgsPolylineXY &p2, double epsilon=4 *std::numeric_limits< double >::epsilon())
 Compares two polylines for equality within a specified tolerance. More...
 
static bool compare (const QgsPolygonXY &p1, const QgsPolygonXY &p2, double epsilon=4 *std::numeric_limits< double >::epsilon())
 Compares two polygons for equality within a specified tolerance. More...
 
static bool compare (const QgsMultiPolygonXY &p1, const QgsMultiPolygonXY &p2, double epsilon=4 *std::numeric_limits< double >::epsilon())
 Compares two multipolygons for equality within a specified tolerance. More...
 
static void convertPointList (const QVector< QgsPointXY > &input, QgsPointSequence &output)
 Upgrades a point list from QgsPointXY to QgsPoint. More...
 
static void convertPointList (const QgsPointSequence &input, QVector< QgsPointXY > &output)
 Downgrades a point list from QgsPoint to QgsPointXY. More...
 
static QgsGeometryEnginecreateGeometryEngine (const QgsAbstractGeometry *geometry)
 Creates and returns a new geometry engine. More...
 
static QgsPolygonXY createPolygonFromQPolygonF (const QPolygonF &polygon)
 Creates a QgsPolygonXYfrom a QPolygonF. More...
 
static QgsPolylineXY createPolylineFromQPolygonF (const QPolygonF &polygon)
 Creates a QgsPolylineXY from a QPolygonF. More...
 
static QgsGeometry fromMultiPointXY (const QgsMultiPointXY &multipoint)
 Creates a new geometry from a QgsMultiPointXY object. More...
 
static QgsGeometry fromMultiPolygonXY (const QgsMultiPolygonXY &multipoly)
 Creates a new geometry from a QgsMultiPolygon. More...
 
static QgsGeometry fromMultiPolylineXY (const QgsMultiPolylineXY &multiline)
 Creates a new geometry from a QgsMultiPolylineXY object. More...
 
static QgsGeometry fromPointXY (const QgsPointXY &point)
 Creates a new geometry from a QgsPointXY object. More...
 
static QgsGeometry fromPolygonXY (const QgsPolygonXY &polygon)
 Creates a new geometry from a QgsPolygon. More...
 
static QgsGeometry fromPolyline (const QgsPolyline &polyline)
 Creates a new LineString geometry from a list of QgsPoint points. More...
 
static QgsGeometry fromPolylineXY (const QgsPolylineXY &polyline)
 Creates a new LineString geometry from a list of QgsPointXY points. More...
 
static QgsGeometry fromQPointF (QPointF point)
 Construct geometry from a QPointF. More...
 
static QgsGeometry fromQPolygonF (const QPolygonF &polygon)
 Construct geometry from a QPolygonF. More...
 
static QgsGeometry fromRect (const QgsRectangle &rect)
 Creates a new geometry from a QgsRectangle. More...
 
static QgsGeometry fromWkt (const QString &wkt)
 Creates a new geometry from a WKT string. More...
 
static GEOSContextHandle_t getGEOSHandler ()
 Return GEOS context handle. More...
 
static QgsGeometry polygonize (const QVector< QgsGeometry > &geometries)
 Creates a GeometryCollection geometry containing possible polygons formed from the constituent linework of a set of geometries. More...
 
static QgsGeometry unaryUnion (const QVector< QgsGeometry > &geometries)
 Compute the unary union on a list of geometries. More...
 

Detailed Description

A geometry is the spatial representation of a feature.

Since QGIS 2.10, QgsGeometry acts as a generic container for geometry objects. QgsGeometry is implicitly shared, so making copies of geometries is inexpensive. The geometry container class can also be stored inside a QVariant object.

The actual geometry representation is stored as a QgsAbstractGeometry within the container, and can be accessed via the geometry() method or set using the setGeometry() method.

Definition at line 111 of file qgsgeometry.h.

Member Enumeration Documentation

◆ BufferSide

Side of line to buffer.

Enumerator
SideLeft 

Buffer to left of line.

SideRight 

Buffer to right of line.

Definition at line 802 of file qgsgeometry.h.

◆ EndCapStyle

End cap styles for buffers.

Enumerator
CapRound 

Round cap.

CapFlat 

Flat cap (in line with start/end of line)

CapSquare 

Square cap (extends past start/end of line by buffer distance)

Definition at line 809 of file qgsgeometry.h.

◆ JoinStyle

Join styles for buffers.

Enumerator
JoinStyleRound 

Use rounded joins.

JoinStyleMiter 

Use mitered joins.

JoinStyleBevel 

Use beveled joins.

Definition at line 817 of file qgsgeometry.h.

◆ OperationResult

Success or failure of a geometry operation.

This gives details about cause of failure.

Enumerator
Success 

Operation succeeded.

NothingHappened 

Nothing happened, without any error.

InvalidBaseGeometry 

The base geometry on which the operation is done is invalid or empty.

InvalidInputGeometryType 

The input geometry (ring, part, split line, etc.) has not the correct geometry type.

SelectionIsEmpty 

No features were selected.

SelectionIsGreaterThanOne 

More than one features were selected.

GeometryEngineError 

Geometry engine misses a method implemented or an error occurred in the geometry engine.

LayerNotEditable 

Cannot edit layer.

AddPartSelectedGeometryNotFound 

The selected geometry cannot be found.

AddPartNotMultiGeometry 

The source geometry is not multi.

AddRingNotClosed 

The input ring is not closed.

AddRingNotValid 

The input ring is not valid.

AddRingCrossesExistingRings 

The input ring crosses existing rings (it is not disjoint)

AddRingNotInExistingFeature 

The input ring doesn't have any existing ring to fit into.

SplitCannotSplitPoint 

Cannot split points.

Definition at line 119 of file qgsgeometry.h.

◆ ValidationMethod

Available methods for validating geometries.

Since
QGIS 3.0
Enumerator
ValidatorQgisInternal 

Use internal QgsGeometryValidator method.

ValidatorGeos 

Use GEOS validation methods.

Definition at line 1297 of file qgsgeometry.h.

Constructor & Destructor Documentation

◆ QgsGeometry() [1/4]

QgsGeometry::QgsGeometry ( )

Constructor.

Definition at line 56 of file qgsgeometry.cpp.

◆ QgsGeometry() [2/4]

QgsGeometry::QgsGeometry ( const QgsGeometry other)

Copy constructor will prompt a deep copy of the object.

Definition at line 81 of file qgsgeometry.cpp.

◆ QgsGeometry() [3/4]

QgsGeometry::QgsGeometry ( QgsAbstractGeometry geom)
explicit

Creates a geometry from an abstract geometry object.

Ownership of geom is transferred.

Since
QGIS 2.10

Definition at line 67 of file qgsgeometry.cpp.

◆ QgsGeometry() [4/4]

QgsGeometry::QgsGeometry ( std::unique_ptr< QgsAbstractGeometry geom)
explicit

Creates a geometry from an abstract geometry object.

Ownership of geom is transferred.

Note
Not available in Python bindings

Definition at line 74 of file qgsgeometry.cpp.

◆ ~QgsGeometry()

QgsGeometry::~QgsGeometry ( )

Definition at line 61 of file qgsgeometry.cpp.

Member Function Documentation

◆ addPart() [1/5]

QgsGeometry::OperationResult QgsGeometry::addPart ( const QVector< QgsPointXY > &  points,
QgsWkbTypes::GeometryType  geomType = QgsWkbTypes::UnknownGeometry 
)

Adds a new part to a the geometry.

Parameters
pointspoints describing part to add
geomTypedefault geometry type to create if no existing geometry
Returns
OperationResult a result code: success or reason of failure

Definition at line 630 of file qgsgeometry.cpp.

◆ addPart() [2/5]

Adds a new part to a the geometry.

Parameters
pointspoints describing part to add
geomTypedefault geometry type to create if no existing geometry
Returns
OperationResult a result code: success or reason of failure

Definition at line 637 of file qgsgeometry.cpp.

◆ addPart() [3/5]

Adds a new part to this geometry.

Parameters
partpart to add (ownership is transferred)
geomTypedefault geometry type to create if no existing geometry
Returns
OperationResult a result code: success or reason of failure

Definition at line 653 of file qgsgeometry.cpp.

◆ addPart() [4/5]

QgsGeometry::OperationResult QgsGeometry::addPart ( GEOSGeometry *  newPart)

Adds a new island polygon to a multipolygon feature.

Parameters
newPartpart to add. Ownership is NOT transferred.
Returns
OperationResult a result code: success or reason of failure
Note
not available in python bindings

Definition at line 732 of file qgsgeometry.cpp.

◆ addPart() [5/5]

QgsGeometry::OperationResult QgsGeometry::addPart ( const QgsGeometry newPart)

Adds a new island polygon to a multipolygon feature.

Returns
OperationResult a result code: success or reason of failure
Note
available in python bindings as addPartGeometry

Definition at line 683 of file qgsgeometry.cpp.

◆ addRing() [1/2]

QgsGeometry::OperationResult QgsGeometry::addRing ( const QVector< QgsPointXY > &  ring)

Adds a new ring to this geometry.

This makes only sense for polygon and multipolygons.

Parameters
ringThe ring to be added
Returns
OperationResult a result code: success or reason of failure

Definition at line 611 of file qgsgeometry.cpp.

◆ addRing() [2/2]

QgsGeometry::OperationResult QgsGeometry::addRing ( QgsCurve ring)

Adds a new ring to this geometry.

This makes only sense for polygon and multipolygons.

Parameters
ringThe ring to be added
Returns
OperationResult a result code: success or reason of failure

Definition at line 617 of file qgsgeometry.cpp.

◆ adjacentVertices()

void QgsGeometry::adjacentVertices ( int  atVertex,
int &  beforeVertex,
int &  afterVertex 
) const

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 389 of file qgsgeometry.cpp.

◆ angleAtVertex()

double QgsGeometry::angleAtVertex ( int  vertex) const

Returns the bisector angle for this geometry at the specified vertex.

Parameters
vertexvertex index to calculate bisector angle at
Returns
bisector angle, in radians clockwise from north
Since
QGIS 3.0
See also
interpolateAngle()

Definition at line 373 of file qgsgeometry.cpp.

◆ area()

double QgsGeometry::area ( ) const

Returns the area of the geometry using GEOS.

Since
QGIS 1.5

Definition at line 1478 of file qgsgeometry.cpp.

◆ asGeometryCollection()

QVector< QgsGeometry > QgsGeometry::asGeometryCollection ( ) const

Return contents of the geometry as a list of geometries.

Since
QGIS 1.1

Definition at line 2083 of file qgsgeometry.cpp.

◆ asJson()

QString QgsGeometry::asJson ( int  precision = 17) const

Exports the geometry to a GeoJSON string.

Definition at line 1203 of file qgsgeometry.cpp.

◆ asMultiPoint()

QgsMultiPointXY QgsGeometry::asMultiPoint ( ) const

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

Definition at line 1367 of file qgsgeometry.cpp.

◆ asMultiPolygon()

QgsMultiPolygonXY QgsGeometry::asMultiPolygon ( ) const

Returns contents of the geometry as a multi polygon if wkbType is WKBMultiPolygon, otherwise an empty list.

Definition at line 1435 of file qgsgeometry.cpp.

◆ asMultiPolyline()

QgsMultiPolylineXY QgsGeometry::asMultiPolyline ( ) const

Returns contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list.

Definition at line 1391 of file qgsgeometry.cpp.

◆ asPoint()

QgsPointXY QgsGeometry::asPoint ( ) const

Returns contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0].

Definition at line 1275 of file qgsgeometry.cpp.

◆ asPolygon()

QgsPolygonXY QgsGeometry::asPolygon ( ) const

Returns contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list.

Definition at line 1332 of file qgsgeometry.cpp.

◆ asPolyline()

QgsPolylineXY QgsGeometry::asPolyline ( ) const

Returns contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list.

Definition at line 1290 of file qgsgeometry.cpp.

◆ asQPointF()

QPointF QgsGeometry::asQPointF ( ) const

Returns contents of the geometry as a QPointF if wkbType is WKBPoint, otherwise returns a null QPointF.

Since
QGIS 2.7

Definition at line 2109 of file qgsgeometry.cpp.

◆ asQPolygonF()

QPolygonF QgsGeometry::asQPolygonF ( ) const

Returns contents of the geometry as a QPolygonF.

If geometry is a linestring, then the result will be an open QPolygonF. If the geometry is a polygon, then the result will be a closed QPolygonF of the geometry's exterior ring.

Since
QGIS 2.7

Definition at line 2115 of file qgsgeometry.cpp.

◆ asWkb()

QByteArray QgsGeometry::asWkb ( ) const

Export the geometry to WKB.

Since
QGIS 3.0

Definition at line 2078 of file qgsgeometry.cpp.

◆ asWkt()

QString QgsGeometry::asWkt ( int  precision = 17) const

Exports the geometry to WKT.

Note
precision parameter added in QGIS 2.4
Returns
true in case of success and false else

Definition at line 1194 of file qgsgeometry.cpp.

◆ avoidIntersections()

int QgsGeometry::avoidIntersections ( const QList< QgsVectorLayer *> &  avoidIntersectionsLayers,
const QHash< QgsVectorLayer *, QSet< QgsFeatureId > > &  ignoreFeatures = ( QHash<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
avoidIntersectionsLayerslist of layers to check for intersections
ignoreFeaturespossibility to give a list of features where intersections should be ignored (not available in Python bindings)
Since
QGIS 1.5

Definition at line 2173 of file qgsgeometry.cpp.

◆ boundingBox()

QgsRectangle QgsGeometry::boundingBox ( ) const

Returns the bounding box of the geometry.

See also
orientedMinimumBoundingBox()

Definition at line 906 of file qgsgeometry.cpp.

◆ buffer() [1/2]

QgsGeometry QgsGeometry::buffer ( double  distance,
int  segments 
) const

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 1569 of file qgsgeometry.cpp.

◆ buffer() [2/2]

QgsGeometry QgsGeometry::buffer ( double  distance,
int  segments,
EndCapStyle  endCapStyle,
JoinStyle  joinStyle,
double  miterLimit 
) const

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

Parameters
distancebuffer distance
segmentsfor round joins, number of segments to approximate quarter-circle
endCapStyleend cap style
joinStylejoin style for corners in geometry
miterLimitlimit on the miter ratio used for very sharp corners (JoinStyleMiter only)
Since
QGIS 2.4

Definition at line 1588 of file qgsgeometry.cpp.

◆ centroid()

QgsGeometry QgsGeometry::centroid ( ) const

Returns the center of mass of a geometry.

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Note
for line based geometries, the center point of the line is returned, and for point based geometries, the point itself is returned
See also
pointOnSurface()
poleOfInaccessibility()

Definition at line 1764 of file qgsgeometry.cpp.

◆ clipped()

QgsGeometry QgsGeometry::clipped ( const QgsRectangle rectangle)

Clips the geometry using the specified rectangle.

Performs a fast, non-robust intersection between the geometry and a rectangle. The returned geometry may be invalid.

Since
QGIS 3.0

Definition at line 2326 of file qgsgeometry.cpp.

◆ closestSegmentWithContext()

double QgsGeometry::closestSegmentWithContext ( const QgsPointXY point,
QgsPointXY minDistPoint,
int &  afterVertex,
int *  leftOf = nullptr,
double  epsilon = DEFAULT_SEGMENT_EPSILON 
) const

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 left side of the geometry ( < 0 means left, > 0 means right, 0 indicates that the test was unsuccesful, e.g. for a point exactly on the line)
epsilonepsilon for segment snapping
Returns
The squared Cartesian distance is also returned in sqrDist, negative number on error

Definition at line 587 of file qgsgeometry.cpp.

◆ closestVertex()

QgsPointXY QgsGeometry::closestVertex ( const QgsPointXY point,
int &  atVertex,
int &  beforeVertex,
int &  afterVertex,
double &  sqrDist 
) const

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 and after the closest vertex.

Parameters
pointpoint to search for
atVertexwill be set to the vertex index of the closest found vertex
beforeVertexwill be set to the vertex index of the previous vertex from the closest one. Will be set to -1 if not present.
afterVertexwill be set to the vertex index of the next vertex after the closest one. Will be set to -1 if not present.
sqrDistwill be set to the square distance between the closest vertex and the specified point
Returns
closest point in geometry. If not found (empty geometry), returns null point nad sqrDist is negative.

Definition at line 329 of file qgsgeometry.cpp.

◆ closestVertexWithContext()

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

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 571 of file qgsgeometry.cpp.

◆ collectGeometry()

QgsGeometry QgsGeometry::collectGeometry ( const QVector< QgsGeometry > &  geometries)
static

Creates a new multipart geometry from a list of QgsGeometry objects.

Definition at line 239 of file qgsgeometry.cpp.

◆ combine()

QgsGeometry QgsGeometry::combine ( const QgsGeometry geometry) const

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

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

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

Definition at line 1992 of file qgsgeometry.cpp.

◆ compare() [1/3]

bool QgsGeometry::compare ( const QgsPolylineXY p1,
const QgsPolylineXY p2,
double  epsilon = 4 * std::numeric_limits<double>::epsilon() 
)
static

Compares two polylines for equality within a specified tolerance.

Parameters
p1first polyline
p2second polyline
epsilonmaximum difference for coordinates between the polylines
Returns
true if polylines have the same number of points and all points are equal within the specified tolerance
Since
QGIS 2.9

Definition at line 2571 of file qgsgeometry.cpp.

◆ compare() [2/3]

bool QgsGeometry::compare ( const QgsPolygonXY p1,
const QgsPolygonXY p2,
double  epsilon = 4 * std::numeric_limits<double>::epsilon() 
)
static

Compares two polygons for equality within a specified tolerance.

Parameters
p1first polygon
p2second polygon
epsilonmaximum difference for coordinates between the polygons
Returns
true if polygons have the same number of rings, and each ring has the same number of points and all points are equal within the specified tolerance
Since
QGIS 2.9

Definition at line 2584 of file qgsgeometry.cpp.

◆ compare() [3/3]

bool QgsGeometry::compare ( const QgsMultiPolygonXY p1,
const QgsMultiPolygonXY p2,
double  epsilon = 4 * std::numeric_limits<double>::epsilon() 
)
static

Compares two multipolygons for equality within a specified tolerance.

Parameters
p1first multipolygon
p2second multipolygon
epsilonmaximum difference for coordinates between the multipolygons
Returns
true if multipolygons have the same number of polygons, the polygons have the same number of rings, and each ring has the same number of points and all points are equal within the specified tolerance
Since
QGIS 2.9

Definition at line 2598 of file qgsgeometry.cpp.

◆ constGet()

const QgsAbstractGeometry * QgsGeometry::constGet ( ) const

Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.

This is much faster then calling the non-const get() method.

Note
In QGIS 2.x this method was named geometry().
Since
QGIS 3.0
See also
primitive()
set()

Definition at line 123 of file qgsgeometry.cpp.

◆ contains() [1/2]

bool QgsGeometry::contains ( const QgsPointXY p) const

Tests for containment of a point (uses GEOS)

Definition at line 1097 of file qgsgeometry.cpp.

◆ contains() [2/2]

bool QgsGeometry::contains ( const QgsGeometry geometry) const

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

Since
QGIS 1.5

Definition at line 1110 of file qgsgeometry.cpp.

◆ convertPointList() [1/2]

void QgsGeometry::convertPointList ( const QVector< QgsPointXY > &  input,
QgsPointSequence output 
)
static

Upgrades a point list from QgsPointXY to QgsPoint.

Parameters
inputlist of QgsPointXY objects to be upgraded
outputdestination for list of points converted to QgsPoint

Definition at line 2480 of file qgsgeometry.cpp.

◆ convertPointList() [2/2]

void QgsGeometry::convertPointList ( const QgsPointSequence input,
QVector< QgsPointXY > &  output 
)
static

Downgrades a point list from QgsPoint to QgsPointXY.

Parameters
inputlist of QgsPoint objects to be downgraded
outputdestination for list of points converted to QgsPointXY

Definition at line 2489 of file qgsgeometry.cpp.

◆ convertToMultiType()

bool QgsGeometry::convertToMultiType ( )

Converts single type geometry into multitype geometry e.g.

a polygon into a multipolygon geometry with one polygon If it is already a multipart geometry, it will return true and not change the geometry.

Returns
true in case of success and false else

Definition at line 1230 of file qgsgeometry.cpp.

◆ convertToSingleType()

bool QgsGeometry::convertToSingleType ( )

Converts multi type geometry into single type geometry e.g.

a multipolygon into a polygon geometry. Only the first part of the multi geometry will be retained. If it is already a single part geometry, it will return true and not change the geometry.

Returns
true in case of success and false else

Definition at line 1254 of file qgsgeometry.cpp.

◆ convertToStraightSegment()

void QgsGeometry::convertToStraightSegment ( )

Converts the geometry to straight line segments, if it is a curved geometry type.

Since
QGIS 2.10
See also
requiresConversionToStraightSegments

Definition at line 2272 of file qgsgeometry.cpp.

◆ convertToType()

QgsGeometry QgsGeometry::convertToType ( QgsWkbTypes::GeometryType  destType,
bool  destMultipart = false 
) const

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 nullptr if the conversion fails.
Since
QGIS 2.2

Definition at line 1212 of file qgsgeometry.cpp.

◆ convexHull()

QgsGeometry QgsGeometry::convexHull ( ) const

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

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Definition at line 1801 of file qgsgeometry.cpp.

◆ createGeometryEngine()

QgsGeometryEngine * QgsGeometry::createGeometryEngine ( const QgsAbstractGeometry geometry)
static

Creates and returns a new geometry engine.

Definition at line 3102 of file qgsgeometry.cpp.

◆ createPolygonFromQPolygonF()

QgsPolygonXY QgsGeometry::createPolygonFromQPolygonF ( const QPolygonF &  polygon)
static

Creates a QgsPolygonXYfrom a QPolygonF.

Parameters
polygonsource polygon
Returns
QgsPolygon
See also
createPolylineFromQPolygonF

Definition at line 2554 of file qgsgeometry.cpp.

◆ createPolylineFromQPolygonF()

QgsPolylineXY QgsGeometry::createPolylineFromQPolygonF ( const QPolygonF &  polygon)
static

Creates a QgsPolylineXY from a QPolygonF.

Parameters
polygonsource polygon
Returns
QgsPolylineXY
See also
createPolygonFromQPolygonF

Definition at line 2561 of file qgsgeometry.cpp.

◆ crosses()

bool QgsGeometry::crosses ( const QgsGeometry geometry) const

Test for if geometry crosses another (uses GEOS)

Since
QGIS 1.5

Definition at line 1182 of file qgsgeometry.cpp.

◆ delaunayTriangulation()

QgsGeometry QgsGeometry::delaunayTriangulation ( double  tolerance = 0.0,
bool  edgesOnly = false 
) const

Returns the Delaunay triangulation for the vertices of the geometry.

The tolerance parameter specifies an optional snapping tolerance which can be used to improve the robustness of the triangulation. If edgesOnly is true than line string boundary geometries will be returned instead of polygons. An empty geometry will be returned if the diagram could not be calculated.

Since
QGIS 3.0

Definition at line 1833 of file qgsgeometry.cpp.

◆ deletePart()

bool QgsGeometry::deletePart ( int  partNum)

Deletes part identified by the part number.

Returns
true on success
Since
QGIS 1.2

Definition at line 2155 of file qgsgeometry.cpp.

◆ deleteRing()

bool QgsGeometry::deleteRing ( int  ringNum,
int  partNum = 0 
)

Deletes a ring in polygon or multipolygon.

Ring 0 is outer ring and can't be deleted.

Returns
true on success
Since
QGIS 1.2

Definition at line 2143 of file qgsgeometry.cpp.

◆ deleteVertex()

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 vertices 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 446 of file qgsgeometry.cpp.

◆ densifyByCount()

QgsGeometry QgsGeometry::densifyByCount ( int  extraNodesPerSegment) const

Returns a copy of the geometry which has been densified by adding the specified number of extra nodes within each segment of the geometry.

If the geometry has z or m values present then these will be linearly interpolated at the added nodes. Curved geometry types are automatically segmentized by this routine.

Since
QGIS 3.0
See also
densifyByDistance()

Definition at line 1750 of file qgsgeometry.cpp.

◆ densifyByDistance()

QgsGeometry QgsGeometry::densifyByDistance ( double  distance) const

Densifies the geometry by adding regularly placed extra nodes inside each segment so that the maximum distance between any two nodes does not exceed the specified distance.

E.g. specifying a distance 3 would cause the segment [0 0] -> [10 0] to be converted to [0 0] -> [2.5 0] -> [5 0] -> [7.5 0] -> [10 0], since 3 extra nodes are required on the segment and spacing these at 2.5 increments allows them to be evenly spaced over the segment. If the geometry has z or m values present then these will be linearly interpolated at the added nodes. Curved geometry types are automatically segmentized by this routine.

Since
QGIS 3.0
See also
densifyByCount()

Definition at line 1757 of file qgsgeometry.cpp.

◆ difference()

QgsGeometry QgsGeometry::difference ( const QgsGeometry geometry) const

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

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Definition at line 2031 of file qgsgeometry.cpp.

◆ disjoint()

bool QgsGeometry::disjoint ( const QgsGeometry geometry) const

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

Since
QGIS 1.5

Definition at line 1122 of file qgsgeometry.cpp.

◆ distance()

double QgsGeometry::distance ( const QgsGeometry geom) const

Returns the minimum distance between this geometry and another geometry, using GEOS.

Will return a negative value if a geometry is missing.

Parameters
geomgeometry to find minimum distance to

Definition at line 1512 of file qgsgeometry.cpp.

◆ distanceToVertex()

double QgsGeometry::distanceToVertex ( int  vertex) const

Returns the distance along this geometry from its first vertex to the specified vertex.

Parameters
vertexvertex index to calculate distance to
Returns
distance to vertex (following geometry), or -1 for invalid vertex numbers
Since
QGIS 2.16

Definition at line 357 of file qgsgeometry.cpp.

◆ draw()

void QgsGeometry::draw ( QPainter &  p) const

Draws the geometry onto a QPainter.

Parameters
pdestination QPainter
Since
QGIS 2.10

Definition at line 2345 of file qgsgeometry.cpp.

◆ equals()

bool QgsGeometry::equals ( const QgsGeometry geometry) const

Test for if geometry equals another (uses GEOS)

Since
QGIS 1.5

Definition at line 1134 of file qgsgeometry.cpp.

◆ exportToGeos()

GEOSGeometry * QgsGeometry::exportToGeos ( double  precision = 0) const

Returns a geos geometry - caller takes ownership of the object (should be deleted with GEOSGeom_destroy_r)

Parameters
precisionThe precision of the grid to which to snap the geometry vertices. If 0, no snapping is performed.
Since
QGIS 3.0
Note
not available in Python bindings

Definition at line 271 of file qgsgeometry.cpp.

◆ extendLine()

QgsGeometry QgsGeometry::extendLine ( double  startDistance,
double  endDistance 
) const

Extends a (multi)line geometry by extrapolating out the start or end of the line by a specified distance.

Lines are extended using the bearing of the first or last segment in the line.

Since
QGIS 3.0

Definition at line 1692 of file qgsgeometry.cpp.

◆ extrude()

QgsGeometry QgsGeometry::extrude ( double  x,
double  y 
)

Returns an extruded version of this geometry.

Definition at line 2071 of file qgsgeometry.cpp.

◆ fromGeos()

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 323 of file qgsgeometry.cpp.

◆ fromMultiPointXY()

QgsGeometry QgsGeometry::fromMultiPointXY ( const QgsMultiPointXY multipoint)
static

Creates a new geometry from a QgsMultiPointXY object.

Definition at line 194 of file qgsgeometry.cpp.

◆ fromMultiPolygonXY()

QgsGeometry QgsGeometry::fromMultiPolygonXY ( const QgsMultiPolygonXY multipoly)
static

Creates a new geometry from a QgsMultiPolygon.

Definition at line 214 of file qgsgeometry.cpp.

◆ fromMultiPolylineXY()

QgsGeometry QgsGeometry::fromMultiPolylineXY ( const QgsMultiPolylineXY multiline)
static

Creates a new geometry from a QgsMultiPolylineXY object.

Definition at line 204 of file qgsgeometry.cpp.

◆ fromPointXY()

QgsGeometry QgsGeometry::fromPointXY ( const QgsPointXY point)
static

Creates a new geometry from a QgsPointXY object.

Definition at line 159 of file qgsgeometry.cpp.

◆ fromPolygonXY()

QgsGeometry QgsGeometry::fromPolygonXY ( const QgsPolygonXY polygon)
static

Creates a new geometry from a QgsPolygon.

Definition at line 184 of file qgsgeometry.cpp.

◆ fromPolyline()

QgsGeometry QgsGeometry::fromPolyline ( const QgsPolyline polyline)
static

Creates a new LineString geometry from a list of QgsPoint points.

This method will respect any Z or M dimensions present in the input points. E.g. if input points are PointZ type, the resultant linestring will be a LineStringZ type.

Since
QGIS 3.0

Definition at line 179 of file qgsgeometry.cpp.

◆ fromPolylineXY()

QgsGeometry QgsGeometry::fromPolylineXY ( const QgsPolylineXY polyline)
static

Creates a new LineString geometry from a list of QgsPointXY points.

Using fromPolyline() is preferred, as fromPolyline() is more efficient and will respect any Z or M dimensions present in the input points.

Note
In QGIS 2.x this method was available as fromPolyline().
Since
QGIS 3.0
See also
fromPolyline()

Definition at line 169 of file qgsgeometry.cpp.

◆ fromQPointF()

QgsGeometry QgsGeometry::fromQPointF ( QPointF  point)
static

Construct geometry from a QPointF.

Parameters
pointsource QPointF
Since
QGIS 2.7

Definition at line 2537 of file qgsgeometry.cpp.

◆ fromQPolygonF()

QgsGeometry QgsGeometry::fromQPolygonF ( const QPolygonF &  polygon)
static

Construct geometry from a QPolygonF.

If the polygon is closed than the resultant geometry will be a polygon, if it is open than the geometry will be a polyline.

Parameters
polygonsource QPolygonF
Since
QGIS 2.7

Definition at line 2542 of file qgsgeometry.cpp.

◆ fromRect()

QgsGeometry QgsGeometry::fromRect ( const QgsRectangle rect)
static

Creates a new geometry from a QgsRectangle.

Definition at line 224 of file qgsgeometry.cpp.

◆ fromWkb() [1/2]

void QgsGeometry::fromWkb ( unsigned char *  wkb,
int  length 
)

Set the geometry, feeding in the buffer containing OGC Well-Known Binary and the buffer's length.

This class will take ownership of the buffer.

Note
not available in Python bindings

Definition at line 258 of file qgsgeometry.cpp.

◆ fromWkb() [2/2]

void QgsGeometry::fromWkb ( const QByteArray &  wkb)

Set the geometry, feeding in the buffer containing OGC Well-Known Binary.

Since
QGIS 3.0

Definition at line 265 of file qgsgeometry.cpp.

◆ fromWkt()

QgsGeometry QgsGeometry::fromWkt ( const QString &  wkt)
static

Creates a new geometry from a WKT string.

Definition at line 149 of file qgsgeometry.cpp.

◆ get()

QgsAbstractGeometry * QgsGeometry::get ( )

Returns a modifiable (non-const) reference to the underlying abstract geometry primitive.

This method can be slow to call, as it may trigger a detachment of the geometry and a deep copy. Where possible, use constGet() instead.

Note
In QGIS 2.x this method was named geometry().
Since
QGIS 3.0
See also
constGet()
set()

Definition at line 128 of file qgsgeometry.cpp.

◆ getGEOSHandler()

GEOSContextHandle_t QgsGeometry::getGEOSHandler ( )
static

Return GEOS context handle.

Since
QGIS 2.6
Note
not available in Python

Definition at line 2532 of file qgsgeometry.cpp.

◆ hausdorffDistance()

double QgsGeometry::hausdorffDistance ( const QgsGeometry geom) const

Returns the Hausdorff distance between this geometry and geom.

This is basically a measure of how similar or dissimilar 2 geometries are.

This algorithm is an approximation to the standard Hausdorff distance. This approximation is exact or close enough for a large subset of useful cases. Examples of these are:

  • computing distance between Linestrings that are roughly parallel to each other, and roughly equal in length. This occurs in matching linear networks.
  • Testing similarity of geometries.

If the default approximate provided by this method is insufficient, use hausdorffDistanceDensify() instead.

In case of error -1 will be returned.

Since
QGIS 3.0
See also
hausdorffDistanceDensify()

Definition at line 1524 of file qgsgeometry.cpp.

◆ hausdorffDistanceDensify()

double QgsGeometry::hausdorffDistanceDensify ( const QgsGeometry geom,
double  densifyFraction 
) const

Returns the Hausdorff distance between this geometry and geom.

This is basically a measure of how similar or dissimilar 2 geometries are.

This function accepts a densifyFraction argument. The function performs a segment densification before computing the discrete Hausdorff distance. The densifyFraction parameter sets the fraction by which to densify each segment. Each segment will be split into a number of equal-length subsegments, whose fraction of the total length is closest to the given fraction.

This method can be used when the default approximation provided by hausdorffDistance() is not sufficient. Decreasing the densifyFraction parameter will make the distance returned approach the true Hausdorff distance for the geometries.

In case of error -1 will be returned.

Since
QGIS 3.0
See also
hausdorffDistance()

Definition at line 1536 of file qgsgeometry.cpp.

◆ insertVertex() [1/2]

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 479 of file qgsgeometry.cpp.

◆ insertVertex() [2/2]

bool QgsGeometry::insertVertex ( const QgsPoint point,
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 505 of file qgsgeometry.cpp.

◆ interpolate()

QgsGeometry QgsGeometry::interpolate ( double  distance) const

Returns interpolated point on line at distance.

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Since
QGIS 2.0
See also
lineLocatePoint()

Definition at line 1874 of file qgsgeometry.cpp.

◆ interpolateAngle()

double QgsGeometry::interpolateAngle ( double  distance) const

Returns the angle parallel to the linestring or polygon boundary at the specified distance along the geometry.

Angles are in radians, clockwise from north. If the distance coincides precisely at a node then the average angle from the segment either side of the node is returned.

Parameters
distancedistance along geometry
Since
QGIS 3.0
See also
angleAtVertex()

Definition at line 1916 of file qgsgeometry.cpp.

◆ intersection()

QgsGeometry QgsGeometry::intersection ( const QgsGeometry geometry) const

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

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Definition at line 1970 of file qgsgeometry.cpp.

◆ intersects() [1/2]

bool QgsGeometry::intersects ( const QgsRectangle r) const

Tests for intersection with a rectangle (uses GEOS)

Definition at line 1079 of file qgsgeometry.cpp.

◆ intersects() [2/2]

bool QgsGeometry::intersects ( const QgsGeometry geometry) const

Tests for intersection with a geometry (uses GEOS)

Definition at line 1085 of file qgsgeometry.cpp.

◆ isEmpty()

bool QgsGeometry::isEmpty ( ) const

Returns true if the geometry is empty (eg a linestring with no vertices, or a collection with no geometries).

A null geometry will always return true for isEmpty().

See also
isNull()

Definition at line 304 of file qgsgeometry.cpp.

◆ isGeosEqual()

bool QgsGeometry::isGeosEqual ( const QgsGeometry g) const

Compares the geometry with another geometry using GEOS.

Since
QGIS 1.5

Definition at line 2230 of file qgsgeometry.cpp.

◆ isGeosValid()

bool QgsGeometry::isGeosValid ( ) const

Checks validity of the geometry using GEOS.

Since
QGIS 1.5

Definition at line 2208 of file qgsgeometry.cpp.

◆ isMultipart()

bool QgsGeometry::isMultipart ( ) const

Returns true if WKB of the geometry is of WKBMulti* type.

Definition at line 314 of file qgsgeometry.cpp.

◆ isNull()

bool QgsGeometry::isNull ( ) const

Returns true if the geometry is null (ie, contains no underlying geometry accessible via geometry() ).

See also
geometry
Since
QGIS 2.10
See also
isEmpty()

Definition at line 144 of file qgsgeometry.cpp.

◆ isSimple()

bool QgsGeometry::isSimple ( ) const

Determines whether the geometry is simple (according to OGC definition), i.e.

it has no anomalous geometric points, such as self-intersection or self-tangency. Uses GEOS library for the test.

Note
This is useful mainly for linestrings and linear rings. Polygons are simple by definition, for checking anomalies in polygon geometries one can use isGeosValid().
Since
QGIS 3.0

Definition at line 2220 of file qgsgeometry.cpp.

◆ lastError()

QString QgsGeometry::lastError ( ) const

Returns an error string referring to the last error encountered either when this geometry was created or when an operation was performed on the geometry.

Since
QGIS 3.0

Definition at line 2475 of file qgsgeometry.cpp.

◆ length()

double QgsGeometry::length ( ) const

Returns the length of geometry using GEOS.

Since
QGIS 1.5

Definition at line 1501 of file qgsgeometry.cpp.

◆ lineLocatePoint()

double QgsGeometry::lineLocatePoint ( const QgsGeometry point) const

Returns a distance representing the location along this linestring of the closest point on this linestring geometry to the specified point.

Ie, the returned value indicates how far along this linestring you need to traverse to get to the closest location where this linestring comes to the specified point.

Parameters
pointpoint to seek proximity to
Returns
distance along line, or -1 on error
Note
only valid for linestring geometries
See also
interpolate()
Since
QGIS 3.0

Definition at line 1897 of file qgsgeometry.cpp.

◆ makeDifference()

QgsGeometry QgsGeometry::makeDifference ( const QgsGeometry other) const

Returns the geometry formed by modifying this geometry such that it does not intersect the other geometry.

Parameters
othergeometry that should not be intersect
Returns
difference geometry, or empty geometry if difference could not be calculated
Since
QGIS 3.0

Definition at line 885 of file qgsgeometry.cpp.

◆ makeDifferenceInPlace()

int QgsGeometry::makeDifferenceInPlace ( const QgsGeometry other)

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

Parameters
othergeometry that should not be intersect
Note
Not available in Python

Definition at line 865 of file qgsgeometry.cpp.

◆ makeValid()

QgsGeometry QgsGeometry::makeValid ( ) const

Attempts to make an invalid geometry valid without losing vertices.

Already-valid geometries are returned without further intervention. In case of full or partial dimensional collapses, the output geometry may be a collection of lower-to-equal dimension geometries or a geometry of lower dimension. Single polygons may become multi-geometries in case of self-intersections. It preserves Z values, but M values will be dropped.

If an error was encountered during the process, more information can be retrieved by calling error() on the returned geometry.

Returns
new valid QgsGeometry or null geometry on error
Note
Ported from PostGIS ST_MakeValid() and it should return equivalent results.
Since
QGIS 3.0

Definition at line 2189 of file qgsgeometry.cpp.

◆ mapToPixel()

void QgsGeometry::mapToPixel ( const QgsMapToPixel mtp)

Transforms the geometry from map units to pixels in place.

Parameters
mtpmap to pixel transform
Since
QGIS 2.10

Definition at line 2317 of file qgsgeometry.cpp.

◆ mergeLines()

QgsGeometry QgsGeometry::mergeLines ( ) const

Merges any connected lines in a LineString/MultiLineString geometry and converts them to single line strings.

Returns
a LineString or MultiLineString geometry, with any connected lines joined. An empty geometry will be returned if the input geometry was not a MultiLineString geometry.
Since
QGIS 3.0

Definition at line 2011 of file qgsgeometry.cpp.

◆ minimalEnclosingCircle() [1/2]

QgsGeometry QgsGeometry::minimalEnclosingCircle ( QgsPointXY center,
double &  radius,
unsigned int  segments = 36 
) const

Returns the minimal enclosing circle for the geometry.

Parameters
centerCenter of the minimal enclosing circle returneds
radiusRadius of the minimal enclosing circle returned
segmentsNumber of segments used to segment geometry.
See also
QgsEllipse::toPolygon()
Since
QGIS 3.0

Definition at line 1028 of file qgsgeometry.cpp.

◆ minimalEnclosingCircle() [2/2]

QgsGeometry QgsGeometry::minimalEnclosingCircle ( unsigned int  segments = 36) const

Returns the minimal enclosing circle for the geometry.

Parameters
segmentsNumber of segments used to segment geometry.
See also
QgsEllipse::toPolygon()
Since
QGIS 3.0

Definition at line 1055 of file qgsgeometry.cpp.

◆ moveVertex() [1/2]

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 410 of file qgsgeometry.cpp.

◆ moveVertex() [2/2]

bool QgsGeometry::moveVertex ( const QgsPoint p,
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 428 of file qgsgeometry.cpp.

◆ nearestPoint()

QgsGeometry QgsGeometry::nearestPoint ( const QgsGeometry other) const

Returns the nearest point on this geometry to another geometry.

Since
QGIS 2.14
See also
shortestLine()

Definition at line 553 of file qgsgeometry.cpp.

◆ offsetCurve()

QgsGeometry QgsGeometry::offsetCurve ( double  distance,
int  segments,
JoinStyle  joinStyle,
double  miterLimit 
) const

Returns an offset line at a given distance and side from an input line.

Parameters
distancebuffer distance
segmentsfor round joins, number of segments to approximate quarter-circle
joinStylejoin style for corners in geometry
miterLimitlimit on the miter ratio used for very sharp corners (JoinStyleMiter only)
Since
QGIS 2.4

Definition at line 1607 of file qgsgeometry.cpp.

◆ operator bool()

QgsGeometry::operator bool ( ) const

Returns true if the geometry is non empty (ie, isNull() returns false), or false if it is an empty, uninitialized geometry (ie, isNull() returns true).

Since
QGIS 3.0

Definition at line 2498 of file qgsgeometry.cpp.

◆ operator QVariant()

QgsGeometry::operator QVariant ( ) const
inline

Allows direct construction of QVariants from geometry.

Definition at line 1622 of file qgsgeometry.h.

◆ operator=()

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

Creates a deep copy of the object.

Note
not available in Python bindings

Definition at line 88 of file qgsgeometry.cpp.

◆ orientedMinimumBoundingBox() [1/2]

QgsGeometry QgsGeometry::orientedMinimumBoundingBox ( double &  area,
double &  angle,
double &  width,
double &  height 
) const

Returns the oriented minimum bounding box for the geometry, which is the smallest (by area) rotated rectangle which fully encompasses the geometry.

The area, angle (clockwise in degrees from North), width and height of the rotated bounding box will also be returned.

Since
QGIS 3.0
See also
boundingBox()

Definition at line 915 of file qgsgeometry.cpp.

◆ orientedMinimumBoundingBox() [2/2]

QgsGeometry QgsGeometry::orientedMinimumBoundingBox ( ) const

Returns the oriented minimum bounding box for the geometry, which is the smallest (by area) rotated rectangle which fully encompasses the geometry.

Since
QGIS 3.0

Definition at line 974 of file qgsgeometry.cpp.

◆ orthogonalize()

QgsGeometry QgsGeometry::orthogonalize ( double  tolerance = 1.0E-8,
int  maxIterations = 1000,
double  angleThreshold = 15.0 
) const

Attempts to orthogonalize a line or polygon geometry by shifting vertices to make the geometries angles either right angles or flat lines.

This is an iterative algorithm which will loop until either the vertices are within a specified tolerance of right angles or a set number of maximum iterations is reached. The angle threshold parameter specifies how close to a right angle or straight line an angle must be before it is attempted to be straightened.

Since
QGIS 3.0

Definition at line 1063 of file qgsgeometry.cpp.

◆ overlaps()

bool QgsGeometry::overlaps ( const QgsGeometry geometry) const

Test for if geometry overlaps another (uses GEOS)

Since
QGIS 1.5

Definition at line 1158 of file qgsgeometry.cpp.

◆ pointOnSurface()

QgsGeometry QgsGeometry::pointOnSurface ( ) const

Returns a point guaranteed to lie on the surface of a geometry.

While the centroid() of a geometry may be located outside of the geometry itself (e.g., for concave shapes), the point on surface will always be inside the geometry.

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

See also
centroid()
poleOfInaccessibility()

Definition at line 1779 of file qgsgeometry.cpp.

◆ poleOfInaccessibility()

QgsGeometry QgsGeometry::poleOfInaccessibility ( double  precision,
double *  distanceToBoundary = nullptr 
) const

Calculates the approximate pole of inaccessibility for a surface, which is the most distant internal point from the boundary of the surface.

This function uses the 'polylabel' algorithm (Vladimir Agafonkin, 2016), which is an iterative approach guaranteed to find the true pole of inaccessibility within a specified tolerance. More precise tolerances require more iterations and will take longer to calculate. Optionally, the distance to the polygon boundary from the pole can be stored.

See also
centroid()
pointOnSurface()
Since
QGIS 3.0

Definition at line 1794 of file qgsgeometry.cpp.

◆ polygonize()

QgsGeometry QgsGeometry::polygonize ( const QVector< QgsGeometry > &  geometries)
static

Creates a GeometryCollection geometry containing possible polygons formed from the constituent linework of a set of geometries.

The input geometries must be fully noded (i.e. nodes exist at every common intersection of the geometries). The easiest way to ensure this is to first call unaryUnion() on the set of input geometries and then pass the result to polygonize(). An empty geometry will be returned in the case of errors.

Since
QGIS 3.0

Definition at line 2253 of file qgsgeometry.cpp.

◆ removeInteriorRings()

QgsGeometry QgsGeometry::removeInteriorRings ( double  minimumAllowedArea = -1) const

Removes the interior rings from a (multi)polygon geometry.

If the minimumAllowedArea parameter is specified then only rings smaller than this minimum area will be removed.

Since
QGIS 3.0

Definition at line 697 of file qgsgeometry.cpp.

◆ requiresConversionToStraightSegments()

bool QgsGeometry::requiresConversionToStraightSegments ( ) const

Returns true if the geometry is a curved geometry type which requires conversion to display as straight line segments.

Since
QGIS 2.10
See also
convertToStraightSegment

Definition at line 2283 of file qgsgeometry.cpp.

◆ reshapeGeometry()

QgsGeometry::OperationResult QgsGeometry::reshapeGeometry ( const QgsLineString reshapeLineString)

Replaces a part of this geometry with another line.

Returns
OperationResult a result code: success or reason of failure

Definition at line 826 of file qgsgeometry.cpp.

◆ rotate()

QgsGeometry::OperationResult QgsGeometry::rotate ( double  rotation,
const QgsPointXY center 
)

Rotate this geometry around the Z axis.

Parameters
rotationclockwise rotation in degrees
centerrotation center
Returns
OperationResult a result code: success or reason of failure

Definition at line 762 of file qgsgeometry.cpp.

◆ set()

void QgsGeometry::set ( QgsAbstractGeometry geometry)

Sets the underlying geometry store.

Ownership of geometry is transferred.

Note
In QGIS 2.x this method was named setGeometry().
Since
QGIS 3.0
See also
get()
constGet()

Definition at line 134 of file qgsgeometry.cpp.

◆ shortestLine()

QgsGeometry QgsGeometry::shortestLine ( const QgsGeometry other) const

Returns the shortest line joining this geometry to another geometry.

Since
QGIS 2.14
See also
nearestPoint()

Definition at line 562 of file qgsgeometry.cpp.

◆ simplify()

QgsGeometry QgsGeometry::simplify ( double  tolerance) const

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

Definition at line 1731 of file qgsgeometry.cpp.

◆ singleSidedBuffer()

QgsGeometry QgsGeometry::singleSidedBuffer ( double  distance,
int  segments,
BufferSide  side,
JoinStyle  joinStyle = JoinStyleRound,
double  miterLimit = 2.0 
) const

Returns a single sided buffer for a (multi)line geometry.

The buffer is only applied to one side of the line.

Parameters
distancebuffer distance
segmentsfor round joins, number of segments to approximate quarter-circle
sideside of geometry to buffer
joinStylejoin style for corners
miterLimitlimit on the miter ratio used for very sharp corners
Returns
buffered geometry, or an empty geometry if buffer could not be calculated
Since
QGIS 3.0

Definition at line 1649 of file qgsgeometry.cpp.

◆ smooth()

QgsGeometry QgsGeometry::smooth ( const unsigned int  iterations = 1,
const double  offset = 0.25,
double  minimumDistance = -1.0,
double  maxAngle = 180.0 
) const

Smooths a geometry by rounding off corners using the Chaikin algorithm.

This operation roughly doubles the number of vertices in a geometry.

Parameters
iterationsnumber of smoothing iterations to run. More iterations results in a smoother geometry
offsetfraction of line to create new vertices along, between 0 and 1.0, e.g., the default value of 0.25 will create new vertices 25% and 75% along each line segment of the geometry for each iteration. Smaller values result in "tighter" smoothing.
minimumDistanceminimum segment length to apply smoothing to
maxAnglemaximum angle at node (0-180) at which smoothing will be applied
Since
QGIS 2.9

Definition at line 2611 of file qgsgeometry.cpp.

◆ snappedToGrid()

QgsGeometry QgsGeometry::snappedToGrid ( double  hSpacing,
double  vSpacing,
double  dSpacing = 0,
double  mSpacing = 0 
) const

Returns a new geometry with all points or vertices snapped to the closest point of the grid.

If the gridified geometry could not be calculated (or was totally collapsed) an empty geometry will be returned. Note that snapping to grid may generate an invalid geometry in some corner cases. It can also be thought as rounding the edges and it may be useful for removing errors.

Parameters
hSpacingHorizontal spacing of the grid (x axis). 0 to disable.
vSpacingVertical spacing of the grid (y axis). 0 to disable.
dSpacingDepth spacing of the grid (z axis). 0 (default) to disable.
mSpacingCustom dimension spacing of the grid (m axis). 0 (default) to disable.
Since
3.0

Definition at line 1070 of file qgsgeometry.cpp.

◆ splitGeometry()

QgsGeometry::OperationResult QgsGeometry::splitGeometry ( const QVector< QgsPointXY > &  splitLine,
QVector< QgsGeometry > &  newGeometries,
bool  topological,
QVector< QgsPointXY > &  topologyTestPoints 
)

Splits this geometry according to a given line.

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
OperationResult a result code: success or reason of failure

Definition at line 778 of file qgsgeometry.cpp.

◆ sqrDistToVertexAt()

double QgsGeometry::sqrDistToVertexAt ( QgsPointXY &point  SIP_IN,
int  atVertex 
) const

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 547 of file qgsgeometry.cpp.

◆ subdivide()

QgsGeometry QgsGeometry::subdivide ( int  maxNodes = 256) const

Subdivides the geometry.

The returned geometry will be a collection containing subdivided parts from the original geometry, where no part has more then the specified maximum number of nodes (maxNodes).

This is useful for dividing a complex geometry into less complex parts, which are better able to be spatially indexed and faster to perform further operations such as intersects on. The returned geometry parts may not be valid and may contain self-intersections.

The minimum allowed value for maxNodes is 8.

Curved geometries will be segmentized before subdivision.

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Since
QGIS 3.0

Definition at line 1847 of file qgsgeometry.cpp.

◆ symDifference()

QgsGeometry QgsGeometry::symDifference ( const QgsGeometry geometry) const

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

If the input is a NULL geometry, the output will also be a NULL geometry.

If an error was encountered while creating the result, more information can be retrieved by calling error() on the returned geometry.

Definition at line 2051 of file qgsgeometry.cpp.

◆ touches()

bool QgsGeometry::touches ( const QgsGeometry geometry) const

Test for if geometry touch another (uses GEOS)

Since
QGIS 1.5

Definition at line 1146 of file qgsgeometry.cpp.

◆ transform() [1/2]

QgsGeometry::OperationResult QgsGeometry::transform ( const QgsCoordinateTransform ct)

Transforms this geometry as described by CoordinateTransform ct.

Returns
OperationResult a result code: success or reason of failure

Definition at line 2293 of file qgsgeometry.cpp.

◆ transform() [2/2]

QgsGeometry::OperationResult QgsGeometry::transform ( const QTransform &  t,
double  zTranslate = 0.0,
double  zScale = 1.0,
double  mTranslate = 0.0,
double  mScale = 1.0 
)

Transforms the x and y components of the geometry using a QTransform object t.

Optionally, the geometry's z values can be scaled via zScale and translated via zTranslate. Similarly, m-values can be scaled via mScale and translated via mTranslate.

Returns
OperationResult a result code: success or reason of failure

Definition at line 2305 of file qgsgeometry.cpp.

◆ translate()

QgsGeometry::OperationResult QgsGeometry::translate ( double  dx,
double  dy,
double  dz = 0.0,
double  dm = 0.0 
)

Translates this geometry by dx, dy, dz and dm.

Returns
OperationResult a result code: success or reason of failure

Definition at line 749 of file qgsgeometry.cpp.

◆ type()

QgsWkbTypes::GeometryType QgsGeometry::type ( ) const

Returns type of the geometry as a QgsWkbTypes::GeometryType.

See also
wkbType

Definition at line 295 of file qgsgeometry.cpp.

◆ unaryUnion()

QgsGeometry QgsGeometry::unaryUnion ( const QVector< QgsGeometry > &  geometries)
static

Compute the unary union on a list of geometries.

May be faster than an iterative union on a set of geometries. The returned geometry will be fully noded, i.e. a node will be created at every common intersection of the input geometries. An empty geometry will be returned in the case of errors.

Definition at line 2242 of file qgsgeometry.cpp.

◆ validateGeometry()

void QgsGeometry::validateGeometry ( QVector< QgsGeometry::Error > &  errors,
ValidationMethod  method = ValidatorQgisInternal 
) const

Validates geometry and produces a list of geometry errors.

The method argument dictates which validator to utilize.

Since
QGIS 1.5
Note
Available in Python bindings since QGIS 1.6

Definition at line 2203 of file qgsgeometry.cpp.

◆ vertexAt()

QgsPoint QgsGeometry::vertexAt ( int  atVertex) const

Returns coordinates of a vertex.

Parameters
atVertexindex of the vertex
Returns
Coordinates of the vertex or QgsPoint(0,0) on error

Definition at line 531 of file qgsgeometry.cpp.

◆ vertexIdFromVertexNr()

bool QgsGeometry::vertexIdFromVertexNr ( int  number,
QgsVertexId id 
) const

Calculates the vertex ID from a vertex number.

If a matching vertex was found, it will be stored in id.

Returns true if vertex was found.

Since
QGIS 2.10
See also
vertexNrFromVertexId()

Definition at line 2430 of file qgsgeometry.cpp.

◆ vertexNrFromVertexId()

int QgsGeometry::vertexNrFromVertexId ( QgsVertexId  id) const

Returns the vertex number corresponding to a vertex id.

The vertex numbers start at 0, so a return value of 0 corresponds to the first vertex.

Returns -1 if a corresponding vertex could not be found.

Since
QGIS 2.10
See also
vertexIdFromVertexNr()

Definition at line 2466 of file qgsgeometry.cpp.

◆ vertices()

QgsVertexIterator QgsGeometry::vertices ( ) const

Returns Java-style iterator for traversal of vertices of the geometry.

Since
QGIS 3.0

Definition at line 1562 of file qgsgeometry.cpp.

◆ vertices_begin()

QgsAbstractGeometry::vertex_iterator QgsGeometry::vertices_begin ( ) const

Returns STL-style iterator pointing to the first vertex of the geometry.

Since
QGIS 3.0

Definition at line 1548 of file qgsgeometry.cpp.

◆ vertices_end()

QgsAbstractGeometry::vertex_iterator QgsGeometry::vertices_end ( ) const

Returns STL-style iterator pointing to the imaginary vertex after the last vertex of the geometry.

Since
QGIS 3.0

Definition at line 1555 of file qgsgeometry.cpp.

◆ voronoiDiagram()

QgsGeometry QgsGeometry::voronoiDiagram ( const QgsGeometry extent = QgsGeometry(),
double  tolerance = 0.0,
bool  edgesOnly = false 
) const

Creates a Voronoi diagram for the nodes contained within the geometry.

Returns the Voronoi polygons for the nodes contained within the geometry. If extent is specified then it will be used as a clipping envelope for the diagram. If no extent is set then the clipping envelope will be automatically calculated. In either case the diagram will be clipped to the larger of the provided envelope OR the envelope surrounding all input nodes. The tolerance parameter specifies an optional snapping tolerance which can be used to improve the robustness of the diagram calculation. If edgesOnly is true than line string boundary geometries will be returned instead of polygons. An empty geometry will be returned if the diagram could not be calculated.

Since
QGIS 3.0

Definition at line 1819 of file qgsgeometry.cpp.

◆ within()

bool QgsGeometry::within ( const QgsGeometry geometry) const

Test for if geometry is within another (uses GEOS)

Since
QGIS 1.5

Definition at line 1170 of file qgsgeometry.cpp.

◆ wkbType()

QgsWkbTypes::Type QgsGeometry::wkbType ( ) const

Returns type of the geometry as a WKB type (point / linestring / polygon etc.)

See also
type

Definition at line 282 of file qgsgeometry.cpp.


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