24using namespace Qt::StringLiterals;
28QString QgsPointOnSurfaceAlgorithm::name()
const
30 return u
"pointonsurface"_s;
33QString QgsPointOnSurfaceAlgorithm::displayName()
const
35 return QObject::tr(
"Point on surface" );
38QStringList QgsPointOnSurfaceAlgorithm::tags()
const
40 return QObject::tr(
"centroid,inside,within" ).split(
',' );
43QString QgsPointOnSurfaceAlgorithm::group()
const
45 return QObject::tr(
"Vector geometry" );
48QString QgsPointOnSurfaceAlgorithm::groupId()
const
50 return u
"vectorgeometry"_s;
53QString QgsPointOnSurfaceAlgorithm::outputName()
const
55 return QObject::tr(
"Point" );
66QString QgsPointOnSurfaceAlgorithm::shortHelpString()
const
68 return QObject::tr(
"This algorithm returns a point guaranteed to lie on the surface of a geometry." );
71QString QgsPointOnSurfaceAlgorithm::shortDescription()
const
73 return QObject::tr(
"Returns a point guaranteed to lie on the surface of a geometry." );
81QgsPointOnSurfaceAlgorithm *QgsPointOnSurfaceAlgorithm::createInstance()
const
83 return new QgsPointOnSurfaceAlgorithm();
86void QgsPointOnSurfaceAlgorithm::initParameters(
const QVariantMap & )
88 auto allParts = std::make_unique<QgsProcessingParameterBoolean>(
90 QObject::tr(
"Create point on surface for each part" ),
93 allParts->setIsDynamic(
true );
95 allParts->setDynamicLayerParameterName( u
"INPUT"_s );
96 addParameter( allParts.release() );
101 mAllParts = parameterAsBoolean( parameters, u
"ALL_PARTS"_s, context );
103 if ( mDynamicAllParts )
104 mAllPartsProperty = parameters.value( u
"ALL_PARTS"_s ).value<
QgsProperty>();
117 bool allParts = mAllParts;
118 if ( mDynamicAllParts )
119 allParts = mAllPartsProperty.valueAsBool( context.
expressionContext(), allParts );
125 const int partCount = geomCollection->
partCount();
126 list.reserve( partCount );
127 for (
int i = 0; i < partCount; ++i )
131 if ( outputGeometry.
isNull() )
133 feedback->
reportError( QObject::tr(
"Error calculating point on surface for feature %1 part %2: %3" ).arg( feature.
id() ).arg( i ).arg( outputGeometry.
lastError() ) );
142 if ( outputGeometry.
isNull() )
144 feedback->
reportError( QObject::tr(
"Error calculating point on surface for feature %1: %2" ).arg( feature.
id() ).arg( outputGeometry.
lastError() ) );
@ RegeneratesPrimaryKeyInSomeScenarios
Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm ...
QFlags< ProcessingAlgorithmDocumentationFlag > ProcessingAlgorithmDocumentationFlags
Flags describing algorithm behavior for documentation purposes.
virtual QgsAbstractGeometry * clone() const =0
Clones the geometry by performing a deep copy.
QFlags< SinkFlag > SinkFlags
@ RegeneratePrimaryKey
This flag indicates, that a primary key field cannot be guaranteed to be unique and the sink should i...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
int partCount() const override
Returns count of parts contained in the geometry.
const QgsAbstractGeometry * geometryN(int n) const
Returns a const reference to a geometry from within the collection.
A geometry is the spatial representation of a feature.
QgsGeometry pointOnSurface() const
Returns a point guaranteed to lie on the surface of a geometry.
QString lastError() const
Returns an error string referring to the last error encountered either when this geometry was created...
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
bool isMultipart() const
Returns true if WKB of the geometry is of WKBMulti* type.
bool isEmpty() const
Returns true if the geometry is empty (eg a linestring with no vertices, or a collection with no geom...
Contains information about the context in which a processing algorithm is executed.
QgsExpressionContext & expressionContext()
Returns the expression context.
virtual QgsFeatureSink::SinkFlags sinkFlags() const
Returns the feature sink flags to be used for the output.
Base class for providing feedback from a processing algorithm.
virtual void reportError(const QString &error, bool fatalError=false)
Reports that the algorithm encountered an error while executing.
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...
Definition for a property.
A store for object properties.
QList< QgsFeature > QgsFeatureList