diff --git a/python/core/geometry/qgsgeometry.sip.in b/python/core/geometry/qgsgeometry.sip.in index fef378108dd..bb0ad763d6f 100644 --- a/python/core/geometry/qgsgeometry.sip.in +++ b/python/core/geometry/qgsgeometry.sip.in @@ -1423,10 +1423,13 @@ An empty geometry will be returned in the case of errors. .. versionadded:: 3.0 %End - void convertToStraightSegment(); + void convertToStraightSegment( double tolerance = M_PI / 180., QgsAbstractGeometry::SegmentationToleranceType toleranceType = QgsAbstractGeometry::MaximumAngle ); %Docstring Converts the geometry to straight line segments, if it is a curved geometry type. +:param tolerance: segmentation tolerance +:param toleranceType: maximum segmentation angle or maximum difference between approximation and curve + .. versionadded:: 2.10 .. seealso:: :py:func:`requiresConversionToStraightSegments` diff --git a/src/core/geometry/qgsgeometry.cpp b/src/core/geometry/qgsgeometry.cpp index 10aa1326bc3..352fbd0c685 100644 --- a/src/core/geometry/qgsgeometry.cpp +++ b/src/core/geometry/qgsgeometry.cpp @@ -2312,14 +2312,14 @@ QgsGeometry QgsGeometry::polygonize( const QVector &geometryList ) return result; } -void QgsGeometry::convertToStraightSegment() +void QgsGeometry::convertToStraightSegment( double tolerance, QgsAbstractGeometry::SegmentationToleranceType toleranceType ) { if ( !d->geometry || !requiresConversionToStraightSegments() ) { return; } - std::unique_ptr< QgsAbstractGeometry > straightGeom( d->geometry->segmentize() ); + std::unique_ptr< QgsAbstractGeometry > straightGeom( d->geometry->segmentize( tolerance, toleranceType ) ); reset( std::move( straightGeom ) ); } diff --git a/src/core/geometry/qgsgeometry.h b/src/core/geometry/qgsgeometry.h index 84802e7749e..4bc6232a19b 100644 --- a/src/core/geometry/qgsgeometry.h +++ b/src/core/geometry/qgsgeometry.h @@ -1413,10 +1413,12 @@ class CORE_EXPORT QgsGeometry /** * Converts the geometry to straight line segments, if it is a curved geometry type. + * \param tolerance segmentation tolerance + * \param toleranceType maximum segmentation angle or maximum difference between approximation and curve * \since QGIS 2.10 * \see requiresConversionToStraightSegments */ - void convertToStraightSegment(); + void convertToStraightSegment( double tolerance = M_PI / 180., QgsAbstractGeometry::SegmentationToleranceType toleranceType = QgsAbstractGeometry::MaximumAngle ); /** * Returns true if the geometry is a curved geometry type which requires conversion to