Skip to content

Commit

Permalink
Add invalid geometry handling method to processing context
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Apr 26, 2017
1 parent 06a20b9 commit f3cfb8b
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 15 deletions.
18 changes: 12 additions & 6 deletions python/core/processing/qgsprocessingcontext.sip
Expand Up @@ -72,14 +72,20 @@ class QgsProcessingContext
Sets the expression ``context``.
%End

};





QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const;
%Docstring
Returns the behavior used for checking invalid geometries in input layers.
\see setInvalidGeometryCheck()
:rtype: QgsFeatureRequest.InvalidGeometryCheck
%End

void setInvalidGeometryCheck( const QgsFeatureRequest::InvalidGeometryCheck &check );
%Docstring
Sets the behavior used for checking invalid geometries in input layers.
\see invalidGeometryCheck()
%End

};
QFlags<QgsProcessingContext::Flag> operator|(QgsProcessingContext::Flag f1, QFlags<QgsProcessingContext::Flag> f2);


Expand Down
3 changes: 3 additions & 0 deletions python/plugins/processing/tools/general.py
Expand Up @@ -108,4 +108,7 @@ def createContext():
if use_selection:
context.setFlags(QgsProcessingContext.UseSelection)

invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
context.setInvalidGeometryCheck(invalid_features_method)

return context
23 changes: 14 additions & 9 deletions src/core/processing/qgsprocessingcontext.h
Expand Up @@ -22,6 +22,7 @@
#include "qgis.h"
#include "qgsproject.h"
#include "qgsexpressioncontext.h"
#include "qgsfeaturerequest.h"

/**
* \class QgsProcessingContext
Expand Down Expand Up @@ -80,22 +81,26 @@ class CORE_EXPORT QgsProcessingContext
*/
void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }

/**
* Returns the behavior used for checking invalid geometries in input layers.
* \see setInvalidGeometryCheck()
*/
QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const { return mInvalidGeometryCheck; }

/**
* Sets the behavior used for checking invalid geometries in input layers.
* \see invalidGeometryCheck()
*/
void setInvalidGeometryCheck( const QgsFeatureRequest::InvalidGeometryCheck &check ) { mInvalidGeometryCheck = check; }

private:

QgsProcessingContext::Flags mFlags = 0;

QPointer< QgsProject > mProject;

QgsExpressionContext mExpressionContext;
QgsFeatureRequest::InvalidGeometryCheck mInvalidGeometryCheck = QgsFeatureRequest::GeometryNoCheck;

};







Q_DECLARE_OPERATORS_FOR_FLAGS( QgsProcessingContext::Flags )

#endif // QGSPROCESSINGPARAMETERS_H
Expand Down

0 comments on commit f3cfb8b

Please sign in to comment.