18#ifndef QGSPROCESSINGUTILS_H
19#define QGSPROCESSINGUTILS_H
67 static QList< QgsRasterLayer * > compatibleRasterLayers(
QgsProject *project,
bool sort =
true );
87 static QList< QgsVectorLayer * > compatibleVectorLayers(
QgsProject *project,
88 const QList< int > &sourceTypes = QList< int >(),
107 static QList<QgsMeshLayer *> compatibleMeshLayers(
QgsProject *project,
bool sort =
true );
125 static QList<QgsPluginLayer *> compatiblePluginLayers(
QgsProject *project,
bool sort =
true );
143 static QList<QgsPointCloudLayer *> compatiblePointCloudLayers(
QgsProject *project,
bool sort =
true );
161 static QList<QgsAnnotationLayer *> compatibleAnnotationLayers(
QgsProject *project,
bool sort =
true );
172 static QList< QgsMapLayer * > compatibleLayers(
QgsProject *project,
bool sort =
true );
180 static QString encodeProviderKeyAndUri(
const QString &providerKey,
const QString &uri );
193 static bool decodeProviderKeyAndUri(
const QString &
string, QString &providerKey
SIP_OUT, QString &uri
SIP_OUT );
250 static QString normalizeLayerSource( const QString &source );
258 static QString variantToPythonLiteral( const QVariant &value );
265 static QString stringToPythonLiteral( const QString &
string );
290 const QVariantMap &createOptions = QVariantMap(),
291 const QStringList &datasourceOptions = QStringList(),
292 const QStringList &layerOptions = QStringList(),
293 QgsFeatureSink::SinkFlags sinkFlags = QgsFeatureSink::SinkFlags(),
340 static QVariant generateIteratingDestination( const QVariant &input, const QVariant &
id,
QgsProcessingContext &context );
354 static QString generateTempFilename( const QString &basename, const
QgsProcessingContext *context =
nullptr );
384 static QString convertToCompatibleFormat( const
QgsVectorLayer *layer,
385 bool selectedFeaturesOnly,
386 const QString &baseName,
387 const QStringList &compatibleFormats,
388 const QString &preferredFormat,
391 long long featureLimit = -1,
392 const QString &filterExpression = QString() );
428 static QString convertToCompatibleFormatAndLayerName( const
QgsVectorLayer *layer,
429 bool selectedFeaturesOnly,
430 const QString &baseName,
431 const QStringList &compatibleFormats,
432 const QString &preferredFormat,
436 long long featureLimit = -1,
437 const QString &filterExpression = QString() );
456 static QList<
int> fieldNamesToIndices( const QStringList &fieldNames, const
QgsFields &fields );
462 static
QgsFields indicesToFields( const QList<
int> &indices, const
QgsFields &fields );
475 static QString defaultVectorExtension();
488 static QString defaultRasterExtension();
500 static QString defaultPointCloudExtension();
508 static QVariantMap removePointerValuesFromMap( const QVariantMap &map );
517 static QVariantMap preprocessQgisProcessParameters( const QVariantMap ¶meters,
bool &ok, QString &error );
527 const QList<
int > &sourceTypes = QList<
int >() );
541 template< typename T> static QList< T * > compatibleMapLayers(
QgsProject *project,
bool sort = true );
575 Q_DECL_DEPRECATED static
QgsMapLayer *loadMapLayerFromString( const QString &
string, LayerHint typeHint = LayerHint::UnknownType )
SIP_DEPRECATED ;
577 static
void parseDestinationString( QString &destination, QString &providerKey, QString &uri, QString &layerName, QString &format, QMap<QString, QVariant> &options,
bool &useWriter, QString &extension );
579 friend class TestQgsProcessing;
598 FlagSkipGeometryValidityChecks = 1 << 1,
600 Q_DECLARE_FLAGS( Flags, Flag )
615 long long featureLimit = -1,
const QString &filterExpression = QString() );
632 long long featureCount()
const override;
633 QString sourceName()
const override;
634 QSet<QVariant> uniqueValues(
int fieldIndex,
int limit = -1 )
const override;
635 QVariant minimumValue(
int fieldIndex )
const override;
636 QVariant maximumValue(
int fieldIndex )
const override;
639 SpatialIndexPresence hasSpatialIndex()
const override;
656 bool mOwnsSource = false;
658 std::function<
void( const
QgsFeature & ) > mInvalidGeometryCallback;
659 std::function<
void( const
QgsFeature & ) > mTransformErrorCallback;
661 std::function<
void( const
QgsFeature & ) > mInvalidGeometryCallbackSkip;
662 std::function<
void( const
QgsFeature & ) > mInvalidGeometryCallbackAbort;
664 long long mFeatureLimit = -1;
665 QString mFilterExpression;
698 bool addFeature(
QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() )
override;
699 bool addFeatures(
QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() )
override;
700 bool addFeatures(
QgsFeatureIterator &iterator, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() )
override;
706 bool mOwnsSink =
false;
WkbType
The WKB type describes the number of dimensions a geometry has.
Represents a map layer containing a set of georeferenced annotations, e.g.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Wrapper for iterator of features from vector data provider or vector layer.
This class wraps a request for features to a vector layer (or directly its vector data provider).
An interface for objects which accept features via addFeature(s) methods.
An interface for objects which provide features via a getFeatures method.
FeatureAvailability
Possible return value for hasFeatures() to determine if a source is empty.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Container of fields for a vector layer.
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
Base class for all map layer types.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Base class for plugin layers.
Represents a map layer supporting display of point clouds.
Abstract base class for processing algorithms.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
QgsProxyFeatureSink subclass which reports feature addition errors to a QgsProcessingContext.
QgsFeatureSource subclass which proxies methods to an underlying QgsFeatureSource,...
Flag
Flags controlling how QgsProcessingFeatureSource fetches features.
Base class for providing feedback from a processing algorithm.
Abstract base class for processing providers.
Utility functions for use with processing classes.
LayerHint
Layer type hints.
@ UnknownType
Unknown layer type.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
A simple feature sink which proxies feature addition on to another feature sink.
Represents a raster layer.
A rectangle specified with double values.
Defines the parameters used to remap features when creating a QgsRemappingProxyFeatureSink.
Represents a vector layer which manages a vector based data sets.
Implements a map layer that is dedicated to rendering of vector tiles.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call
#define SIP_MONKEYPATCH_SCOPEENUM
#define SIP_THROW(name,...)
QList< QgsFeature > QgsFeatureList
QSet< QgsFeatureId > QgsFeatureIds
const QgsCoordinateReferenceSystem & crs