QGIS API Documentation
3.0.2-Girona (307d082)
|
Contains various geometry utility functions. More...
#include <qgsgeometryutils.h>
Classes | |
struct | SelfIntersection |
Public Types | |
enum | ComponentType { Vertex, Ring, Part } |
Static Public Member Functions | |
static double | angleBetweenThreePoints (double x1, double y1, double x2, double y2, double x3, double y3) |
Calculates the angle between the lines AB and BC, where AB and BC described by points a, b and b, c. More... | |
static bool | angleOnCircle (double angle, double angle1, double angle2, double angle3) |
Returns true if an angle is between angle1 and angle3 on a circle described by angle1, angle2 and angle3. More... | |
static double | averageAngle (double x1, double y1, double x2, double y2, double x3, double y3) |
Angle between two linear segments. More... | |
static double | averageAngle (double a1, double a2) |
Averages two angles, correctly handling negative angles and ensuring the result is between 0 and 2 pi. More... | |
static double | ccwAngle (double dy, double dx) |
Returns the counter clockwise angle between a line with components dx, dy and the line with dx > 0 and dy = 0. More... | |
static bool | circleAngleBetween (double angle, double angle1, double angle2, bool clockwise) |
Returns true if, in a circle, angle is between angle1 and angle2. More... | |
static void | circleCenterRadius (const QgsPoint &pt1, const QgsPoint &pt2, const QgsPoint &pt3, double &radius, double ¢erX, double ¢erY) |
Returns radius and center of the circle through pt1, pt2, pt3. More... | |
static bool | circleClockwise (double angle1, double angle2, double angle3) |
Returns true if circle is ordered clockwise. More... | |
static double | circleLength (double x1, double y1, double x2, double y2, double x3, double y3) |
Length of a circular string segment defined by pt1, pt2, pt3. More... | |
static double | circleTangentDirection (const QgsPoint &tangentPoint, const QgsPoint &cp1, const QgsPoint &cp2, const QgsPoint &cp3) |
Calculates the direction angle of a circle tangent (clockwise from north in radians) More... | |
static QgsPoint | closestPoint (const QgsAbstractGeometry &geometry, const QgsPoint &point) |
Returns the nearest point on a segment of a geometry for the specified point. More... | |
template<class T > | |
static double | closestSegmentFromComponents (T &container, ComponentType ctype, const QgsPoint &pt, QgsPoint &segmentPt, QgsVertexId &vertexAfter, int *leftOf, double epsilon) |
static QgsPoint | closestVertex (const QgsAbstractGeometry &geom, const QgsPoint &pt, QgsVertexId &id) |
Returns the closest vertex to a geometry for a specified point. More... | |
static void | coefficients (const QgsPoint &pt1, const QgsPoint &pt2, double &a, double &b, double &c) |
Return the coefficients (a, b, c for equation "ax + by + c = 0") of a line defined by points pt1 and pt2. More... | |
static double | distanceToVertex (const QgsAbstractGeometry &geom, QgsVertexId id) |
Returns the distance along a geometry from its first vertex to the specified vertex. More... | |
static QVector< QgsLineString * > | extractLineStrings (const QgsAbstractGeometry *geom) |
Returns list of linestrings extracted from the passed geometry. More... | |
static double | gradient (const QgsPoint &pt1, const QgsPoint &pt2) |
Return the gradient of a line defined by points pt1 and pt2. More... | |
static double | interpolateArcValue (double angle, double a1, double a2, double a3, double zm1, double zm2, double zm3) |
Interpolate a value at given angle on circular arc given values (zm1, zm2, zm3) at three different angles (a1, a2, a3). More... | |
static QgsPointXY | interpolatePointOnLine (double x1, double y1, double x2, double y2, double fraction) |
Interpolates the position of a point a fraction of the way along the line from (x1, y1) to (x2, y2). More... | |
static QgsPoint | interpolatePointOnLine (const QgsPoint &p1, const QgsPoint &p2, double fraction) |
Interpolates the position of a point a fraction of the way along the line from p1 to p2. More... | |
static QgsPointXY | interpolatePointOnLineByValue (double x1, double y1, double v1, double x2, double y2, double v2, double value) |
Interpolates the position of a point along the line from (x1, y1) to (x2, y2). More... | |
static int | leftOfLine (double x, double y, double x1, double y1, double x2, double y2) |
Returns a value < 0 if the point (x, y) is left of the line from (x1, y1) -> ( x2, y2). More... | |
static double | lineAngle (double x1, double y1, double x2, double y2) |
Calculates the direction of line joining two points in radians, clockwise from the north direction. More... | |
static bool | lineCircleIntersection (const QgsPointXY ¢er, const double radius, const QgsPointXY &linePoint1, const QgsPointXY &linePoint2, QgsPointXY &intersection) |
Compute the intersection of a line and a circle. More... | |
static bool | lineIntersection (const QgsPoint &p1, QgsVector v1, const QgsPoint &p2, QgsVector v2, QgsPoint &intersection) |
Computes the intersection between two lines. More... | |
static double | linePerpendicularAngle (double x1, double y1, double x2, double y2) |
Calculates the perpendicular angle to a line joining two points. More... | |
static QgsPoint | midpoint (const QgsPoint &pt1, const QgsPoint &pt2) |
Returns a middle point between points pt1 and pt2. More... | |
static double | normalizedAngle (double angle) |
Ensures that an angle is in the range 0 <= angle < 2 pi. More... | |
static QgsLineString | perpendicularSegment (const QgsPoint &p, const QgsPoint &s1, const QgsPoint &s2) |
Create a perpendicular line segment from p to segment [s1, s2]. More... | |
static QgsPoint | pointOnLineWithDistance (const QgsPoint &startPoint, const QgsPoint &directionPoint, double distance) |
Returns a point a specified distance toward a second point. More... | |
static QgsPointSequence | pointsFromWKT (const QString &wktCoordinateList, bool is3D, bool isMeasure) |
Returns a list of points contained in a WKT string. More... | |
static QDomElement | pointsToGML2 (const QgsPointSequence &points, QDomDocument &doc, int precision, const QString &ns) |
Returns a gml::coordinates DOM element. More... | |
static QDomElement | pointsToGML3 (const QgsPointSequence &points, QDomDocument &doc, int precision, const QString &ns, bool is3D) |
Returns a gml::posList DOM element. More... | |
static QString | pointsToJSON (const QgsPointSequence &points, int precision) |
Returns a geoJSON coordinates string. More... | |
static void | pointsToWKB (QgsWkbPtr &wkb, const QgsPointSequence &points, bool is3D, bool isMeasure) |
Returns a LinearRing { uint32 numPoints; Point points[numPoints]; }. More... | |
static QString | pointsToWKT (const QgsPointSequence &points, int precision, bool is3D, bool isMeasure) |
Returns a WKT coordinate list. More... | |
static QgsPoint | projectPointOnSegment (const QgsPoint &p, const QgsPoint &s1, const QgsPoint &s2) |
Project the point on a segment. More... | |
static bool | segmentIntersection (const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint, bool &isIntersection, const double tolerance=1e-8, bool acceptImproperIntersection=false) |
Compute the intersection between two segments. More... | |
static void | segmentizeArc (const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, QgsPointSequence &points, double tolerance=M_PI_2/90, QgsAbstractGeometry::SegmentationToleranceType toleranceType=QgsAbstractGeometry::MaximumAngle, bool hasZ=false, bool hasM=false) |
Convert circular arc defined by p1, p2, p3 (p1/p3 being start resp. More... | |
static bool | segmentMidPoint (const QgsPoint &p1, const QgsPoint &p2, QgsPoint &result, double radius, const QgsPoint &mousePos) |
Calculates midpoint on circle passing through p1 and p2, closest to given coordinate. More... | |
static int | segmentSide (const QgsPoint &pt1, const QgsPoint &pt3, const QgsPoint &pt2) |
For line defined by points pt1 and pt3, find out on which side of the line is point pt3. More... | |
static QVector< SelfIntersection > | selfIntersections (const QgsAbstractGeometry *geom, int part, int ring, double tolerance) |
Find self intersections in a polyline. More... | |
static bool | setZValueFromPoints (const QgsPointSequence &points, QgsPoint &point) |
A Z dimension is added to point if one of the point in the list points is in 3D. More... | |
static double | sqrDistance2D (const QgsPoint &pt1, const QgsPoint &pt2) |
Returns the squared 2D distance between two points. More... | |
static double | sqrDistToLine (double ptX, double ptY, double x1, double y1, double x2, double y2, double &minDistX, double &minDistY, double epsilon) |
Returns the squared distance between a point and a line. More... | |
static double | sweepAngle (double centerX, double centerY, double x1, double y1, double x2, double y2, double x3, double y3) |
Calculates angle of a circular string part defined by pt1, pt2, pt3. More... | |
static bool | verticesAtDistance (const QgsAbstractGeometry &geometry, double distance, QgsVertexId &previousVertex, QgsVertexId &nextVertex) |
Retrieves the vertices which are before and after the interpolated point at a specified distance along a linestring (or polygon boundary). More... | |
static QStringList | wktGetChildBlocks (const QString &wkt, const QString &defaultType=QString()) |
Parses a WKT string and returns of list of blocks contained in the WKT. More... | |
static QPair< QgsWkbTypes::Type, QString > | wktReadBlock (const QString &wkt) |
Parses a WKT block of the format "TYPE( contents )" and returns a pair of geometry type to contents ("Pair(wkbType, "contents")") More... | |
Contains various geometry utility functions.
Definition at line 34 of file qgsgeometryutils.h.
Enumerator | |
---|---|
Vertex | |
Ring | |
Part |
Definition at line 479 of file qgsgeometryutils.h.
|
static |
Calculates the angle between the lines AB and BC, where AB and BC described by points a, b and b, c.
x1 | x-coordinate of point a |
y1 | y-coordinate of point a |
x2 | x-coordinate of point b |
y2 | y-coordinate of point b |
x3 | x-coordinate of point c |
y3 | y-coordinate of point c |
Definition at line 1153 of file qgsgeometryutils.cpp.
|
static |
Returns true if an angle is between angle1 and angle3 on a circle described by angle1, angle2 and angle3.
Definition at line 522 of file qgsgeometryutils.cpp.
|
static |
Angle between two linear segments.
Definition at line 1167 of file qgsgeometryutils.cpp.
|
static |
Averages two angles, correctly handling negative angles and ensuring the result is between 0 and 2 pi.
a1 | first angle (in radians) |
a2 | second angle (in radians) |
Definition at line 1175 of file qgsgeometryutils.cpp.
|
static |
Returns the counter clockwise angle between a line with components dx, dy and the line with dx > 0 and dy = 0.
Definition at line 432 of file qgsgeometryutils.cpp.
|
static |
Returns true if, in a circle, angle is between angle1 and angle2.
Definition at line 496 of file qgsgeometryutils.cpp.
|
static |
Returns radius and center of the circle through pt1, pt2, pt3.
Definition at line 446 of file qgsgeometryutils.cpp.
|
static |
Returns true if circle is ordered clockwise.
Definition at line 484 of file qgsgeometryutils.cpp.
|
static |
Length of a circular string segment defined by pt1, pt2, pt3.
Definition at line 528 of file qgsgeometryutils.cpp.
|
static |
Calculates the direction angle of a circle tangent (clockwise from north in radians)
Definition at line 617 of file qgsgeometryutils.cpp.
|
static |
Returns the nearest point on a segment of a geometry for the specified point.
The z and m values will be linearly interpolated between the two neighbouring vertices.
Definition at line 97 of file qgsgeometryutils.cpp.
|
inlinestatic |
Definition at line 487 of file qgsgeometryutils.h.
|
static |
Returns the closest vertex to a geometry for a specified point.
On error null point will be returned and "id" argument will be invalid.
Definition at line 66 of file qgsgeometryutils.cpp.
|
static |
Return the coefficients (a, b, c for equation "ax + by + c = 0") of a line defined by points pt1 and pt2.
pt1 | first point. |
pt2 | second point. |
a | Output parameter, a coefficient of the equation. |
b | Output parameter, b coefficient of the equation. |
c | Output parameter, c coefficient of the equation. |
Definition at line 1085 of file qgsgeometryutils.cpp.
|
static |
Returns the distance along a geometry from its first vertex to the specified vertex.
geom | geometry |
id | vertex id to find distance to |
Definition at line 130 of file qgsgeometryutils.cpp.
|
static |
Returns list of linestrings extracted from the passed geometry.
The returned objects have to be deleted by the caller.
Definition at line 30 of file qgsgeometryutils.cpp.
Return the gradient of a line defined by points pt1 and pt2.
pt1 | first point. |
pt2 | second point. |
Definition at line 1073 of file qgsgeometryutils.cpp.
|
static |
Interpolate a value at given angle on circular arc given values (zm1, zm2, zm3) at three different angles (a1, a2, a3).
Definition at line 779 of file qgsgeometryutils.cpp.
|
static |
Interpolates the position of a point a fraction of the way along the line from (x1, y1) to (x2, y2).
Usually the fraction should be between 0 and 1, where 0 represents the point at the start of the line (x1, y1) and 1 represents the end of the line (x2, y2). However, it is possible to use a fraction < 0 or > 1, in which case the returned point is extrapolated from the supplied line.
Definition at line 1057 of file qgsgeometryutils.cpp.
|
static |
Interpolates the position of a point a fraction of the way along the line from p1 to p2.
Usually the fraction should be between 0 and 1, where 0 represents the point at the start of the line (p1) and 1 represents the end of the line (p2). However, it is possible to use a fraction < 0 or > 1, in which case the returned point is extrapolated from the supplied line.
Any Z or M values present in the input points will also be interpolated and present in the returned point.
Definition at line 1047 of file qgsgeometryutils.cpp.
|
static |
Interpolates the position of a point along the line from (x1, y1) to (x2, y2).
The position is interpolated using a supplied target value and the value at the start of the line (v1) and end of the line (v2). The returned point will be linearly interpolated to match position corresponding to the target value.
Definition at line 1064 of file qgsgeometryutils.cpp.
|
static |
Returns a value < 0 if the point (x, y) is left of the line from (x1, y1) -> ( x2, y2).
A positive return value indicates the point is to the right of the line.
If the return value is 0, then the test was unsuccessful (e.g. due to testing a point exactly on the line, or exactly in line with the segment) and the result is undefined.
Definition at line 406 of file qgsgeometryutils.cpp.
|
static |
Calculates the direction of line joining two points in radians, clockwise from the north direction.
x1 | x-coordinate of line start |
y1 | y-coordinate of line start |
x2 | x-coordinate of line end |
y2 | y-coordinate of line end |
Definition at line 1146 of file qgsgeometryutils.cpp.
|
static |
Compute the intersection of a line and a circle.
If the intersection has two solutions (points), the closest point to the initial intersection point is returned.
center | the center of the circle |
radius | the radius of the circle |
linePoint1 | a first point on the line |
linePoint2 | a second point on the line |
intersection | the initial point and the returned intersection point |
Definition at line 316 of file qgsgeometryutils.cpp.
|
static |
Computes the intersection between two lines.
Z dimension is supported and is retrieved from the first 3D point amongst p1 and p2.
p1 | Point on the first line |
v1 | Direction vector of the first line |
p2 | Point on the second line |
v2 | Direction vector of the second line |
intersection | Output parameter, the intersection point |
Definition at line 238 of file qgsgeometryutils.cpp.
|
static |
Calculates the perpendicular angle to a line joining two points.
Returned angle is in radians, clockwise from the north direction.
x1 | x-coordinate of line start |
y1 | y-coordinate of line start |
x2 | x-coordinate of line end |
y2 | y-coordinate of line end |
Definition at line 1160 of file qgsgeometryutils.cpp.
Returns a middle point between points pt1 and pt2.
Z value is computed if one of this point have Z. M value is computed if one of this point have M.
pt1 | first point. |
pt2 | second point. |
Definition at line 1022 of file qgsgeometryutils.cpp.
|
static |
Ensures that an angle is in the range 0 <= angle < 2 pi.
angle | angle in radians |
Definition at line 961 of file qgsgeometryutils.cpp.
|
static |
Create a perpendicular line segment from p to segment [s1, s2].
p | The point |
s1 | The segment start point |
s2 | The segment end point |
Definition at line 1108 of file qgsgeometryutils.cpp.
|
static |
Returns a point a specified distance toward a second point.
Definition at line 417 of file qgsgeometryutils.cpp.
|
static |
Returns a list of points contained in a WKT string.
Definition at line 799 of file qgsgeometryutils.cpp.
|
static |
Returns a gml::coordinates DOM element.
Definition at line 903 of file qgsgeometryutils.cpp.
|
static |
Returns a gml::posList DOM element.
Definition at line 927 of file qgsgeometryutils.cpp.
|
static |
Returns a geoJSON coordinates string.
Definition at line 946 of file qgsgeometryutils.cpp.
|
static |
Returns a LinearRing { uint32 numPoints; Point points[numPoints]; }.
Definition at line 867 of file qgsgeometryutils.cpp.
|
static |
Returns a WKT coordinate list.
Definition at line 884 of file qgsgeometryutils.cpp.
|
inlinestatic |
Project the point on a segment.
p | The point |
s1 | The segment start point |
s2 | The segment end point |
Definition at line 163 of file qgsgeometryutils.h.
|
static |
Compute the intersection between two segments.
p1 | First segment start point |
p2 | First segment end point |
q1 | Second segment start point |
q2 | Second segment end point |
intersectionPoint | Output parameter, the intersection point |
isIntersection | Output parameter, return true if an intersection is found |
tolerance | The tolerance to use |
acceptImproperIntersection | By default, this method returns true only if segments have proper intersection. If set true, returns also true if segments have improper intersection (end of one segment on other segment ; continuous segments). |
Definition at line 257 of file qgsgeometryutils.cpp.
|
static |
Convert circular arc defined by p1, p2, p3 (p1/p3 being start resp.
end point, p2 lies on the arc) into a sequence of points.
Definition at line 641 of file qgsgeometryutils.cpp.
|
static |
Calculates midpoint on circle passing through p1 and p2, closest to given coordinate.
Z dimension is supported and is retrieved from the first 3D point amongst p1 and p2.
Definition at line 570 of file qgsgeometryutils.cpp.
|
static |
For line defined by points pt1 and pt3, find out on which side of the line is point pt3.
Returns -1 if pt3 on the left side, 1 if pt3 is on the right side or 0 if pt3 lies on the line.
Definition at line 758 of file qgsgeometryutils.cpp.
|
static |
Find self intersections in a polyline.
geom | The geometry to check |
part | The part of the geometry to check |
ring | The ring of the geometry part to check |
tolerance | The tolerance to use |
Definition at line 366 of file qgsgeometryutils.cpp.
|
static |
A Z dimension is added to point if one of the point in the list points is in 3D.
Moreover, the Z value of point is updated with.
points | List of points in which a 3D point is searched. |
point | The point to update with Z dimension and value. |
Definition at line 1202 of file qgsgeometryutils.cpp.
Returns the squared 2D distance between two points.
Definition at line 194 of file qgsgeometryutils.cpp.
|
static |
Returns the squared distance between a point and a line.
Definition at line 199 of file qgsgeometryutils.cpp.
|
static |
Calculates angle of a circular string part defined by pt1, pt2, pt3.
Definition at line 540 of file qgsgeometryutils.cpp.
|
static |
Retrieves the vertices which are before and after the interpolated point at a specified distance along a linestring (or polygon boundary).
geometry | line or polygon geometry |
distance | distance to traverse along geometry |
previousVertex | will be set to previous vertex ID |
nextVertex | will be set to next vertex ID |
Definition at line 149 of file qgsgeometryutils.cpp.
|
static |
Parses a WKT string and returns of list of blocks contained in the WKT.
wkt | WKT string in the format "TYPE1 (contents1), TYPE2 (TYPE3 (contents3), TYPE4 (contents4))" |
defaultType | default geometry type for children |
Definition at line 986 of file qgsgeometryutils.cpp.
|
static |
Parses a WKT block of the format "TYPE( contents )" and returns a pair of geometry type to contents ("Pair(wkbType, "contents")")
Definition at line 975 of file qgsgeometryutils.cpp.