26 QString QgsPolygonsToLinesAlgorithm::name()
const 28 return QStringLiteral(
"polygonstolines" );
31 QString QgsPolygonsToLinesAlgorithm::displayName()
const 33 return QObject::tr(
"Polygons to lines" );
36 QStringList QgsPolygonsToLinesAlgorithm::tags()
const 38 return QObject::tr(
"line,polygon,convert" ).split(
',' );
41 QString QgsPolygonsToLinesAlgorithm::group()
const 43 return QObject::tr(
"Vector creation" );
46 QString QgsPolygonsToLinesAlgorithm::groupId()
const 48 return QStringLiteral(
"vectorgeometry" );
51 QString QgsPolygonsToLinesAlgorithm::outputName()
const 53 return QObject::tr(
"Lines" );
78 QString QgsPolygonsToLinesAlgorithm::shortHelpString()
const 80 return QObject::tr(
"Converts polygons to lines" );
83 QString QgsPolygonsToLinesAlgorithm::shortDescription()
const 85 return QObject::tr(
"Converts polygons to lines." );
88 QgsPolygonsToLinesAlgorithm *QgsPolygonsToLinesAlgorithm::createInstance()
const 90 return new QgsPolygonsToLinesAlgorithm();
93 QList<int> QgsPolygonsToLinesAlgorithm::inputLayerTypes()
const 113 auto rings = extractRings( geometry.
constGet() );
117 std::unique_ptr<QgsMultiCurve> lineGeometry;
120 lineGeometry = qgis::make_unique<QgsMultiLineString>();
122 lineGeometry = qgis::make_unique<QgsMultiCurve>();
124 lineGeometry->reserve( rings.size() );
125 for (
auto ring : qgis::as_const( rings ) )
126 lineGeometry->addGeometry( ring );
131 QList<QgsCurve *> QgsPolygonsToLinesAlgorithm::extractRings(
const QgsAbstractGeometry *geom )
const 133 QList<QgsCurve *> rings;
139 rings.append( extractRings( parts.
next() ) );
141 else if (
QgsCurvePolygon *polygon = qgsgeometry_cast<QgsCurvePolygon *>( geom ) )
143 if (
auto exteriorRing = polygon->exteriorRing() )
144 rings.append( exteriorRing->clone() );
145 for (
int i = 0; i < polygon->numInteriorRings(); ++i )
147 rings.append( polygon->interiorRing( i )->clone() );
Java-style iterator for traversal of parts of a geometry.
static Type singleType(Type type)
Returns the single type for a WKB type.
Base class for providing feedback from a processing algorithm.
QList< QgsFeature > QgsFeatureList
QgsWkbTypes::Type wkbType() const
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
Curve polygon geometry type.
A geometry is the spatial representation of a feature.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
static bool hasZ(Type type)
Tests whether a WKB type contains the z-dimension.
Type
The WKB type describes the number of dimensions a geometry has.
static Type addM(Type type)
Adds the m dimension to a WKB type and returns the new type.
static Type addZ(Type type)
Adds the z dimension to a WKB type and returns the new type.
Abstract base class for all geometries.
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
QgsAbstractGeometry * next()
Returns next part of the geometry (undefined behavior if hasNext() returns false before calling next(...
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
SourceType
Data source types enum.
static bool hasM(Type type)
Tests whether a WKB type contains m values.
static Type flatType(Type type)
Returns the flat type for a WKB type.
Contains information about the context in which a processing algorithm is executed.
bool hasNext() const
Find out whether there are more parts.