@@ -53,6 +53,28 @@ QString QgsPolygonsToLinesAlgorithm::outputName() const
53
53
return QObject::tr ( " Lines" );
54
54
}
55
55
56
+ QgsProcessing::SourceType QgsPolygonsToLinesAlgorithm::outputLayerType () const
57
+ {
58
+ return QgsProcessing::TypeVectorLine;
59
+ }
60
+
61
+ QgsWkbTypes::Type QgsPolygonsToLinesAlgorithm::outputWkbType ( QgsWkbTypes::Type inputWkbType ) const
62
+ {
63
+ QgsWkbTypes::Type wkbType = QgsWkbTypes::Unknown;
64
+
65
+ if ( QgsWkbTypes::singleType ( QgsWkbTypes::flatType ( inputWkbType ) ) == QgsWkbTypes::Polygon )
66
+ wkbType = QgsWkbTypes::MultiLineString;
67
+ else if ( QgsWkbTypes::singleType ( QgsWkbTypes::flatType ( inputWkbType ) ) == QgsWkbTypes::CurvePolygon )
68
+ wkbType = QgsWkbTypes::MultiCurve;
69
+
70
+ if ( QgsWkbTypes::hasM ( inputWkbType ) )
71
+ wkbType = QgsWkbTypes::addM ( wkbType );
72
+ if ( QgsWkbTypes::hasZ ( inputWkbType ) )
73
+ wkbType = QgsWkbTypes::addZ ( wkbType );
74
+
75
+ return wkbType;
76
+ }
77
+
56
78
QString QgsPolygonsToLinesAlgorithm::shortHelpString () const
57
79
{
58
80
return QObject::tr ( " Converts polygons to lines" );
@@ -70,7 +92,7 @@ QgsPolygonsToLinesAlgorithm *QgsPolygonsToLinesAlgorithm::createInstance() const
70
92
71
93
QList<int > QgsPolygonsToLinesAlgorithm::inputLayerTypes () const
72
94
{
73
- return QList< int >() << QgsProcessing::TypeVectorPolygon;
95
+ return QList<int >() << QgsProcessing::TypeVectorPolygon;
74
96
}
75
97
76
98
QgsFeatureList QgsPolygonsToLinesAlgorithm::processFeature ( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback * )
@@ -90,7 +112,7 @@ QgsGeometry QgsPolygonsToLinesAlgorithm::convertToLines( const QgsGeometry &geom
90
112
{
91
113
auto rings = extractRings ( geometry.constGet () );
92
114
93
- QgsWkbTypes::Type resultType = outWkbType ( geometry.wkbType () );
115
+ QgsWkbTypes::Type resultType = outputWkbType ( geometry.wkbType () );
94
116
95
117
std::unique_ptr<QgsMultiCurve> lineGeometry;
96
118
@@ -105,23 +127,6 @@ QgsGeometry QgsPolygonsToLinesAlgorithm::convertToLines( const QgsGeometry &geom
105
127
return QgsGeometry ( lineGeometry.release () );
106
128
}
107
129
108
- QgsWkbTypes::Type QgsPolygonsToLinesAlgorithm::outWkbType ( QgsWkbTypes::Type polygonWkbType ) const
109
- {
110
- QgsWkbTypes::Type wkbType = QgsWkbTypes::NoGeometry;
111
-
112
- if ( QgsWkbTypes::singleType ( QgsWkbTypes::flatType ( polygonWkbType ) ) == QgsWkbTypes::Polygon )
113
- wkbType = QgsWkbTypes::MultiLineString;
114
- else if ( QgsWkbTypes::singleType ( QgsWkbTypes::flatType ( polygonWkbType ) ) == QgsWkbTypes::CurvePolygon )
115
- wkbType = QgsWkbTypes::MultiCurve;
116
-
117
- if ( QgsWkbTypes::hasM ( polygonWkbType ) )
118
- wkbType = QgsWkbTypes::addM ( wkbType );
119
- if ( QgsWkbTypes::hasZ ( polygonWkbType ) )
120
- wkbType = QgsWkbTypes::addZ ( wkbType );
121
-
122
- return wkbType;
123
- }
124
-
125
130
QList<QgsCurve *> QgsPolygonsToLinesAlgorithm::extractRings ( const QgsAbstractGeometry *geom ) const
126
131
{
127
132
QList<QgsCurve *> rings;
0 commit comments