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.
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
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.
An enum based parameter for processing algorithms, allowing for selection from predefined values...
A store for object properties.
Implementation of GeometrySimplifier using the "MapToPixel" algorithm.
QgsExpressionContext & expressionContext()
Returns the expression context.
Definition for a property.
Flag
Flags controlling how QgsProcessingFeatureSource fetches features.
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.
bool hasGeometry() const
Returns true if the feature has an associated 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...