QGIS API Documentation 3.99.0-Master (26c88405ac0)
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
20#include "qgsvectorlayer.h"
21
23
24QString QgsPromoteToMultipartAlgorithm::name() const
25{
26 return QStringLiteral( "promotetomulti" );
27}
28
29QString QgsPromoteToMultipartAlgorithm::displayName() const
30{
31 return QObject::tr( "Promote to multipart" );
32}
33
34QStringList QgsPromoteToMultipartAlgorithm::tags() const
35{
36 return QObject::tr( "multi,single,multiple,convert,force,parts" ).split( ',' );
37}
38
39QString QgsPromoteToMultipartAlgorithm::group() const
40{
41 return QObject::tr( "Vector geometry" );
42}
43
44QString QgsPromoteToMultipartAlgorithm::groupId() const
45{
46 return QStringLiteral( "vectorgeometry" );
47}
48
49QString QgsPromoteToMultipartAlgorithm::outputName() const
50{
51 return QObject::tr( "Multiparts" );
52}
53
54QString QgsPromoteToMultipartAlgorithm::shortHelpString() const
55{
56 return QObject::tr( "This algorithm takes a vector layer with singlepart geometries and generates a new one in which all geometries are "
57 "multipart. Input features which are already multipart features will remain unchanged." )
58 + QStringLiteral( "\n\n" ) + QObject::tr( "This algorithm can be used to force geometries to multipart types in order to be compatible with data providers "
59 "with strict singlepart/multipart compatibility checks." )
60 + QStringLiteral( "\n\n" ) + QObject::tr( "See the 'Collect geometries' or 'Aggregate' algorithms for alternative options." );
61}
62
63QString QgsPromoteToMultipartAlgorithm::shortDescription() const
64{
65 return QObject::tr( "Generates a vector layer in which all geometries are multipart." );
66}
67
68QgsPromoteToMultipartAlgorithm *QgsPromoteToMultipartAlgorithm::createInstance() const
69{
70 return new QgsPromoteToMultipartAlgorithm();
71}
72
73bool QgsPromoteToMultipartAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
74{
75 const QgsVectorLayer *layer = qobject_cast<const QgsVectorLayer *>( l );
76 if ( !layer )
77 return false;
78
80 return false;
81 return QgsWkbTypes::isMultiType( layer->wkbType() );
82}
83
84Qgis::WkbType QgsPromoteToMultipartAlgorithm::outputWkbType( Qgis::WkbType inputWkbType ) const
85{
86 return QgsWkbTypes::multiType( inputWkbType );
87}
88
89Qgis::ProcessingFeatureSourceFlags QgsPromoteToMultipartAlgorithm::sourceFlags() const
90{
92}
93
94QgsFeatureList QgsPromoteToMultipartAlgorithm::processFeature( const QgsFeature &feature, QgsProcessingContext &, QgsProcessingFeedback * )
95{
96 QgsFeature f = feature;
97 if ( f.hasGeometry() && !f.geometry().isMultipart() )
98 {
99 QgsGeometry g = f.geometry();
101 f.setGeometry( g );
102 }
103 return QgsFeatureList() << f;
104}
105
@ SkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
Definition qgis.h:3711
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:277
QFlags< ProcessingFeatureSourceFlag > ProcessingFeatureSourceFlags
Flags which control how QgsProcessingFeatureSource fetches features.
Definition qgis.h:3722
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:80
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 dataset.
Q_INVOKABLE Qgis::WkbType wkbType() const final
Returns the WKBType or WKBUnknown in case of error.
static Qgis::WkbType multiType(Qgis::WkbType type)
Returns the multi type for a WKB type.
static Q_INVOKABLE bool isMultiType(Qgis::WkbType type)
Returns true if the WKB type is a multi type.
QList< QgsFeature > QgsFeatureList