QGIS API Documentation
3.4.15-Madeira (e83d02e274)
|
This class offers geometry processing methods. More...
#include <qgsinternalgeometryengine.h>
Public Member Functions | |
QgsInternalGeometryEngine (const QgsGeometry &geometry) | |
The caller is responsible that the geometry is available and unchanged for the whole lifetime of this object. More... | |
QgsGeometry | densifyByCount (int extraNodesPerSegment) const |
Densifies the geometry 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 | extrude (double x, double y) const |
Will extrude a line or (segmentized) curve by a given offset and return a polygon representation of it. 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... | |
QgsGeometry | poleOfInaccessibility (double precision, double *distanceFromBoundary=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 | taperedBuffer (double startWidth, double endWidth, int segments) const |
Calculates a tapered width buffer for a (multi)curve geometry. More... | |
QgsGeometry | variableWidthBuffer (int segments, const std::function< std::unique_ptr< double[] >(const QgsLineString *line) > &widthFunction) const |
Calculates a variable width buffer for a (multi)curve geometry. More... | |
QgsGeometry | variableWidthBufferByM (int segments) const |
Calculates a variable width buffer using the m-values from a (multi)line geometry. More... | |
This class offers geometry processing methods.
The methods are available via QgsGeometry::[geometryfunction] and therefore this does not need to be accessed directly.
Definition at line 40 of file qgsinternalgeometryengine.h.
|
explicit |
The caller is responsible that the geometry is available and unchanged for the whole lifetime of this object.
geometry |
Definition at line 33 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::densifyByCount | ( | int | extraNodesPerSegment | ) | const |
Densifies the geometry 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.
Definition at line 647 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::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.
Definition at line 682 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::extrude | ( | double | x, |
double | y | ||
) | const |
Will extrude a line or (segmentized) curve by a given offset and return a polygon representation of it.
x | offset in x direction |
y | offset in y direction |
Definition at line 45 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::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.
Definition at line 490 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::poleOfInaccessibility | ( | double | precision, |
double * | distanceFromBoundary = 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.
Definition at line 235 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::taperedBuffer | ( | double | startWidth, |
double | endWidth, | ||
int | segments | ||
) | const |
Calculates a tapered width buffer for a (multi)curve geometry.
The buffer begins at a width of startWidth at the start of each curve, and ends at a width of endWidth. Note that unlike QgsGeometry::buffer() methods, startWidth and endWidth are the diameter of the buffer at these points, not the radius.
The segments argument specifies the number of segments to approximate quarter-circle curves in the buffer.
Non (multi)curve input geometries will return a null output geometry.
Definition at line 993 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::variableWidthBuffer | ( | int | segments, |
const std::function< std::unique_ptr< double[] >(const QgsLineString *line) > & | widthFunction | ||
) | const |
Calculates a variable width buffer for a (multi)curve geometry.
The width of the buffer at each node in the input linestrings is calculated by calling the specified widthFunction, which must return an array of the buffer widths for every node in the line.
The segments argument specifies the number of segments to approximate quarter-circle curves in the buffer.
Non (multi)curve input geometries will return a null output geometry.
Definition at line 888 of file qgsinternalgeometryengine.cpp.
QgsGeometry QgsInternalGeometryEngine::variableWidthBufferByM | ( | int | segments | ) | const |
Calculates a variable width buffer using the m-values from a (multi)line geometry.
The segments argument specifies the number of segments to approximate quarter-circle curves in the buffer.
Non (multi)line input geometries will return a null output geometry.
Definition at line 1025 of file qgsinternalgeometryengine.cpp.