Skip to content

Commit 9b6367f

Browse files
committedFeb 8, 2019
[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.
1 parent 061882d commit 9b6367f

8 files changed

+24
-1
lines changed
 

‎src/analysis/processing/qgsalgorithmsimplify.cpp

Lines changed: 5 additions & 0 deletions
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class QgsSimplifyAlgorithm : public QgsProcessingFeatureBasedAlgorithm
5252
QString outputName() const override;
5353
bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
5454
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &, QgsProcessingFeedback *feedback ) override;
55-
55+
QgsProcessingFeatureSource::Flag sourceFlags() const override;
5656
private:
5757

5858
double mTolerance = 1.0;

‎src/analysis/processing/qgsalgorithmsmooth.cpp

Lines changed: 5 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 5 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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;

‎src/analysis/processing/qgsalgorithmsplitlinesbylength.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ QgsFeatureList QgsSplitLinesByLengthAlgorithm::processFeature( const QgsFeature
144144
}
145145
}
146146

147+
QgsProcessingFeatureSource::Flag QgsSplitLinesByLengthAlgorithm::sourceFlags() const
148+
{
149+
return QgsProcessingFeatureSource::FlagSkipGeometryValidityChecks;
150+
}
151+
147152

148153
///@endcond
149154

‎src/analysis/processing/qgsalgorithmsplitlinesbylength.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class QgsSplitLinesByLengthAlgorithm : public QgsProcessingFeatureBasedAlgorithm
5151
QString outputName() const override;
5252
QgsWkbTypes::Type outputWkbType( QgsWkbTypes::Type inputWkbType ) const override;
5353
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
54+
QgsProcessingFeatureSource::Flag sourceFlags() const override;
5455

5556
private:
5657

0 commit comments

Comments
 (0)
Please sign in to comment.