22 QString QgsSimplifyAlgorithm::name()
const 24 return QStringLiteral(
"simplifygeometries" );
27 QString QgsSimplifyAlgorithm::displayName()
const 29 return QObject::tr(
"Simplify" );
32 QStringList QgsSimplifyAlgorithm::tags()
const 34 return QObject::tr(
"simplify,generalize,douglas,peucker,visvalingam" ).split(
',' );
37 QString QgsSimplifyAlgorithm::group()
const 39 return QObject::tr(
"Vector geometry" );
42 QString QgsSimplifyAlgorithm::groupId()
const 44 return QStringLiteral(
"vectorgeometry" );
47 QString QgsSimplifyAlgorithm::outputName()
const 49 return QObject::tr(
"Simplified" );
52 QString QgsSimplifyAlgorithm::shortHelpString()
const 54 return QObject::tr(
"This algorithm simplifies the geometries in a line or polygon layer. It creates a new layer " 55 "with the same features as the ones in the input layer, but with geometries containing a lower number of vertices.\n\n" 56 "The algorithm gives a choice of simplification methods, including distance based " 57 "(the \"Douglas-Peucker\" algorithm), area based (\"Visvalingam\" algorithm) and snapping geometries to a grid." );
60 QgsSimplifyAlgorithm *QgsSimplifyAlgorithm::createInstance()
const 62 return new QgsSimplifyAlgorithm();
65 QList<int> QgsSimplifyAlgorithm::inputLayerTypes()
const 70 void QgsSimplifyAlgorithm::initParameters(
const QVariantMap & )
73 methods << QObject::tr(
"Distance (Douglas-Peucker)" )
74 << QObject::tr(
"Snap to grid" )
75 << QObject::tr(
"Area (Visvalingam)" );
78 QStringLiteral(
"METHOD" ),
79 QObject::tr(
"Simplification method" ),
80 methods,
false, 0 ) );
81 std::unique_ptr< QgsProcessingParameterDistance > tolerance = qgis::make_unique< QgsProcessingParameterDistance >( QStringLiteral(
"TOLERANCE" ),
82 QObject::tr(
"Tolerance" ), 1.0, QStringLiteral(
"INPUT" ),
false, 0, 10000000.0 );
83 tolerance->setIsDynamic(
true );
85 tolerance->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
86 addParameter( tolerance.release() );
91 mTolerance = parameterAsDouble( parameters, QStringLiteral(
"TOLERANCE" ), context );
93 if ( mDynamicTolerance )
94 mToleranceProperty = parameters.value( QStringLiteral(
"TOLERANCE" ) ).value<
QgsProperty >();
112 double tolerance = mTolerance;
113 if ( mDynamicTolerance )
114 tolerance = mToleranceProperty.valueAsDouble( context.
expressionContext(), tolerance );
115 outputGeometry = inputGeometry.
simplify( tolerance );
119 if ( !mDynamicTolerance )
121 outputGeometry = mSimplifier->
simplify( inputGeometry );
125 double tolerance = mToleranceProperty.valueAsDouble( context.
expressionContext(), mTolerance );
127 outputGeometry = simplifier.
simplify( inputGeometry );
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...
Positive double value (including 0)
SimplifyAlgorithm
Types of simplification algorithms that can be used.
bool hasGeometry() const
Returns true if the feature has an associated geometry.
An enum based parameter for processing algorithms, allowing for selection from predefined values...
QgsGeometry geometry() const
Returns the geometry associated with this feature.
A store for object properties.
Implementation of GeometrySimplifier using the "MapToPixel" algorithm.
QgsExpressionContext & expressionContext()
Returns the expression context.
Definition for a property.
QgsGeometry simplify(double tolerance) const
Returns a simplified version of this geometry using a specified tolerance value.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
The geometries can be simplified using the current map2pixel context state.
Contains information about the context in which a processing algorithm is executed.
The simplification uses the distance between points to remove duplicate points.
static bool isDynamic(const QVariantMap ¶meters, const QString &name)
Returns true if the parameter with matching name is a dynamic parameter, and must be evaluated once f...