QGIS API Documentation 3.41.0-Master (af5edcb665c)
Loading...
Searching...
No Matches
qgsalgorithmpromotetomultipart.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsalgorithmpromotetomultipart.cpp
3 ---------------------
4 begin : April 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19#include "qgsvectorlayer.h"
20
22
23QString QgsPromoteToMultipartAlgorithm::name() const
24{
25 return QStringLiteral( "promotetomulti" );
26}
27
28QString QgsPromoteToMultipartAlgorithm::displayName() const
29{
30 return QObject::tr( "Promote to multipart" );
31}
32
33QStringList QgsPromoteToMultipartAlgorithm::tags() const
34{
35 return QObject::tr( "multi,single,multiple,convert,force,parts" ).split( ',' );
36}
37
38QString QgsPromoteToMultipartAlgorithm::group() const
39{
40 return QObject::tr( "Vector geometry" );
41}
42
43QString QgsPromoteToMultipartAlgorithm::groupId() const
44{
45 return QStringLiteral( "vectorgeometry" );
46}
47
48QString QgsPromoteToMultipartAlgorithm::outputName() const
49{
50 return QObject::tr( "Multiparts" );
51}
52
53QString QgsPromoteToMultipartAlgorithm::shortHelpString() const
54{
55 return QObject::tr( "This algorithm takes a vector layer with singlepart geometries and generates a new one in which all geometries are "
56 "multipart. Input features which are already multipart features will remain unchanged." )
57 + QStringLiteral( "\n\n" ) + QObject::tr( "This algorithm can be used to force geometries to multipart types in order to be compatible with data providers "
58 "with strict singlepart/multipart compatibility checks." )
59 + QStringLiteral( "\n\n" ) + QObject::tr( "See the 'Collect geometries' or 'Aggregate' algorithms for alternative options." );
60}
61
62QgsPromoteToMultipartAlgorithm *QgsPromoteToMultipartAlgorithm::createInstance() const
63{
64 return new QgsPromoteToMultipartAlgorithm();
65}
66
67bool QgsPromoteToMultipartAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
68{
69 const QgsVectorLayer *layer = qobject_cast<const QgsVectorLayer *>( l );
70 if ( !layer )
71 return false;
72
74 return false;
75 return QgsWkbTypes::isMultiType( layer->wkbType() );
76}
77
78Qgis::WkbType QgsPromoteToMultipartAlgorithm::outputWkbType( Qgis::WkbType inputWkbType ) const
79{
80 return QgsWkbTypes::multiType( inputWkbType );
81}
82
83Qgis::ProcessingFeatureSourceFlags QgsPromoteToMultipartAlgorithm::sourceFlags() const
84{
86}
87
88QgsFeatureList QgsPromoteToMultipartAlgorithm::processFeature( const QgsFeature &feature, QgsProcessingContext &, QgsProcessingFeedback * )
89{
90 QgsFeature f = feature;
91 if ( f.hasGeometry() && !f.geometry().isMultipart() )
92 {
93 QgsGeometry g = f.geometry();
95 f.setGeometry( g );
96 }
97 return QgsFeatureList() << f;
98}
99
@ SkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:256
QFlags< ProcessingFeatureSourceFlag > ProcessingFeatureSourceFlags
Flags which control how QgsProcessingFeatureSource fetches features.
Definition qgis.h:3507
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
QgsGeometry geometry
Definition qgsfeature.h:69
bool hasGeometry() const
Returns true if the feature has an associated geometry.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
A geometry is the spatial representation of a feature.
bool isMultipart() const
Returns true if WKB of the geometry is of WKBMulti* type.
bool convertToMultiType()
Converts single type geometry into multitype geometry e.g.
Base class for all map layer types.
Definition qgsmaplayer.h:76
Contains information about the context in which a processing algorithm is executed.
bool supportInPlaceEdit(const QgsMapLayer *layer) const override
Checks whether this algorithm supports in-place editing on the given layer Default implementation for...
Base class for providing feedback from a processing algorithm.
Represents a vector layer which manages a vector based data sets.
Q_INVOKABLE Qgis::WkbType wkbType() const FINAL
Returns the WKBType or WKBUnknown in case of error.
static bool isMultiType(Qgis::WkbType type)
Returns true if the WKB type is a multi type.
static Qgis::WkbType multiType(Qgis::WkbType type)
Returns the multi type for a WKB type.
QList< QgsFeature > QgsFeatureList