22 QString QgsSmoothAlgorithm::name()
const 24 return QStringLiteral(
"smoothgeometry" );
27 QString QgsSmoothAlgorithm::displayName()
const 29 return QObject::tr(
"Smooth" );
32 QStringList QgsSmoothAlgorithm::tags()
const 34 return QObject::tr(
"smooth,curve,generalize,round,bend,corners" ).split(
',' );
37 QString QgsSmoothAlgorithm::group()
const 39 return QObject::tr(
"Vector geometry" );
42 QString QgsSmoothAlgorithm::groupId()
const 44 return QStringLiteral(
"vectorgeometry" );
47 QString QgsSmoothAlgorithm::outputName()
const 49 return QObject::tr(
"Smoothed" );
57 QString QgsSmoothAlgorithm::shortHelpString()
const 59 return QObject::tr(
"This algorithm smooths the geometries in a line or polygon layer. It creates a new layer with the " 60 "same features as the ones in the input layer, but with geometries containing a higher number of vertices " 61 "and corners in the geometries smoothed out.\n\n" 62 "The iterations parameter dictates how many smoothing iterations will be applied to each " 63 "geometry. A higher number of iterations results in smoother geometries with the cost of " 64 "greater number of nodes in the geometries.\n\n" 65 "The offset parameter controls how \"tightly\" the smoothed geometries follow the original geometries. " 66 "Smaller values results in a tighter fit, and larger values will create a looser fit.\n\n" 67 "The maximum angle parameter can be used to prevent smoothing of " 68 "nodes with large angles. Any node where the angle of the segments to either " 69 "side is larger than this will not be smoothed. For example, setting the maximum " 70 "angle to 90 degrees or lower would preserve right angles in the geometry." );
73 QgsSmoothAlgorithm *QgsSmoothAlgorithm::createInstance()
const 75 return new QgsSmoothAlgorithm();
78 QList<int> QgsSmoothAlgorithm::inputLayerTypes()
const 83 void QgsSmoothAlgorithm::initParameters(
const QVariantMap & )
90 0.25,
false, 0.0, 0.5 ) );
93 180.0,
false, 0.0, 180.0 ) );
98 mIterations = parameterAsInt( parameters, QStringLiteral(
"ITERATIONS" ), context );
99 mOffset = parameterAsDouble( parameters, QStringLiteral(
"OFFSET" ), context );
100 mMaxAngle = parameterAsDouble( parameters, QStringLiteral(
"MAX_ANGLE" ), context );
110 if ( !outputGeometry )
112 feedback->
reportError( QObject::tr(
"Error smoothing geometry %1" ).arg( feature.
id() ) );
Base class for providing feedback from a processing algorithm.
QList< QgsFeature > QgsFeatureList
A geometry is the spatial representation of a feature.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
QgsGeometry geometry() const
Returns the geometry associated with this feature.
A numeric parameter for processing algorithms.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
SourceType
Data source types enum.
Contains information about the context in which a processing algorithm is executed.
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.
virtual void reportError(const QString &error, bool fatalError=false)
Reports that the algorithm encountered an error while executing.