Skip to content

Commit fa3bfdd

Browse files
committed
[processing] Simplify algorithm should not run validity checks on geometries
Simplify (by its intrinsic nature) can output invalid geometries, and its processing is not affected by the presence of input geometry validity. Also tag a few other algorithms which aren't sensitive to input geometry validity. (cherry picked from commit 9b6367f)
1 parent 4be150c commit fa3bfdd

6 files changed

+18
-1
lines changed

src/analysis/processing/qgsalgorithmsimplify.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ QgsFeatureList QgsSimplifyAlgorithm::processFeature( const QgsFeature &feature,
132132
return QgsFeatureList() << f;
133133
}
134134

135+
QgsProcessingFeatureSource::Flag QgsSimplifyAlgorithm::sourceFlags() const
136+
{
137+
return QgsProcessingFeatureSource::FlagSkipGeometryValidityChecks;
138+
}
139+
135140
///@endcond
136141

137142

src/analysis/processing/qgsalgorithmsimplify.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class QgsSimplifyAlgorithm : public QgsProcessingFeatureBasedAlgorithm
5151
QString outputName() const override;
5252
bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
5353
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &, QgsProcessingFeedback *feedback ) override;
54-
54+
QgsProcessingFeatureSource::Flag sourceFlags() const override;
5555
private:
5656

5757
double mTolerance = 1.0;

src/analysis/processing/qgsalgorithmsmooth.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ QgsFeatureList QgsSmoothAlgorithm::processFeature( const QgsFeature &feature, Qg
156156
return QgsFeatureList() << f;
157157
}
158158

159+
QgsProcessingFeatureSource::Flag QgsSmoothAlgorithm::sourceFlags() const
160+
{
161+
return QgsProcessingFeatureSource::FlagSkipGeometryValidityChecks;
162+
}
163+
159164
///@endcond
160165

161166

src/analysis/processing/qgsalgorithmsmooth.h

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class QgsSmoothAlgorithm : public QgsProcessingFeatureBasedAlgorithm
4949
QgsProcessing::SourceType outputLayerType() const override;
5050
bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
5151
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
52+
QgsProcessingFeatureSource::Flag sourceFlags() const override;
5253

5354
private:
5455
int mIterations = 1;

src/analysis/processing/qgsalgorithmsnaptogrid.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ QgsFeatureList QgsSnapToGridAlgorithm::processFeature( const QgsFeature &feature
154154
return QgsFeatureList() << f;
155155
}
156156

157+
QgsProcessingFeatureSource::Flag QgsSnapToGridAlgorithm::sourceFlags() const
158+
{
159+
return QgsProcessingFeatureSource::FlagSkipGeometryValidityChecks;
160+
}
161+
157162
///@endcond
158163

159164

src/analysis/processing/qgsalgorithmsnaptogrid.h

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class QgsSnapToGridAlgorithm : public QgsProcessingFeatureBasedAlgorithm
4747
QString outputName() const override;
4848
bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
4949
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
50+
QgsProcessingFeatureSource::Flag sourceFlags() const override;
5051

5152
private:
5253
double mIntervalX = 0.0;

0 commit comments

Comments
 (0)