25QString QgsSplitWithLinesAlgorithm::name()
 const 
   27  return QStringLiteral( 
"splitwithlines" );
 
   30QString QgsSplitWithLinesAlgorithm::displayName()
 const 
   32  return QObject::tr( 
"Split with lines" );
 
   35QStringList QgsSplitWithLinesAlgorithm::tags()
 const 
   37  return QObject::tr( 
"split,cut,lines" ).split( 
',' );
 
   40QString QgsSplitWithLinesAlgorithm::group()
 const 
   42  return QObject::tr( 
"Vector overlay" );
 
   45QString QgsSplitWithLinesAlgorithm::groupId()
 const 
   47  return QStringLiteral( 
"vectoroverlay" );
 
   50void QgsSplitWithLinesAlgorithm::initAlgorithm( 
const QVariantMap & )
 
   57QString QgsSplitWithLinesAlgorithm::shortHelpString()
 const 
   59  return QObject::tr( 
"This algorithm splits the lines or polygons in one layer using the lines or polygon rings in another layer to define the breaking points. " 
   60                      "Intersection between geometries in both layers are considered as split points." );
 
   63QString QgsSplitWithLinesAlgorithm::shortDescription()
 const 
   65  return QObject::tr( 
"Splits the lines or polygons in one layer using the lines or polygon rings in another layer to define the breaking points." );
 
   73QgsSplitWithLinesAlgorithm *QgsSplitWithLinesAlgorithm::createInstance()
 const 
   75  return new QgsSplitWithLinesAlgorithm();
 
   85bool QgsSplitWithLinesAlgorithm::supportInPlaceEdit( 
const QgsMapLayer *l )
 const 
   87  const QgsVectorLayer *layer = qobject_cast<const QgsVectorLayer *>( l );
 
   99  std::unique_ptr<QgsFeatureSource> source( parameterAsSource( parameters, QStringLiteral( 
"INPUT" ), context ) );
 
  103  std::unique_ptr<QgsFeatureSource> linesSource( parameterAsSource( parameters, QStringLiteral( 
"LINES" ), context ) );
 
  107  bool sameLayer = parameters.value( QStringLiteral( 
"INPUT" ) ) == parameters.value( QStringLiteral( 
"LINES" ) );
 
  126  double step = source->featureCount() > 0 ? 100.0 / source->featureCount() : 1;
 
  149    const QgsFeatureIds splitFeatureCandidates = qgis::listToSet( splitFeaturesIndex.intersects( originalGeometry.
boundingBox() ) );
 
  150    if ( !splitFeatureCandidates.empty() ) 
 
  152      QVector<QgsGeometry> splittingLines;
 
  155      std::unique_ptr<QgsGeometryEngine> originalGeometryEngine;
 
  157      for ( 
QgsFeatureId splitFeatureCandidateId : splitFeatureCandidates )
 
  160        if ( sameLayer && inFeatureA.
id() == splitFeatureCandidateId )
 
  163        const QgsGeometry splitFeatureCandidate = splitFeaturesIndex.geometry( splitFeatureCandidateId );
 
  164        if ( !originalGeometryEngine )
 
  167          originalGeometryEngine->prepareGeometry();
 
  170        if ( originalGeometryEngine->intersects( splitFeatureCandidate.
constGet() ) )
 
  173          splittingLines.append( splitGeomParts );
 
  177      if ( !splittingLines.empty() )
 
  179        for ( 
const QgsGeometry &splitGeom : std::as_const( splittingLines ) )
 
  182          QVector<QgsGeometry> outGeoms;
 
  186          splitGeomEngine->prepareGeometry();
 
  187          while ( !inGeoms.empty() )
 
  198            if ( splitGeomEngine->intersects( inGeom.
constGet() ) )
 
  201              if ( splitterPList.empty() )
 
  216              QVector<QgsGeometry> newGeometries;
 
  230                  outGeoms.append( inGeom );
 
  234                  outGeoms.append( inGeom );
 
  235                  outGeoms.append( newGeometries );
 
  240                outGeoms.append( inGeom );
 
  245              outGeoms.append( inGeom );
 
  253    QVector<QgsGeometry> parts;
 
  254    for ( 
const QgsGeometry &aGeom : std::as_const( inGeoms ) )
 
  264        int numPoints = aGeom.constGet()->nCoordinates();
 
  266        if ( numPoints <= 2 )
 
  268          if ( numPoints == 2 )
 
  269            passed = !
