QGIS API Documentation 3.39.0-Master (3aed037ce22)
Loading...
Searching...
No Matches
qgsvectorlayerutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayerutils.h
3 ---------------------
4 Date : October 2016
5 Copyright : (C) 2016 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSVECTORLAYERUTILS_H
17#define QGSVECTORLAYERUTILS_H
18
19#include "qgis_core.h"
20#include "qgsgeometry.h"
22#include "qgsfeaturesink.h"
23
25class QgsSymbolLayer;
27
28
29#ifndef SIP_RUN
30
32{
33 bool hasEffects = false;
34
35 // masked symbol layers
36 QSet<QString> symbolLayerIds;
37};
38
40typedef QHash<QString, QgsMaskedLayer> QgsMaskedLayers;
41
42#endif
43
51class CORE_EXPORT QgsVectorLayerUtils
52{
53 public:
54
62 {
63 public:
64
66
70 QList<QgsVectorLayer *> layers() const;
71
75 QgsFeatureIds duplicatedFeatures( QgsVectorLayer *layer ) const;
76
77
78 private:
79 QMap<QgsVectorLayer *, QgsFeatureIds> mDuplicatedFeatures;
80 friend class QgsVectorLayerUtils;
81
85 void setDuplicatedFeatures( QgsVectorLayer *layer, const QgsFeatureIds &ids );
86 };
87
95 class CORE_EXPORT QgsFeatureData
96 {
97 public:
98
102 QgsFeatureData( const QgsGeometry &geometry = QgsGeometry(), const QgsAttributeMap &attributes = QgsAttributeMap() );
103
105 QgsGeometry geometry() const;
106
108 QgsAttributeMap attributes() const;
109
110 private:
111 QgsGeometry mGeometry;
112 QgsAttributeMap mAttributes;
113 };
114
115 // SIP does not like "using", use legacy typedef
117 typedef QList<QgsVectorLayerUtils::QgsFeatureData> QgsFeaturesDataList;
118
127 static QgsFeatureIterator getValuesIterator( const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly );
128
139 static QList< QVariant > getValues( const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly = false, QgsFeedback *feedback = nullptr );
140
153 static QList< double > getDoubleValues( const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly = false, int *nullCount = nullptr, QgsFeedback *feedback = nullptr );
154
161 static bool valueExists( const QgsVectorLayer *layer, int fieldIndex, const QVariant &value, const QgsFeatureIds &ignoreIds = QgsFeatureIds() );
162
168 static QVariant createUniqueValue( const QgsVectorLayer *layer, int fieldIndex, const QVariant &seed = QVariant() );
169
176 static QVariant createUniqueValueFromCache( const QgsVectorLayer *layer, int fieldIndex, const QSet<QVariant> &existingValues, const QVariant &seed = QVariant() );
177
184 static bool attributeHasConstraints( const QgsVectorLayer *layer, int attributeIndex );
185
191 static bool validateAttribute( const QgsVectorLayer *layer, const QgsFeature &feature, int attributeIndex, QStringList &errors SIP_OUT,
194
203 static QgsFeature createFeature( const QgsVectorLayer *layer,
204 const QgsGeometry &geometry = QgsGeometry(),
205 const QgsAttributeMap &attributes = QgsAttributeMap(),
206 QgsExpressionContext *context = nullptr );
207
215 static QgsFeatureList createFeatures( const QgsVectorLayer *layer,
216 const QgsFeaturesDataList &featuresData,
217 QgsExpressionContext *context = nullptr );
218
228 static QgsFeature duplicateFeature( QgsVectorLayer *layer, const QgsFeature &feature, QgsProject *project, QgsDuplicateFeatureContext &duplicateFeatureContext SIP_OUT, const int maxDepth = 0, int depth SIP_PYARGREMOVE = 0, QList<QgsVectorLayer *> referencedLayersBranch SIP_PYARGREMOVE = QList<QgsVectorLayer *>() );
229
230
245 static std::unique_ptr<QgsVectorLayerFeatureSource> getFeatureSource( QPointer<QgsVectorLayer> layer, QgsFeedback *feedback = nullptr ) SIP_SKIP;
246
266 static void matchAttributesToFields( QgsFeature &feature, const QgsFields &fields );
267
289 static QgsFeatureList makeFeatureCompatible( const QgsFeature &feature, const QgsVectorLayer *layer, QgsFeatureSink::SinkFlags sinkFlags = QgsFeatureSink::SinkFlags() );
290
312 static QgsFeatureList makeFeaturesCompatible( const QgsFeatureList &features, const QgsVectorLayer *layer, QgsFeatureSink::SinkFlags sinkFlags = QgsFeatureSink::SinkFlags() );
313
322 static bool fieldIsEditable( const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature );
323
333 static bool fieldIsReadOnly( const QgsVectorLayer *layer, int fieldIndex );
334
344 static bool fieldEditabilityDependsOnFeature( const QgsVectorLayer *layer, int fieldIndex );
345
353 static QHash<QString, QgsMaskedLayers> labelMasks( const QgsVectorLayer * ) SIP_SKIP;
354
362 static QgsMaskedLayers symbolLayerMasks( const QgsVectorLayer * ) SIP_SKIP;
363
369 static QString getFeatureDisplayString( const QgsVectorLayer *layer, const QgsFeature &feature );
370
377 {
378 IgnoreAuxiliaryLayers = 1 << 1,
379 };
381
382
388 static bool impactsCascadeFeatures( const QgsVectorLayer *layer, const QgsFeatureIds &fids, const QgsProject *project, QgsDuplicateFeatureContext &context SIP_OUT, QgsVectorLayerUtils::CascadedFeatureFlags flags = QgsVectorLayerUtils::CascadedFeatureFlags() );
389
390#ifndef SIP_RUN
391
412#else
413
431#endif
432 static QString guessFriendlyIdentifierField( const QgsFields &fields, bool *foundFriendly SIP_OUT = nullptr ) SIP_PYNAME( guessFriendlyIdentifierFieldV2 );
433
434#ifdef SIP_RUN
435
452 static QString guessFriendlyIdentifierField( const QgsFields &fields );
453#endif
454
455};
456
457
458#endif // QGSVECTORLAYERUTILS_H
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Wrapper for iterator of features from vector data provider or vector layer.
An interface for objects which accept features via addFeature(s) methods.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
ConstraintStrength
Strength of constraints.
@ ConstraintStrengthNotSet
Constraint is not set.
ConstraintOrigin
Origin of constraints.
@ ConstraintOriginNotSet
Constraint is not set.
Container of fields for a vector layer.
Definition qgsfields.h:46
A geometry is the spatial representation of a feature.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:107
We may need stable references to symbol layers, when pointers to symbol layers is not usable (when a ...
Contains mainly the QMap with QgsVectorLayer and QgsFeatureIds do list all the duplicated features.
Encapsulate geometry and attributes for new features, to be passed to createFeatures.
Contains utility methods for working with QgsVectorLayers.
QList< QgsVectorLayerUtils::QgsFeatureData > QgsFeaturesDataList
Alias for list of QgsFeatureData.
QFlags< CascadedFeatureFlag > CascadedFeatureFlags
CascadedFeatureFlag
Flags that can be used when determining cascaded features.
Represents a vector layer which manages a vector based data sets.
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:278
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_PYNAME(name)
Definition qgis_sip.h:81
#define SIP_PYARGREMOVE
Definition qgis_sip.h:151
#define SIP_OUT
Definition qgis_sip.h:58
QMap< int, QVariant > QgsAttributeMap
QList< QgsFeature > QgsFeatureList
QSet< QgsFeatureId > QgsFeatureIds
QHash< QString, QgsMaskedLayer > QgsMaskedLayers
masked layers where key is the layer id
QSet< QString > symbolLayerIds