Skip to content
Permalink
Browse files

[processing] When running "point on surface" with "create point for

each part" option enabled, discard incoming fid fields and regenerate

Because we are potentially outputing multiple features per input
feature when this option is enabled, we can't guarantee that the
existing fid values will be unique.

Fixes #42350
  • Loading branch information
nyalldawson committed Mar 21, 2021
1 parent 1f235d6 commit 1b2ca794d2475454b8254c673832c8301370c9dd
@@ -50,6 +50,14 @@ QString QgsPointOnSurfaceAlgorithm::outputName() const
return QObject::tr( "Point" );
}

QgsFeatureSink::SinkFlags QgsPointOnSurfaceAlgorithm::sinkFlags() const
{
if ( mAllParts )
return QgsProcessingFeatureBasedAlgorithm::sinkFlags() | QgsFeatureSink::RegeneratePrimaryKey;
else
return QgsProcessingFeatureBasedAlgorithm::sinkFlags();
}

QString QgsPointOnSurfaceAlgorithm::shortHelpString() const
{
return QObject::tr( "Returns a point guaranteed to lie on the surface of a geometry." );
@@ -51,6 +51,7 @@ class QgsPointOnSurfaceAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString outputName() const override;
QgsProcessing::SourceType outputLayerType() const override { return QgsProcessing::TypeVectorPoint; }
QgsWkbTypes::Type outputWkbType( QgsWkbTypes::Type inputWkbType ) const override { Q_UNUSED( inputWkbType ) return QgsWkbTypes::Point; }
QgsFeatureSink::SinkFlags sinkFlags() const override;

bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;

0 comments on commit 1b2ca79

Please sign in to comment.