static_cast<const QgsCurve *
>( aGeom.constGet() )->isClosed(); 
 
  276        parts.append( aGeom );
 
  292  outputs.insert( QStringLiteral( 
"OUTPUT" ), dest );
 
@ VectorPolygon
Vector polygon layers.
 
@ VectorLine
Vector line layers.
 
GeometryOperationResult
Success or failure of a geometry operation.
 
@ Success
Operation succeeded.
 
@ RegeneratesPrimaryKey
Algorithm always drops any existing primary keys or FID values and regenerates them in outputs.
 
QFlags< ProcessingAlgorithmFlag > ProcessingAlgorithmFlags
Flags indicating how and when an algorithm operates and should be exposed to users.
 
QFlags< ProcessingAlgorithmDocumentationFlag > ProcessingAlgorithmDocumentationFlags
Flags describing algorithm behavior for documentation purposes.
 
@ SupportsInPlaceEdits
Algorithm supports in-place editing.
 
virtual QgsCoordinateSequence coordinateSequence() const =0
Retrieves the sequence of geometries, rings and nodes.
 
Abstract base class for curved geometry type.
 
Wrapper for iterator of features from vector data provider or vector layer.
 
bool nextFeature(QgsFeature &f)
Fetch next feature and stores in f, returns true on success.
 
Wraps a request for features to a vector layer (or directly its vector data provider).
 
QgsFeatureRequest & setDestinationCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets the destination crs for feature's geometries.
 
QgsFeatureRequest & setNoAttributes()
Set that no attributes will be fetched.
 
@ FastInsert
Use faster inserts, at the cost of updating the passed features to reflect changes made at the provid...
 
@ RegeneratePrimaryKey
This flag indicates, that a primary key field cannot be guaranteed to be unique and the sink should i...
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
 
bool hasGeometry() const
Returns true if the feature has an associated geometry.
 
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
 
bool isCanceled() const
Tells whether the operation has been canceled already.
 
void setProgress(double progress)
Sets the current progress for the feedback object.
 
A geometry is the spatial representation of a feature.
 
QgsGeometry convertToType(Qgis::GeometryType destType, bool destMultipart=false) const
Try to convert the geometry to the requested type.
 
QVector< QgsGeometry > asGeometryCollection() const
Returns contents of the geometry as a list of geometries.
 
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
 
double hausdorffDistance(const QgsGeometry &geom) const
Returns the Hausdorff distance between this geometry and geom.
 
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
 
Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitGeometry(const QVector< QgsPointXY > &splitLine, QVector< QgsGeometry > &newGeometries, bool topological, QVector< QgsPointXY > &topologyTestPoints, bool splitFeature=true)
Splits this geometry according to a given line.
 
static QgsGeometryEngine * createGeometryEngine(const QgsAbstractGeometry *geometry, double precision=0.0, Qgis::GeosCreationFlags flags=Qgis::GeosCreationFlag::SkipEmptyInteriorRings)
Creates and returns a new geometry engine representing the specified geometry using precision on a gr...
 
Base class for all map layer types.
 
Point geometry type, with support for z-dimension and m-values.
 
virtual Qgis::ProcessingAlgorithmFlags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
 
Contains information about the context in which a processing algorithm is executed.
 
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context.
 
Custom exception class for processing related exceptions.
 
Base class for providing feedback from a processing algorithm.
 
A feature sink output for processing algorithms.
 
An input feature source (such as vector layers) parameter for processing algorithms.
 
A spatial index for QgsFeature objects.
 
@ FlagStoreFeatureGeometries
Indicates that the spatial index should also store feature geometries. This requires more memory,...
 
Represents a vector layer which manages a vector based dataset.
 
Q_INVOKABLE Qgis::GeometryType geometryType() const
Returns point, line or polygon.
 
static Qgis::GeometryType geometryType(Qgis::WkbType type)
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
 
static Qgis::WkbType multiType(Qgis::WkbType type)
Returns the multi type for a WKB type.
 
QVector< QgsRingSequence > QgsCoordinateSequence
 
QVector< QgsPointSequence > QgsRingSequence
 
QVector< QgsPoint > QgsPointSequence
 
QSet< QgsFeatureId > QgsFeatureIds
 
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features