QGIS API Documentation
2.18.21-Las Palmas (9fba24a)
|
A geometry is the spatial representation of a feature. More...
#include <qgsgeometry.h>
Classes | |
class | Error |
Public Member Functions | |
QgsGeometry () | |
Constructor. More... | |
QgsGeometry (const QgsGeometry &) | |
Copy constructor will prompt a deep copy of the object. More... | |
QgsGeometry (QgsAbstractGeometryV2 *geom) | |
Creates a geometry from an abstract geometry object. More... | |
~QgsGeometry () | |
Destructor. More... | |
int | addPart (const QList< QgsPoint > &points, QGis::GeometryType geomType=QGis::UnknownGeometry) |
Adds a new part to a the geometry. More... | |
int | addPart (const QgsPointSequenceV2 &points, QGis::GeometryType geomType=QGis::UnknownGeometry) |
Adds a new part to a the geometry. More... | |
int | addPart (QgsAbstractGeometryV2 *part, QGis::GeometryType geomType=QGis::UnknownGeometry) |
Adds a new part to this geometry. More... | |
int | addPart (GEOSGeometry *newPart) |
Adds a new island polygon to a multipolygon feature. More... | |
int | addPart (const QgsGeometry *newPart) |
Adds a new island polygon to a multipolygon feature. More... | |
int | addRing (const QList< QgsPoint > &ring) |
Adds a new ring to this geometry. More... | |
int | addRing (QgsCurveV2 *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... | |
QList< QgsGeometry * > | asGeometryCollection () const |
Return contents of the geometry as a list of geometries. More... | |
const GEOSGeometry * | asGeos (double precision=0) const |
Returns a geos geometry. More... | |
QgsMultiPoint | asMultiPoint () const |
Return contents of the geometry as a multi point if wkbType is WKBMultiPoint, 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... | |
QgsMultiPolyline | asMultiPolyline () const |
Return contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list. More... | |
QgsPoint | asPoint () const |
Return contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0]. More... | |
QgsPolygon | asPolygon () const |
Return contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list. More... | |
QgsPolyline | asPolyline () const |
Return contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list. More... | |
QPointF | asQPointF () const |
Return contents of the geometry as a QPointF if wkbType is WKBPoint, otherwise returns a null QPointF. More... | |
QPolygonF | asQPolygonF () const |
Return contents of the geometry as a QPolygonF. More... | |
const unsigned char * | asWkb () const |
Returns the buffer containing this geometry in WKB format. More... | |
int | avoidIntersections (const QMap< QgsVectorLayer *, QSet< QgsFeatureId > > &ignoreFeatures=(QMap< QgsVectorLayer *, QSet< QgsFeatureId > >())) |
Modifies geometry to avoid intersections with the layers specified in project properties. More... | |
QgsRectangle | boundingBox () const |
Returns the bounding box of this feature. 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, int endCapStyle, int joinStyle, double mitreLimit) 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... | |
double | closestSegmentWithContext (const QgsPoint &point, QgsPoint &minDistPoint, int &afterVertex, double *leftOf=nullptr, double epsilon=DEFAULT_SEGMENT_EPSILON) const |
Searches for the closest segment of geometry to the given point. More... | |
QgsPoint | closestVertex (const QgsPoint &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 QgsPoint &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... | |
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 | 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 (QGis::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... | |
bool | deletePart (int partNum) |
Delete part identified by the part number. More... | |
bool | deleteRing (int ringNum, int partNum=0) |
Delete 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) 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... | |
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 |
Test 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... | |
QString | exportToGeoJSON (int precision=17) const |
Exports the geometry to GeoJSON. More... | |
QString | exportToWkt (int precision=17) const |
Exports the geometry to WKT. 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... | |
QgsAbstractGeometryV2 * | geometry () const |
Returns the underlying geometry store. 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... | |
QgsGeometry * | interpolate (double distance) const |
Return 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 |
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 | isEmpty () const |
Returns true if the geometry is empty (ie, contains no underlying geometry accessible via geometry). More... | |
bool | isGeosEmpty () const |
Check if the geometry is empty using GEOS. 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... | |
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... | |
int | makeDifference (const QgsGeometry *other) |
Changes this geometry such that it does not intersect the other geometry. 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... | |
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 QgsPointV2 &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, int joinStyle, double mitreLimit) const |
Returns an offset line at a given distance and side from an input line. More... | |
operator QVariant () const | |
Allows direct construction of QVariants from geometry. More... | |
QgsGeometry & | operator= (QgsGeometry const &rhs) |
Assignments will prompt a deep copy of the object. More... | |
bool | overlaps (const QgsGeometry *geometry) const |
Test for if geometry overlaps another (uses GEOS) More... | |
QgsGeometry * | pointOnSurface () const |
Returns a point within a 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... | |
int | reshapeGeometry (const QList< QgsPoint > &reshapeWithLine) |
Replaces a part of this geometry with another line. More... | |
int | reshapeGeometry (const QList< QgsPointV2 > &reshapeLine) |
Replaces a part of this geometry with another line with Z support. More... | |
int | rotate (double rotation, const QgsPoint ¢er) |
Rotate this geometry around the Z axis. More... | |
void | setGeometry (QgsAbstractGeometryV2 *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 * | smooth (const unsigned int iterations=1, const double offset=0.25) const |
Smooths a geometry by rounding off corners using the Chaikin algorithm. More... | |
QgsPolyline | smoothLine (const QgsPolyline &polyline, const unsigned int iterations=1, const double offset=0.25) const |
Smooths a polyline using the Chaikin algorithm. More... | |
QgsPolygon | smoothPolygon (const QgsPolygon &polygon, const unsigned int iterations=1, const double offset=0.25) const |
Smooths a polygon using the Chaikin algorithm. More... | |
int | splitGeometry (const QList< QgsPoint > &splitLine, QList< QgsGeometry *> &newGeometries, bool topological, QList< QgsPoint > &topologyTestPoints) |
Splits this geometry according to a given line. More... | |
double | sqrDistToVertexAt (QgsPoint &point, 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 * | 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... | |
int | transform (const QgsCoordinateTransform &ct) |
Transform this geometry as described by CoordinateTransform ct. More... | |
int | transform (const QTransform &ct) |
Transform this geometry as described by QTransform ct. More... | |
int | translate (double dx, double dy) |
Translate this geometry by dx, dy. More... | |
QGis::GeometryType | type () const |
Returns type of the geometry as a QGis::GeometryType. More... | |
void | validateGeometry (QList< Error > &errors) |
Validate geometry and produce a list of geometry errors. More... | |
QgsPoint | vertexAt (int atVertex) const |
Returns coordinates of a vertex. More... | |
bool | vertexIdFromVertexNr (int nr, QgsVertexId &id) const |
Calculates the vertex ID from a vertex number. More... | |
int | vertexNrFromVertexId (QgsVertexId i) const |
Returns the vertex number corresponding to a vertex idd. More... | |
bool | within (const QgsGeometry *geometry) const |
Test for if geometry is within another (uses GEOS) More... | |
int | wkbSize () const |
Returns the size of the WKB in asWkb(). More... | |
QGis::WkbType | wkbType () const |
Returns type of the geometry as a WKB type (point / linestring / polygon etc.) More... | |
Static Public Member Functions | |
static bool | compare (const QgsPolyline &p1, const QgsPolyline &p2, double epsilon=4 *std::numeric_limits< double >::epsilon()) |
Compares two polylines for equality within a specified tolerance. More... | |
static bool | compare (const QgsPolygon &p1, const QgsPolygon &p2, double epsilon=4 *std::numeric_limits< double >::epsilon()) |
Compares two polygons for equality within a specified tolerance. More... | |
static bool | compare (const QgsMultiPolygon &p1, const QgsMultiPolygon &p2, double epsilon=4 *std::numeric_limits< double >::epsilon()) |
Compares two multipolygons for equality within a specified tolerance. More... | |
static void | convertPointList (const QList< QgsPoint > &input, QgsPointSequenceV2 &output) |
Upgrades a point list from QgsPoint to QgsPointV2. More... | |
static void | convertPointList (const QgsPointSequenceV2 &input, QList< QgsPoint > &output) |
Downgrades a point list from QgsPointV2 to QgsPoint. More... | |
static QgsGeometryEngine * | createGeometryEngine (const QgsAbstractGeometryV2 *geometry) |
Creates and returns a new geometry engine. More... | |
static QgsPolygon | createPolygonFromQPolygonF (const QPolygonF &polygon) |
Creates a QgsPolygon from a QPolygonF. More... | |
static QgsPolyline | createPolylineFromQPolygonF (const QPolygonF &polygon) |
Creates a QgsPolyline from a QPolygonF. More... | |
static QgsGeometry * | fromMultiPoint (const QgsMultiPoint &multipoint) |
Creates a new geometry from a QgsMultiPoint object. More... | |
static QgsGeometry * | fromMultiPolygon (const QgsMultiPolygon &multipoly) |
Creates a new geometry from a QgsMultiPolygon. More... | |
static QgsGeometry * | fromMultiPolyline (const QgsMultiPolyline &multiline) |
Creates a new geometry from a QgsMultiPolyline object. More... | |
static QgsGeometry * | fromPoint (const QgsPoint &point) |
Creates a new geometry from a QgsPoint object. More... | |
static QgsGeometry * | fromPolygon (const QgsPolygon &polygon) |
Creates a new geometry from a QgsPolygon. More... | |
static QgsGeometry * | fromPolyline (const QgsPolyline &polyline) |
Creates a new geometry from a QgsPolyline object. 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 * | unaryUnion (const QList< QgsGeometry *> &geometryList) |
Compute the unary union on a list of geometries. More... | |
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 QgsAbstractGeometryV2 within the container, and can be accessed via the geometry method or set using the setGeometry method.
Definition at line 76 of file qgsgeometry.h.
QgsGeometry::QgsGeometry | ( | ) |
Constructor.
Definition at line 65 of file qgsgeometry.cpp.
QgsGeometry::QgsGeometry | ( | const QgsGeometry & | other | ) |
Copy constructor will prompt a deep copy of the object.
Definition at line 81 of file qgsgeometry.cpp.
|
explicit |
Creates a geometry from an abstract geometry object.
Ownership of geom is transferred.
Definition at line 75 of file qgsgeometry.cpp.
QgsGeometry::~QgsGeometry | ( | ) |
Destructor.
Definition at line 69 of file qgsgeometry.cpp.
int QgsGeometry::addPart | ( | const QList< QgsPoint > & | points, |
QGis::GeometryType | geomType = QGis::UnknownGeometry |
||
) |
Adds a new part to a the geometry.
points | points describing part to add |
geomType | default geometry type to create if no existing geometry |
Definition at line 659 of file qgsgeometry.cpp.
int QgsGeometry::addPart | ( | const QgsPointSequenceV2 & | points, |
QGis::GeometryType | geomType = QGis::UnknownGeometry |
||
) |
Adds a new part to a the geometry.
points | points describing part to add |
geomType | default geometry type to create if no existing geometry |
Definition at line 666 of file qgsgeometry.cpp.
int QgsGeometry::addPart | ( | QgsAbstractGeometryV2 * | part, |
QGis::GeometryType | geomType = QGis::UnknownGeometry |
||
) |
Adds a new part to this geometry.
part | part to add (ownership is transferred) |
geomType | default geometry type to create if no existing geometry |
Definition at line 682 of file qgsgeometry.cpp.
int QgsGeometry::addPart | ( | GEOSGeometry * | newPart | ) |
Adds a new island polygon to a multipolygon feature.
newPart | part to add. Ownership is NOT transferred. |
Definition at line 722 of file qgsgeometry.cpp.
int QgsGeometry::addPart | ( | const QgsGeometry * | newPart | ) |
Adds a new island polygon to a multipolygon feature.
Definition at line 712 of file qgsgeometry.cpp.
Adds a new ring to this geometry.
This makes only sense for polygon and multipolygons.
Definition at line 633 of file qgsgeometry.cpp.
int QgsGeometry::addRing | ( | QgsCurveV2 * | ring | ) |
Adds a new ring to this geometry.
This makes only sense for polygon and multipolygons.
Definition at line 645 of file qgsgeometry.cpp.
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:
Definition at line 426 of file qgsgeometry.cpp.
double QgsGeometry::angleAtVertex | ( | int | vertex | ) | const |
Returns the bisector angle for this geometry at the specified vertex.
vertex | vertex index to calculate bisector angle at |
Definition at line 386 of file qgsgeometry.cpp.
double QgsGeometry::area | ( | ) | const |
Returns the area of the geometry using GEOS.
Definition at line 1275 of file qgsgeometry.cpp.
QList< QgsGeometry * > QgsGeometry::asGeometryCollection | ( | ) | const |
Return contents of the geometry as a list of geometries.
Definition at line 1612 of file qgsgeometry.cpp.
const GEOSGeometry * QgsGeometry::asGeos | ( | double | precision = 0 | ) | const |
Returns a geos geometry.
QgsGeometry retains ownership of the geometry, so the returned object should not be deleted.
precision | The precision of the grid to which to snap the geometry vertices. If 0, no snapping is performed. |
Definition at line 292 of file qgsgeometry.cpp.
QgsMultiPoint QgsGeometry::asMultiPoint | ( | ) | const |
Return contents of the geometry as a multi point if wkbType is WKBMultiPoint, otherwise an empty list.
Definition at line 1159 of file qgsgeometry.cpp.
QgsMultiPolygon QgsGeometry::asMultiPolygon | ( | ) | const |
Return contents of the geometry as a multi polygon if wkbType is WKBMultiPolygon, otherwise an empty list.
Definition at line 1232 of file qgsgeometry.cpp.
QgsMultiPolyline QgsGeometry::asMultiPolyline | ( | ) | const |
Return contents of the geometry as a multi linestring if wkbType is WKBMultiLineString, otherwise an empty list.
Definition at line 1183 of file qgsgeometry.cpp.
QgsPoint QgsGeometry::asPoint | ( | ) | const |
Return contents of the geometry as a point if wkbType is WKBPoint, otherwise returns [0,0].
Definition at line 1061 of file qgsgeometry.cpp.
QgsPolygon QgsGeometry::asPolygon | ( | ) | const |
Return contents of the geometry as a polygon if wkbType is WKBPolygon, otherwise an empty list.
Definition at line 1122 of file qgsgeometry.cpp.
QgsPolyline QgsGeometry::asPolyline | ( | ) | const |
Return contents of the geometry as a polyline if wkbType is WKBLineString, otherwise an empty list.
Definition at line 1076 of file qgsgeometry.cpp.
QPointF QgsGeometry::asQPointF | ( | ) | const |
Return contents of the geometry as a QPointF if wkbType is WKBPoint, otherwise returns a null QPointF.
Definition at line 1638 of file qgsgeometry.cpp.
QPolygonF QgsGeometry::asQPolygonF | ( | ) | const |
Return 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.
Definition at line 1644 of file qgsgeometry.cpp.
const unsigned char * QgsGeometry::asWkb | ( | ) | const |
Returns the buffer containing this geometry in WKB format.
You may wish to use in conjunction with wkbSize().
Definition at line 264 of file qgsgeometry.cpp.
int QgsGeometry::avoidIntersections | ( | const QMap< QgsVectorLayer *, QSet< QgsFeatureId > > & | ignoreFeatures = ( QMap<QgsVectorLayer*, QSet<QgsFeatureId> >() ) | ) |
Modifies geometry to avoid intersections with the layers specified in project properties.
ignoreFeatures | possibility to give a list of features where intersections should be ignored (not available in python bindings) |
Definition at line 1705 of file qgsgeometry.cpp.
QgsRectangle QgsGeometry::boundingBox | ( | ) | const |
Returns the bounding box of this feature.
Definition at line 858 of file qgsgeometry.cpp.
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 1318 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::buffer | ( | double | distance, |
int | segments, | ||
int | endCapStyle, | ||
int | joinStyle, | ||
double | mitreLimit | ||
) | const |
Returns a buffer region around the geometry, with additional style options.
distance | buffer distance |
segments | For round joins, number of segments to approximate quarter-circle |
endCapStyle | Round (1) / Flat (2) / Square (3) end cap style |
joinStyle | Round (1) / Mitre (2) / Bevel (3) join style |
mitreLimit | Limit on the mitre ratio used for very sharp corners |
Definition at line 1334 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::centroid | ( | ) | const |
Returns the center of mass of a geometry.
Definition at line 1382 of file qgsgeometry.cpp.
double QgsGeometry::closestSegmentWithContext | ( | const QgsPoint & | point, |
QgsPoint & | minDistPoint, | ||
int & | afterVertex, | ||
double * | leftOf = nullptr , |
||
double | epsilon = DEFAULT_SEGMENT_EPSILON |
||
) | const |
Searches for the closest segment of geometry to the given point.
point | Specifies the point for search |
minDistPoint | Receives the nearest point on the segment |
afterVertex | Receives index of the vertex after the closest segment. The vertex before the closest segment is always afterVertex - 1 |
leftOf | Out: Returns if the point lies on the left of right side of the segment ( < 0 means left, > 0 means right ) |
epsilon | epsilon for segment snapping (added in 1.8) |
Definition at line 603 of file qgsgeometry.cpp.
QgsPoint QgsGeometry::closestVertex | ( | const QgsPoint & | 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.
point | point to search for |
atVertex | will be set to the vertex index of the closest found vertex |
beforeVertex | will be set to the vertex index of the previous vertex from the closest one. Will be set to -1 if not present. |
afterVertex | will be set to the vertex index of the next vertex after the closest one. Will be set to -1 if not present. |
sqrDist | will be set to the square distance between the closest vertex and the specified point |
Definition at line 346 of file qgsgeometry.cpp.
double QgsGeometry::closestVertexWithContext | ( | const QgsPoint & | point, |
int & | atVertex | ||
) | const |
Searches for the closest vertex in this geometry to the given point.
point | Specifiest the point for search |
atVertex | Receives index of the closest vertex |
Definition at line 587 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::combine | ( | const QgsGeometry * | geometry | ) | const |
Returns a geometry representing all the points in this geometry and other (a union geometry operation).
Definition at line 1537 of file qgsgeometry.cpp.
|
static |
Compares two polylines for equality within a specified tolerance.
p1 | first polyline |
p2 | second polyline |
epsilon | maximum difference for coordinates between the polylines |
Definition at line 2008 of file qgsgeometry.cpp.
|
static |
Compares two polygons for equality within a specified tolerance.
p1 | first polygon |
p2 | second polygon |
epsilon | maximum difference for coordinates between the polygons |
Definition at line 2021 of file qgsgeometry.cpp.
|
static |
Compares two multipolygons for equality within a specified tolerance.
p1 | first multipolygon |
p2 | second multipolygon |
epsilon | maximum difference for coordinates between the multipolygons |
Definition at line 2035 of file qgsgeometry.cpp.
bool QgsGeometry::contains | ( | const QgsPoint * | p | ) | const |
Test for containment of a point (uses GEOS)
Definition at line 886 of file qgsgeometry.cpp.
bool QgsGeometry::contains | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry is contained in another (uses GEOS)
Definition at line 898 of file qgsgeometry.cpp.
|
static |
Upgrades a point list from QgsPoint to QgsPointV2.
input | list of QgsPoint objects to be upgraded |
output | destination for list of points converted to QgsPointV2 |
Definition at line 1919 of file qgsgeometry.cpp.
|
static |
Downgrades a point list from QgsPointV2 to QgsPoint.
input | list of QgsPointV2 objects to be downgraded |
output | destination for list of points converted to QgsPoint |
Definition at line 1929 of file qgsgeometry.cpp.
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.
Definition at line 1011 of file qgsgeometry.cpp.
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.
Definition at line 1037 of file qgsgeometry.cpp.
void QgsGeometry::convertToStraightSegment | ( | ) |
Converts the geometry to straight line segments, if it is a curved geometry type.
Definition at line 1778 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::convertToType | ( | QGis::GeometryType | destType, |
bool | destMultipart = false |
||
) | const |
Try to convert the geometry to the requested type.
destType | the geometry type to be converted to |
destMultipart | determines if the output geometry will be multipart or not |
Definition at line 993 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::convexHull | ( | ) | const |
Returns the smallest convex polygon that contains all the points in the geometry.
Definition at line 1416 of file qgsgeometry.cpp.
|
static |
Creates and returns a new geometry engine.
Definition at line 2476 of file qgsgeometry.cpp.
|
static |
Creates a QgsPolygon from a QPolygonF.
polygon | source polygon |
Definition at line 1990 of file qgsgeometry.cpp.
|
static |
Creates a QgsPolyline from a QPolygonF.
polygon | source polygon |
Definition at line 1997 of file qgsgeometry.cpp.
bool QgsGeometry::crosses | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry crosses another (uses GEOS)
Definition at line 964 of file qgsgeometry.cpp.
bool QgsGeometry::deletePart | ( | int | partNum | ) |
Delete part identified by the part number.
Definition at line 1686 of file qgsgeometry.cpp.
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.
Definition at line 1673 of file qgsgeometry.cpp.
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 485 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::difference | ( | const QgsGeometry * | geometry | ) | const |
Returns a geometry representing the points making up this geometry that do not make up other.
Definition at line 1571 of file qgsgeometry.cpp.
bool QgsGeometry::disjoint | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry is disjoint of another (uses GEOS)
Definition at line 909 of file qgsgeometry.cpp.
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.
geom | geometry to find minimum distance to |
Definition at line 1307 of file qgsgeometry.cpp.
double QgsGeometry::distanceToVertex | ( | int | vertex | ) | const |
Returns the distance along this geometry from its first vertex to the specified vertex.
vertex | vertex index to calculate distance to |
Definition at line 370 of file qgsgeometry.cpp.
void QgsGeometry::draw | ( | QPainter & | p | ) | const |
Draws the geometry onto a QPainter.
p | destination QPainter |
Definition at line 1850 of file qgsgeometry.cpp.
bool QgsGeometry::equals | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry equals another (uses GEOS)
Definition at line 920 of file qgsgeometry.cpp.
QString QgsGeometry::exportToGeoJSON | ( | int | precision = 17 | ) | const |
Exports the geometry to GeoJSON.
Definition at line 984 of file qgsgeometry.cpp.
QString QgsGeometry::exportToWkt | ( | int | precision = 17 | ) | const |
Exports the geometry to WKT.
Definition at line 975 of file qgsgeometry.cpp.
QgsGeometry QgsGeometry::extrude | ( | double | x, |
double | y | ||
) |
Returns an extruded version of this geometry.
Definition at line 1605 of file qgsgeometry.cpp.
void QgsGeometry::fromGeos | ( | GEOSGeometry * | geos | ) |
Set the geometry, feeding in a geometry in GEOS format.
This class will take ownership of the buffer.
Definition at line 338 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsMultiPoint object.
Definition at line 196 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsMultiPolygon.
Definition at line 216 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsMultiPolyline object.
Definition at line 206 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsPoint object.
Definition at line 166 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsPolygon.
Definition at line 186 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsPolyline object.
Definition at line 176 of file qgsgeometry.cpp.
|
static |
Construct geometry from a QPointF.
point | source QPointF |
Definition at line 1973 of file qgsgeometry.cpp.
|
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.
polygon | source QPolygonF |
Definition at line 1978 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a QgsRectangle.
Definition at line 226 of file qgsgeometry.cpp.
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.
Definition at line 241 of file qgsgeometry.cpp.
|
static |
Creates a new geometry from a WKT string.
Definition at line 156 of file qgsgeometry.cpp.
QgsAbstractGeometryV2 * QgsGeometry::geometry | ( | ) | const |
Returns the underlying geometry store.
Definition at line 128 of file qgsgeometry.cpp.
|
static |
Return GEOS context handle.
Definition at line 1968 of file qgsgeometry.cpp.
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 523 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::interpolate | ( | double | distance | ) | const |
Return interpolated point on line at distance.
Definition at line 1431 of file qgsgeometry.cpp.
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.
distance | distance along geometry |
Definition at line 1469 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::intersection | ( | const QgsGeometry * | geometry | ) | const |
Returns a geometry representing the points shared by this geometry and other.
Definition at line 1524 of file qgsgeometry.cpp.
bool QgsGeometry::intersects | ( | const QgsRectangle & | r | ) | const |
Test for intersection with a rectangle (uses GEOS)
Definition at line 867 of file qgsgeometry.cpp.
bool QgsGeometry::intersects | ( | const QgsGeometry * | geometry | ) | const |
Test for intersection with a geometry (uses GEOS)
Definition at line 875 of file qgsgeometry.cpp.
bool QgsGeometry::isEmpty | ( | ) | const |
Returns true if the geometry is empty (ie, contains no underlying geometry accessible via geometry).
Definition at line 151 of file qgsgeometry.cpp.
bool QgsGeometry::isGeosEmpty | ( | ) | const |
Check if the geometry is empty using GEOS.
Definition at line 1749 of file qgsgeometry.cpp.
bool QgsGeometry::isGeosEqual | ( | const QgsGeometry & | g | ) | const |
Compares the geometry with another geometry using GEOS.
Definition at line 1738 of file qgsgeometry.cpp.
bool QgsGeometry::isGeosValid | ( | ) | const |
Checks validity of the geometry using GEOS.
Definition at line 1727 of file qgsgeometry.cpp.
bool QgsGeometry::isMultipart | ( | ) | const |
Returns true if WKB of the geometry is of WKBMulti* type.
Definition at line 329 of file qgsgeometry.cpp.
double QgsGeometry::length | ( | ) | const |
Returns the length of geometry using GEOS.
Definition at line 1297 of file qgsgeometry.cpp.
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.
point | point to seek proximity to |
Definition at line 1451 of file qgsgeometry.cpp.
int QgsGeometry::makeDifference | ( | const QgsGeometry * | other | ) |
Changes this geometry such that it does not intersect the other geometry.
other | geometry that should not be intersect |
Definition at line 835 of file qgsgeometry.cpp.
void QgsGeometry::mapToPixel | ( | const QgsMapToPixel & | mtp | ) |
Transforms the geometry from map units to pixels in place.
mtp | map to pixel transform |
Definition at line 1828 of file qgsgeometry.cpp.
QgsGeometry QgsGeometry::mergeLines | ( | ) | const |
Merges any connected lines in a LineString/MultiLineString geometry and converts them to single line strings.
Definition at line 1554 of file qgsgeometry.cpp.
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 447 of file qgsgeometry.cpp.
bool QgsGeometry::moveVertex | ( | const QgsPointV2 & | 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 466 of file qgsgeometry.cpp.
QgsGeometry QgsGeometry::nearestPoint | ( | const QgsGeometry & | other | ) | const |
Returns the nearest point on this geometry to another geometry.
Definition at line 575 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::offsetCurve | ( | double | distance, |
int | segments, | ||
int | joinStyle, | ||
double | mitreLimit | ||
) | const |
Returns an offset line at a given distance and side from an input line.
See buffer() method for details on parameters.
Definition at line 1350 of file qgsgeometry.cpp.
|
inline |
Allows direct construction of QVariants from geometry.
Definition at line 875 of file qgsgeometry.h.
QgsGeometry & QgsGeometry::operator= | ( | QgsGeometry const & | rhs | ) |
Assignments will prompt a deep copy of the object.
Definition at line 87 of file qgsgeometry.cpp.
bool QgsGeometry::overlaps | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry overlaps another (uses GEOS)
Definition at line 942 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::pointOnSurface | ( | ) | const |
Returns a point within a geometry.
Definition at line 1399 of file qgsgeometry.cpp.
bool QgsGeometry::requiresConversionToStraightSegments | ( | ) | const |
Returns true if the geometry is a curved geometry type which requires conversion to display as straight line segments.
Definition at line 1792 of file qgsgeometry.cpp.
Replaces a part of this geometry with another line.
Definition at line 802 of file qgsgeometry.cpp.
int QgsGeometry::reshapeGeometry | ( | const QList< QgsPointV2 > & | reshapeLine | ) |
Replaces a part of this geometry with another line with Z support.
Definition at line 809 of file qgsgeometry.cpp.
int QgsGeometry::rotate | ( | double | rotation, |
const QgsPoint & | center | ||
) |
Rotate this geometry around the Z axis.
rotation | clockwise rotation in degrees |
center | rotation center |
Definition at line 750 of file qgsgeometry.cpp.
void QgsGeometry::setGeometry | ( | QgsAbstractGeometryV2 * | geometry | ) |
Sets the underlying geometry store.
Ownership of geometry is transferred.
Definition at line 133 of file qgsgeometry.cpp.
QgsGeometry QgsGeometry::shortestLine | ( | const QgsGeometry & | other | ) | const |
Returns the shortest line joining this geometry to another geometry.
Definition at line 581 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::simplify | ( | double | tolerance | ) | const |
Returns a simplified version of this geometry using a specified tolerance value.
Definition at line 1366 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::smooth | ( | const unsigned int | iterations = 1 , |
const double | offset = 0.25 |
||
) | const |
Smooths a geometry by rounding off corners using the Chaikin algorithm.
This operation roughly doubles the number of vertices in a geometry.
iterations | number of smoothing iterations to run. More iterations results in a smoother geometry |
offset | fraction of line to create new vertices along, between 0 and 1.0 eg 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. |
Definition at line 2048 of file qgsgeometry.cpp.
QgsPolyline QgsGeometry::smoothLine | ( | const QgsPolyline & | polyline, |
const unsigned int | iterations = 1 , |
||
const double | offset = 0.25 |
||
) | const |
Smooths a polyline using the Chaikin algorithm.
Definition at line 2112 of file qgsgeometry.cpp.
QgsPolygon QgsGeometry::smoothPolygon | ( | const QgsPolygon & | polygon, |
const unsigned int | iterations = 1 , |
||
const double | offset = 0.25 |
||
) | const |
Smooths a polygon using the Chaikin algorithm.
Definition at line 2131 of file qgsgeometry.cpp.
int QgsGeometry::splitGeometry | ( | const QList< QgsPoint > & | splitLine, |
QList< QgsGeometry *> & | newGeometries, | ||
bool | topological, | ||
QList< QgsPoint > & | topologyTestPoints | ||
) |
Splits this geometry according to a given line.
splitLine | the line that splits the geometry | |
[out] | newGeometries | list of new geometries that have been created with the split |
topological | true if topological editing is enabled | |
[out] | topologyTestPoints | points that need to be tested for topological completeness in the dataset |
Definition at line 767 of file qgsgeometry.cpp.
double QgsGeometry::sqrDistToVertexAt | ( | QgsPoint & | point, |
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 569 of file qgsgeometry.cpp.
QgsGeometry * QgsGeometry::symDifference | ( | const QgsGeometry * | geometry | ) | const |
Returns a geometry representing the points making up this geometry that do not make up other.
Definition at line 1588 of file qgsgeometry.cpp.
bool QgsGeometry::touches | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry touch another (uses GEOS)
Definition at line 931 of file qgsgeometry.cpp.
int QgsGeometry::transform | ( | const QgsCoordinateTransform & | ct | ) |
Transform this geometry as described by CoordinateTransform ct.
Definition at line 1802 of file qgsgeometry.cpp.
int QgsGeometry::transform | ( | const QTransform & | ct | ) |
Transform this geometry as described by QTransform ct.
Definition at line 1815 of file qgsgeometry.cpp.
int QgsGeometry::translate | ( | double | dx, |
double | dy | ||
) |
Translate this geometry by dx, dy.
Definition at line 736 of file qgsgeometry.cpp.
QGis::GeometryType QgsGeometry::type | ( | ) | const |
Returns type of the geometry as a QGis::GeometryType.
Definition at line 320 of file qgsgeometry.cpp.
|
static |
Compute the unary union on a list of geometries.
May be faster than an iterative union on a set of geometries.
geometryList | a list of QgsGeometry* as input |
Definition at line 1760 of file qgsgeometry.cpp.
Validate geometry and produce a list of geometry errors.
Definition at line 1722 of file qgsgeometry.cpp.
QgsPoint QgsGeometry::vertexAt | ( | int | atVertex | ) | const |
Returns coordinates of a vertex.
atVertex | index of the vertex |
Definition at line 552 of file qgsgeometry.cpp.
bool QgsGeometry::vertexIdFromVertexNr | ( | int | nr, |
QgsVertexId & | id | ||
) | const |
Calculates the vertex ID from a vertex number.
nr | vertex number |
id | reference to QgsVertexId for storing result |
Definition at line 1858 of file qgsgeometry.cpp.
int QgsGeometry::vertexNrFromVertexId | ( | QgsVertexId | i | ) | const |
Returns the vertex number corresponding to a vertex idd.
i | vertex id |
Definition at line 1890 of file qgsgeometry.cpp.
bool QgsGeometry::within | ( | const QgsGeometry * | geometry | ) | const |
Test for if geometry is within another (uses GEOS)
Definition at line 953 of file qgsgeometry.cpp.
int QgsGeometry::wkbSize | ( | ) | const |
Returns the size of the WKB in asWkb().
Definition at line 278 of file qgsgeometry.cpp.
QGis::WkbType QgsGeometry::wkbType | ( | ) | const |
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
Definition at line 307 of file qgsgeometry.cpp.