25QString QgsFixGeometriesAlgorithm::name()
const
27 return QStringLiteral(
"fixgeometries" );
30QString QgsFixGeometriesAlgorithm::displayName()
const
32 return QObject::tr(
"Fix geometries" );
35QStringList QgsFixGeometriesAlgorithm::tags()
const
37 return QObject::tr(
"repair,invalid,geometry,make,valid,error" ).split(
',' );
40QString QgsFixGeometriesAlgorithm::group()
const
42 return QObject::tr(
"Vector geometry" );
45QString QgsFixGeometriesAlgorithm::groupId()
const
47 return QStringLiteral(
"vectorgeometry" );
55QString QgsFixGeometriesAlgorithm::outputName()
const
57 return QObject::tr(
"Fixed geometries" );
65QString QgsFixGeometriesAlgorithm::shortHelpString()
const
67 return QObject::tr(
"This algorithm attempts to create a valid representation of a given invalid geometry without "
68 "losing any of the input vertices. Already-valid geometries are returned without further intervention. "
69 "Always outputs multi-geometry layer.\n\n"
70 "NOTE: M values will be dropped from the output." );
73QgsFixGeometriesAlgorithm *QgsFixGeometriesAlgorithm::createInstance()
const
75 return new QgsFixGeometriesAlgorithm();
78bool QgsFixGeometriesAlgorithm::supportInPlaceEdit(
const QgsMapLayer *l )
const
80 const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
90void QgsFixGeometriesAlgorithm::initParameters(
const QVariantMap & )
92 std::unique_ptr< QgsProcessingParameterEnum> methodParameter = std::make_unique< QgsProcessingParameterEnum >(
93 QStringLiteral(
"METHOD" ),
94 QObject::tr(
"Repair method" ),
95 QStringList{ QObject::tr(
"Linework" ), QObject::tr(
"Structure" ) },
98#if GEOS_VERSION_MAJOR==3 && GEOS_VERSION_MINOR<10
99 methodParameter->setDefaultValue( 0 );
101 methodParameter->setDefaultValue( 1 );
103 addParameter( methodParameter.release() );
108 mMethod =
static_cast< Qgis::MakeValidMethod>( parameterAsInt( parameters, QStringLiteral(
"METHOD" ), context ) );
109#if GEOS_VERSION_MAJOR==3 && GEOS_VERSION_MINOR<10
112 throw QgsProcessingException(
"The structured method to make geometries valid requires a QGIS build based on GEOS 3.10 or later" );
126 if ( outputGeometry.
isNull() )
128 feedback->
pushInfo( QObject::tr(
"makeValid failed for feature %1 " ).arg( feature.
id() ) );
138 QVector< QgsGeometry > matchingParts;
144 if ( !matchingParts.empty() )
150 if ( outputGeometry.
type() != Qgis::GeometryType::Point )
MakeValidMethod
Algorithms to use when repairing invalid geometries.
@ Structure
Structured method, first makes all rings valid and then merges shells and subtracts holes from shells...
WkbType
The WKB type describes the number of dimensions a geometry has.
@ GeometryCollection
GeometryCollection.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
void clearGeometry()
Removes any geometry associated with the feature.
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.
static QgsGeometry collectGeometry(const QVector< QgsGeometry > &geometries)
Creates a new multipart geometry from a list of QgsGeometry objects.
QVector< QgsGeometry > asGeometryCollection() const
Returns contents of the geometry as a list of geometries.
Qgis::WkbType wkbType() const SIP_HOLDGIL
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
QgsGeometry makeValid(Qgis::MakeValidMethod method=Qgis::MakeValidMethod::Linework, bool keepCollapsed=false) const SIP_THROW(QgsNotSupportedException)
Attempts to make an invalid geometry valid without losing vertices.
bool convertToMultiType()
Converts single type geometry into multitype geometry e.g.
Base class for all map layer types.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
bool supportInPlaceEdit(const QgsMapLayer *layer) const override
Checks whether this algorithm supports in-place editing on the given layer Default implementation for...
Flag
Flags controlling how QgsProcessingFeatureSource fetches features.
@ FlagSkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
Base class for providing feedback from a processing algorithm.
virtual void pushInfo(const QString &info)
Pushes a general informational message from the algorithm.
Represents a vector layer which manages a vector based data sets.
bool isSpatial() const FINAL
Returns true if this is a geometry layer and false in case of NoGeometry (table only) or UnknownGeome...
Q_INVOKABLE Qgis::WkbType wkbType() const FINAL
Returns the WKBType or WKBUnknown in case of error.
static Qgis::GeometryType geometryType(Qgis::WkbType type) SIP_HOLDGIL
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
static QString displayString(Qgis::WkbType type) SIP_HOLDGIL
Returns a non-translated display string type for a WKB type, e.g., the geometry name used in WKT geom...
static bool hasM(Qgis::WkbType type) SIP_HOLDGIL
Tests whether a WKB type contains m values.
static Qgis::WkbType flatType(Qgis::WkbType type) SIP_HOLDGIL
Returns the flat type for a WKB type.
static Qgis::WkbType promoteNonPointTypesToMulti(Qgis::WkbType type) SIP_HOLDGIL
Promotes a WKB geometry type to its multi-type equivalent, with the exception of point geometry types...
QList< QgsFeature > QgsFeatureList