QGIS API Documentation 3.29.0-Master (19d7edcfed)
qgsvectorlayer.h
Go to the documentation of this file.
1
2/***************************************************************************
3 -------------------
4 begin : Oct 29, 2003
5 copyright : (C) 2003 by Gary E.Sherman
6 email : sherman at mrcc.com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSVECTORLAYER_H
19#define QGSVECTORLAYER_H
20
21
22#include "qgis_core.h"
23#include <QMap>
24#include <QSet>
25#include <QList>
26#include <QStringList>
27#include <QFont>
28#include <QMutex>
29
30#include "qgis.h"
31#include "qgsmaplayer.h"
32#include "qgsfeature.h"
33#include "qgsfeaturerequest.h"
34#include "qgsfeaturesource.h"
35#include "qgsfields.h"
38#include "qgseditformconfig.h"
41#include "qgsfeatureiterator.h"
46
47class QPainter;
48class QImage;
49
53class QgsCurve;
59class QgsGeometry;
60class QgsGeometryVertexIndex;
61class QgsMapToPixel;
62class QgsRectangle;
63class QgsRectangle;
64class QgsRelation;
65class QgsWeakRelation;
69class QgsSymbol;
76class QgsPoint;
77class QgsFeedback;
85
86typedef QList<int> QgsAttributeList;
87typedef QSet<int> QgsAttributeIds;
88
89// TODO QGIS4: Remove virtual from non-inherited methods (like isModified)
90
392{
393 Q_OBJECT
394
395 Q_PROPERTY( QString subsetString READ subsetString WRITE setSubsetString NOTIFY subsetStringChanged )
396 Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
397 Q_PROPERTY( QgsEditFormConfig editFormConfig READ editFormConfig WRITE setEditFormConfig NOTIFY editFormConfigChanged )
398 Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged )
399 Q_PROPERTY( bool supportsEditing READ supportsEditing NOTIFY supportsEditingChanged )
400
401 public:
402
408 {
409
413 explicit LayerOptions( bool loadDefaultStyle = true,
414 bool readExtentFromXml = false )
415 : loadDefaultStyle( loadDefaultStyle )
416 , readExtentFromXml( readExtentFromXml )
417 {}
418
423 explicit LayerOptions( const QgsCoordinateTransformContext &transformContext,
424 bool loadDefaultStyle = true,
425 bool readExtentFromXml = false
426 )
427 : loadDefaultStyle( loadDefaultStyle )
428 , readExtentFromXml( readExtentFromXml )
429 , transformContext( transformContext )
430 {}
431
433 bool loadDefaultStyle = true;
434
439 bool readExtentFromXml = false;
440
446
459
472
486 bool skipCrsValidation = false;
487
499 bool forceReadOnly = false;
500
513 bool loadAllStoredStyles = false;
514 };
515
520 struct CORE_EXPORT DeleteContext
521 {
522
526 explicit DeleteContext( bool cascade = false, QgsProject *project = nullptr ): cascade( cascade ), project( project ) {}
527
534 QList<QgsVectorLayer *> handledLayers( bool includeAuxiliaryLayers = true ) const;
535
539 QgsFeatureIds handledFeatures( QgsVectorLayer *layer ) const;
540
541 QMap<QgsVectorLayer *, QgsFeatureIds> mHandledFeatures SIP_SKIP;
544 };
545
559 explicit QgsVectorLayer( const QString &path = QString(), const QString &baseName = QString(),
560 const QString &providerLib = "ogr", const QgsVectorLayer::LayerOptions &options = QgsVectorLayer::LayerOptions() );
561
562 ~QgsVectorLayer() override;
563
565 QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
567 QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
568
569#ifdef SIP_RUN
570 SIP_PYOBJECT __repr__();
571 % MethodCode
572 QString str = QStringLiteral( "<QgsVectorLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral( "Invalid" ) );
573 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
574 % End
575#endif
576
585 QgsVectorLayer *clone() const override SIP_FACTORY;
586
591 QString storageType() const;
592
596 QString capabilitiesString() const;
597
598
608 bool isSqlQuery() const;
609
616 Qgis::VectorLayerTypeFlags vectorLayerTypeFlags() const;
617
618
622 QString dataComment() const;
623
631 QString displayField() const;
632
640 void setDisplayExpression( const QString &displayExpression );
641
648 QString displayExpression() const;
649
650 QgsVectorDataProvider *dataProvider() FINAL;
651 const QgsVectorDataProvider *dataProvider() const FINAL SIP_SKIP;
652 QgsMapLayerTemporalProperties *temporalProperties() override;
653 QgsMapLayerElevationProperties *elevationProperties() override;
654 QgsAbstractProfileGenerator *createProfileGenerator( const QgsProfileRequest &request ) override SIP_FACTORY;
655
666 void setProviderEncoding( const QString &encoding );
667
669 void setCoordinateSystem();
670
676 bool addJoin( const QgsVectorLayerJoinInfo &joinInfo );
677
682 bool removeJoin( const QString &joinLayerId );
683
688 QgsVectorLayerJoinBuffer *joinBuffer() { return mJoinBuffer; }
689
694 const QgsVectorLayerJoinBuffer *joinBuffer() const { return mJoinBuffer; } SIP_SKIP;
695
696 const QList<QgsVectorLayerJoinInfo> vectorJoins() const;
697
706 bool setDependencies( const QSet<QgsMapLayerDependency> &layers ) FINAL;
707
715 QSet<QgsMapLayerDependency> dependencies() const FINAL;
716
727 int addExpressionField( const QString &exp, const QgsField &fld );
728
736 void removeExpressionField( int index );
737
747 QString expressionField( int index ) const;
748
758 void updateExpressionField( int index, const QString &exp );
759
766 QgsActionManager *actions() { return mActions; }
767
773 const QgsActionManager *actions() const SIP_SKIP { return mActions; }
774
780 int selectedFeatureCount() const;
781
791 Q_INVOKABLE void selectByRect( QgsRectangle &rect, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
792
803 Q_INVOKABLE void selectByExpression( const QString &expression, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection, QgsExpressionContext *context = nullptr );
804
815 Q_INVOKABLE void selectByIds( const QgsFeatureIds &ids, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
816
828 Q_INVOKABLE void modifySelection( const QgsFeatureIds &selectIds, const QgsFeatureIds &deselectIds );
829
831 Q_INVOKABLE void invertSelection();
832
834 Q_INVOKABLE void selectAll();
835
843 Q_INVOKABLE void invertSelectionInRectangle( QgsRectangle &rect );
844
857 Q_INVOKABLE QgsFeatureList selectedFeatures() const;
858
874 QgsFeatureIterator getSelectedFeatures( QgsFeatureRequest request = QgsFeatureRequest() ) const;
875
883 Q_INVOKABLE const QgsFeatureIds &selectedFeatureIds() const;
884
886 Q_INVOKABLE QgsRectangle boundingBoxOfSelected() const;
887
895 bool labelsEnabled() const;
896
906 void setLabelsEnabled( bool enabled );
907
913 bool diagramsEnabled() const;
914
916 void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
917 const QgsDiagramRenderer *diagramRenderer() const { return mDiagramRenderer; }
918
919 void setDiagramLayerSettings( const QgsDiagramLayerSettings &s );
920 const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; }
921
928 QgsFeatureRenderer *renderer() { return mRenderer; }
929
937 const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
938
945 void setRenderer( QgsFeatureRenderer *r SIP_TRANSFER );
946
956 void addFeatureRendererGenerator( QgsFeatureRendererGenerator *generator SIP_TRANSFER );
957
967 void removeFeatureRendererGenerator( const QString &id );
968
976 QList< const QgsFeatureRendererGenerator * > featureRendererGenerators() const;
977
979 Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const;
980
982 Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL;
983
984 QgsCoordinateReferenceSystem sourceCrs() const FINAL;
985 QString sourceName() const FINAL;
986
991 bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) FINAL;
992
997 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const FINAL;
998
999 QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
1000 QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
1001
1006 void resolveReferences( QgsProject *project ) FINAL;
1007
1024 virtual void saveStyleToDatabase( const QString &name, const QString &description,
1025 bool useAsDefault, const QString &uiFileContent,
1026 QString &msgError SIP_OUT,
1027 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1028
1038 virtual int listStylesInDatabase( QStringList &ids SIP_OUT, QStringList &names SIP_OUT,
1039 QStringList &descriptions SIP_OUT, QString &msgError SIP_OUT );
1040
1044 virtual QString getStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1045
1053 virtual bool deleteStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1054
1062 virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT, bool loadFromLocalDb,
1063 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1064
1069 QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT,
1070 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1071
1085 bool loadAuxiliaryLayer( const QgsAuxiliaryStorage &storage, const QString &key = QString() );
1086
1096 void setAuxiliaryLayer( QgsAuxiliaryLayer *layer SIP_TRANSFER = nullptr );
1097
1103 QgsAuxiliaryLayer *auxiliaryLayer();
1104
1110 const QgsAuxiliaryLayer *auxiliaryLayer() const SIP_SKIP;
1111
1112 bool readSymbology( const QDomNode &layerNode, QString &errorMessage,
1113 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1114 bool readStyle( const QDomNode &node, QString &errorMessage,
1115 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1116 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1117 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1118 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1119 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1120
1129 bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QVariantMap &props = QVariantMap() ) const;
1130
1131 bool readSld( const QDomNode &node, QString &errorMessage ) FINAL;
1132
1138 long long featureCount( const QString &legendKey ) const;
1139
1146 QgsFeatureIds symbolFeatureIds( const QString &legendKey ) const;
1147
1158 FeatureAvailability hasFeatures() const FINAL;
1159
1160
1161 QString loadDefaultStyle( bool &resultFlag SIP_OUT ) FINAL;
1162
1176 QgsVectorLayerFeatureCounter *countSymbolFeatures( bool storeSymbolFids = false );
1177
1185 virtual bool setSubsetString( const QString &subset );
1186
1191 virtual QString subsetString() const;
1192
1198 QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const FINAL;
1199
1203 inline QgsFeatureIterator getFeatures( const QString &expression )
1204 {
1205 return getFeatures( QgsFeatureRequest( expression ) );
1206 }
1207
1213 {
1214 QgsFeature feature;
1215 getFeatures( QgsFeatureRequest( fid ) ).nextFeature( feature );
1216 return feature;
1217 }
1218
1223 QgsGeometry getGeometry( QgsFeatureId fid ) const;
1224
1229 {
1230 return getFeatures( QgsFeatureRequest( fids ) );
1231 }
1232
1237 {
1238 return getFeatures( QgsFeatureRequest( rectangle ) );
1239 }
1240
1241 bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1242
1268 bool updateFeature( QgsFeature &feature, bool skipDefaultValues = false );
1269
1281 bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex );
1282
1294 bool insertVertex( const QgsPoint &point, QgsFeatureId atFeatureId, int beforeVertex );
1295
1306 bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex );
1307
1318 bool moveVertex( const QgsPoint &p, QgsFeatureId atFeatureId, int atVertex ) SIP_PYNAME( moveVertexV2 );
1319
1330 Qgis::VectorEditResult deleteVertex( QgsFeatureId featureId, int vertex );
1331
1339 Q_INVOKABLE bool deleteSelectedFeatures( int *deletedCount = nullptr, QgsVectorLayer::DeleteContext *context = nullptr );
1340
1361 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addRing( const QVector<QgsPointXY> &ring, QgsFeatureId *featureId = nullptr ) SIP_DEPRECATED;
1362
1363
1383 Q_INVOKABLE Qgis::GeometryOperationResult addRing( const QgsPointSequence &ring, QgsFeatureId *featureId = nullptr );
1384
1405 Q_INVOKABLE Qgis::GeometryOperationResult addRing( QgsCurve *ring SIP_TRANSFER, QgsFeatureId *featureId = nullptr ) SIP_PYNAME( addCurvedRing );
1406
1426 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QList<QgsPointXY> &ring ) SIP_DEPRECATED;
1427
1428#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1429
1450 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QVector<QgsPointXY> &ring ) SIP_PYNAME( addPartV2 ) SIP_DEPRECATED;
1451#endif
1452
1472 Q_INVOKABLE Qgis::GeometryOperationResult addPart( const QgsPointSequence &ring ) SIP_PYNAME( addPartV2 );
1473
1481 Q_INVOKABLE Qgis::GeometryOperationResult addPart( QgsCurve *ring SIP_TRANSFER ) SIP_PYNAME( addCurvedPart );
1482
1494 Q_INVOKABLE int translateFeature( QgsFeatureId featureId, double dx, double dy );
1495
1516 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitParts( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1517
1537 Q_INVOKABLE Qgis::GeometryOperationResult splitParts( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1538
1559 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitFeatures( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1560
1580 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1581
1604 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsCurve *curve, QgsPointSequence &topologyTestPoints SIP_OUT, bool preserveCircular = false, bool topologicalEditing = false );
1605
1619 int addTopologicalPoints( const QgsGeometry &geom );
1620
1637 Q_DECL_DEPRECATED int addTopologicalPoints( const QgsPointXY &p ) SIP_DEPRECATED;
1638
1655 int addTopologicalPoints( const QgsPoint &p );
1656
1673 int addTopologicalPoints( const QgsPointSequence &ps );
1674
1681 const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
1682
1690
1695 void setLabeling( QgsAbstractVectorLayerLabeling *labeling SIP_TRANSFER );
1696
1698 bool isEditable() const FINAL;
1699
1701 bool isSpatial() const FINAL;
1702
1704 bool isModified() const override;
1705
1712 bool isAuxiliaryField( int index, int &srcIndex ) const;
1713
1715 void reload() FINAL;
1716
1721 QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) FINAL SIP_FACTORY;
1722
1723 QgsRectangle extent() const FINAL;
1724 QgsRectangle sourceExtent() const FINAL;
1725
1732 QgsFields fields() const FINAL;
1733
1737 inline QgsAttributeList attributeList() const { return mFields.allAttributesList(); }
1738
1742 QgsAttributeList primaryKeyAttributes() const;
1743
1749 long long featureCount() const FINAL;
1750
1757 bool setReadOnly( bool readonly = true );
1758
1764 bool supportsEditing() const override;
1765
1786 bool changeGeometry( QgsFeatureId fid, QgsGeometry &geometry, bool skipDefaultValue = false );
1787
1818 bool changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue = QVariant(), bool skipDefaultValues = false );
1819
1855 bool changeAttributeValues( QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues = QgsAttributeMap(), bool skipDefaultValues = false );
1856
1866 bool addAttribute( const QgsField &field );
1867
1873 void setFieldAlias( int index, const QString &aliasString );
1874
1880 void removeFieldAlias( int index );
1881
1892 bool renameAttribute( int index, const QString &newName );
1893
1900 QString attributeAlias( int index ) const;
1901
1903 QString attributeDisplayName( int index ) const;
1904
1906 QgsStringMap attributeAliases() const;
1907
1912 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWms() const SIP_DEPRECATED;
1913
1918 Q_DECL_DEPRECATED void setExcludeAttributesWms( const QSet<QString> &att ) SIP_DEPRECATED;
1919
1924 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWfs() const SIP_DEPRECATED;
1925
1930 Q_DECL_DEPRECATED void setExcludeAttributesWfs( const QSet<QString> &att ) SIP_DEPRECATED;
1931
1940 virtual bool deleteAttribute( int attr );
1941
1949 bool deleteAttributes( const QList<int> &attrs );
1950
1951 bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1952
1963 bool deleteFeature( QgsFeatureId fid, DeleteContext *context = nullptr );
1964
1978 bool deleteFeatures( const QgsFeatureIds &fids, DeleteContext *context = nullptr );
1979
2003 Q_INVOKABLE bool commitChanges( bool stopEditing = true );
2004
2010 QStringList commitErrors() const;
2011
2021 Q_INVOKABLE bool rollBack( bool deleteBuffer = true );
2022
2029 QList<QgsRelation> referencingRelations( int idx ) const;
2030
2040 QList<QgsWeakRelation> weakRelations() const SIP_SKIP;
2041
2050 void setWeakRelations( const QList< QgsWeakRelation > &relations ) SIP_SKIP;
2051
2053 Q_INVOKABLE QgsVectorLayerEditBuffer *editBuffer() { return mEditBuffer; }
2054
2059 const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
2060
2065 void beginEditCommand( const QString &text );
2066
2068 void endEditCommand();
2069
2071 void destroyEditCommand();
2072
2077 Q_DECL_DEPRECATED static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int vertexSize );
2078
2087 void updateFields();
2088
2103 QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
2104 QgsExpressionContext *context = nullptr ) const;
2105
2117 void setDefaultValueDefinition( int index, const QgsDefaultValue &definition );
2118
2129 QgsDefaultValue defaultValueDefinition( int index ) const;
2130
2138 QgsFieldConstraints::Constraints fieldConstraints( int fieldIndex ) const;
2139
2145 QMap< QgsFieldConstraints::Constraint, QgsFieldConstraints::ConstraintStrength> fieldConstraintsAndStrength( int fieldIndex ) const;
2146
2156
2164 void removeFieldConstraint( int index, QgsFieldConstraints::Constraint constraint );
2165
2173 QString constraintExpression( int index ) const;
2174
2182 QString constraintDescription( int index ) const;
2183
2192 void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
2193
2199 void setFieldConfigurationFlags( int index, QgsField::ConfigurationFlags flags ) SIP_SKIP;
2200
2205 void setFieldConfigurationFlag( int index, QgsField::ConfigurationFlag flag, bool active ) SIP_SKIP;
2206
2212 QgsField::ConfigurationFlags fieldConfigurationFlags( int index ) const SIP_SKIP;
2213
2217 void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
2218
2225 QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
2226
2238 QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;
2239
2253 QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
2254 QgsFeedback *feedback = nullptr ) const;
2255
2270 QVariant minimumValue( int index ) const FINAL;
2271
2286 QVariant maximumValue( int index ) const FINAL;
2287
2288
2308 void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;
2309
2324 QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
2325 const QString &fieldOrExpression,
2326 const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
2327 QgsExpressionContext *context = nullptr,
2328 bool *ok = nullptr,
2329 QgsFeatureIds *fids = nullptr,
2330 QgsFeedback *feedback = nullptr,
2331 QString *error SIP_PYARGREMOVE = nullptr ) const;
2332
2334 void setFeatureBlendMode( QPainter::CompositionMode blendMode );
2336 QPainter::CompositionMode featureBlendMode() const;
2337
2338 QString htmlMetadata() const FINAL;
2339
2344 void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mSimplifyMethod = simplifyMethod; }
2345
2350 inline const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
2351
2357 bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const;
2358
2366 QgsConditionalLayerStyles *conditionalStyles() const;
2367
2372 QgsAttributeTableConfig attributeTableConfig() const;
2373
2378 void setAttributeTableConfig( const QgsAttributeTableConfig &attributeTableConfig );
2379
2381
2382 QgsExpressionContextScope *createExpressionContextScope() const FINAL SIP_FACTORY;
2383
2391 QgsEditFormConfig editFormConfig() const;
2392
2399 void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
2400
2408 void setReadExtentFromXml( bool readExtentFromXml );
2409
2417 bool readExtentFromXml() const;
2418
2424 bool isEditCommandActive() const { return mEditCommandActive; }
2425
2431 QgsGeometryOptions *geometryOptions() const;
2432
2450 bool allowCommit() const SIP_SKIP;
2451
2469 void setAllowCommit( bool allowCommit ) SIP_SKIP;
2470
2476 QgsStoredExpressionManager *storedExpressionManager() { return mStoredExpressionManager; }
2477
2478 public slots:
2479
2487 void select( QgsFeatureId featureId );
2488
2496 Q_INVOKABLE void select( const QgsFeatureIds &featureIds );
2497
2505 void deselect( QgsFeatureId featureId );
2506
2514 Q_INVOKABLE void deselect( const QgsFeatureIds &featureIds );
2515
2522 Q_INVOKABLE void removeSelection();
2523
2534 void reselect();
2535
2542 virtual void updateExtents( bool force = false );
2543
2558 Q_INVOKABLE bool startEditing();
2559
2565 virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
2566
2568
2569 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
2570
2571 signals:
2572
2580 void selectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect );
2581
2588
2591
2594
2600 void beforeCommitChanges( bool stopEditing );
2601
2604
2610
2616
2625 void attributeAdded( int idx );
2626
2633 void beforeAddingExpressionField( const QString &fieldName );
2634
2643 void attributeDeleted( int idx );
2644
2652
2659
2669
2679 void featuresDeleted( const QgsFeatureIds &fids );
2680
2686
2692
2701 void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
2702
2710 void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
2711
2713 void committedAttributesDeleted( const QString &layerId, const QgsAttributeList &deletedAttributes );
2715 void committedAttributesAdded( const QString &layerId, const QList<QgsField> &addedAttributes );
2717 void committedFeaturesAdded( const QString &layerId, const QgsFeatureList &addedFeatures );
2719 void committedFeaturesRemoved( const QString &layerId, const QgsFeatureIds &deletedFeatureIds );
2721 void committedAttributeValuesChanges( const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues );
2723 void committedGeometriesChanges( const QString &layerId, const QgsGeometryMap &changedGeometries );
2724
2726 void labelingFontNotFound( QgsVectorLayer *layer, const QString &fontfamily );
2727
2729 void featureBlendModeChanged( QPainter::CompositionMode blendMode );
2730
2736 void editCommandStarted( const QString &text );
2737
2744
2751
2761 void readCustomSymbology( const QDomElement &element, QString &errorMessage );
2762
2772 void writeCustomSymbology( QDomElement &element, QDomDocument &doc, QString &errorMessage ) const;
2773
2780
2784 void raiseError( const QString &msg );
2785
2792
2802
2809
2816
2817 protected:
2819 void setExtent( const QgsRectangle &rect ) FINAL;
2820
2821 private slots:
2822 void invalidateSymbolCountedFlag();
2823 void onFeatureCounterCompleted();
2824 void onFeatureCounterTerminated();
2825 void onJoinedFieldsChanged();
2826 void onFeatureDeleted( QgsFeatureId fid );
2827 void onRelationsLoaded();
2828 void onSymbolsCounted();
2829 void onDirtyTransaction( const QString &sql, const QString &name );
2830 void emitDataChanged();
2831 void onAfterCommitChangesDependency();
2832
2833 private:
2834 void updateDefaultValues( QgsFeatureId fid, QgsFeature feature = QgsFeature() );
2835
2845 bool isReadOnly() const FINAL;
2846
2853 bool setDataProvider( QString const &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
2854
2866 void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
2867
2869 void readSldLabeling( const QDomNode &node );
2870
2872 bool readSldTextSymbolizer( const QDomNode &node, QgsPalLayerSettings &settings ) const;
2873
2875 QgsAbstractVectorLayerLabeling *readLabelingFromCustomProperties();
2876
2877 bool deleteFeatureCascade( QgsFeatureId fid, DeleteContext *context = nullptr );
2878
2879#ifdef SIP_RUN
2880 QgsVectorLayer( const QgsVectorLayer &rhs );
2881#endif
2883 void minimumOrMaximumValue( int index, QVariant *minimum, QVariant *maximum ) const;
2884
2885 void createEditBuffer();
2886 void clearEditBuffer();
2887
2888 QgsConditionalLayerStyles *mConditionalStyles = nullptr;
2889
2891 QgsVectorDataProvider *mDataProvider = nullptr;
2892
2894 QgsVectorLayerTemporalProperties *mTemporalProperties = nullptr;
2895
2896 QgsVectorLayerElevationProperties *mElevationProperties = nullptr;
2897
2899 QString mDisplayExpression;
2900
2902 QgsActionManager *mActions = nullptr;
2903
2905 bool mDataSourceReadOnly = false;
2906
2913 bool mReadOnly = false;
2914
2920 QgsFeatureIds mSelectedFeatureIds;
2921
2925 QgsFeatureIds mPreviousSelectedFeatureIds;
2926
2928 QgsFields mFields;
2929
2931 QgsStringMap mAttributeAliasMap;
2932
2934 QMap<QString, QgsDefaultValue> mDefaultExpressionMap;
2935
2937 QSet<int> mDefaultValueOnUpdateFields;
2938
2940 QMap< QString, QgsFieldConstraints::Constraints > mFieldConstraints;
2941
2943 QMap< QPair< QString, QgsFieldConstraints::Constraint >, QgsFieldConstraints::ConstraintStrength > mFieldConstraintStrength;
2944
2946 QMap< QString, QPair< QString, QString > > mFieldConstraintExpressions;
2947
2948 QMap< QString, QgsField::ConfigurationFlags > mFieldConfigurationFlags;
2949 QMap< QString, QgsEditorWidgetSetup > mFieldWidgetSetups;
2950
2952 QgsEditFormConfig mEditFormConfig;
2953
2956
2958 QgsFeatureRenderer *mRenderer = nullptr;
2959
2961 QgsVectorSimplifyMethod mSimplifyMethod;
2962
2964 QgsAbstractVectorLayerLabeling *mLabeling = nullptr;
2965
2967 bool mLabelsEnabled = false;
2968
2970 bool mLabelFontNotFoundNotified = false;
2971
2973 QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode_SourceOver;
2974
2976 bool mVertexMarkerOnlyForSelection = false;
2977
2978 QStringList mCommitErrors;
2979
2981 QgsVectorLayerEditBuffer *mEditBuffer = nullptr;
2985
2986 //stores information about joined layers
2987 QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
2988
2990 QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;
2991
2992 //diagram rendering object. 0 if diagram drawing is disabled
2993 QgsDiagramRenderer *mDiagramRenderer = nullptr;
2994
2995 //stores infos about diagram placement (placement type, priority, position distance)
2996 QgsDiagramLayerSettings *mDiagramLayerSettings = nullptr;
2997
2998 mutable bool mValidExtent = false;
2999 mutable bool mLazyExtent = true;
3000
3002 std::unique_ptr<QgsAuxiliaryLayer> mAuxiliaryLayer;
3003
3005 QString mAuxiliaryLayerKey;
3006
3007 // Features in renderer classes counted
3008 bool mSymbolFeatureCounted = false;
3009
3010 // Feature counts for each renderer legend key
3011 QHash<QString, long long> mSymbolFeatureCountMap;
3012 QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
3013
3015 bool mEditCommandActive = false;
3016
3018 bool mCommitChangesActive = false;
3019
3020 bool mReadExtentFromXml;
3021 QgsRectangle mXmlExtent;
3022
3023 QgsFeatureIds mDeletedFids;
3024
3025 QgsAttributeTableConfig mAttributeTableConfig;
3026
3027 mutable QMutex mFeatureSourceConstructorMutex;
3028
3029 QgsVectorLayerFeatureCounter *mFeatureCounter = nullptr;
3030
3031 std::unique_ptr<QgsGeometryOptions> mGeometryOptions;
3032
3033 bool mAllowCommit = true;
3034
3036 QgsStoredExpressionManager *mStoredExpressionManager = nullptr;
3037
3039
3041 bool mDataChangedFired = false;
3042
3043 QList<QgsWeakRelation> mWeakRelations;
3044
3045 bool mSetLegendFromStyle = false;
3046
3047 QList< QgsFeatureRendererGenerator * > mRendererGenerators;
3048
3050 QTimer *mRefreshRendererTimer = nullptr;
3051
3055 bool mLoadAllStoredStyle = false;
3056
3057};
3058
3059
3060
3061// clazy:excludeall=qstring-allocations
3062
3063#endif
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:72
GeometryOperationResult
Success or failure of a geometry operation.
Definition: qgis.h:1127
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition: qgis.h:932
SelectBehavior
Specifies how a selection should be applied.
Definition: qgis.h:870
@ SetSelection
Set selection, removing any existing selection.
Abstract base class for simplify geometries using a specific algorithm.
Abstract base class for objects which generate elevation profiles.
Interface for classes which can generate elevation profiles.
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
Storage and management of actions associated with a layer.
Utility class for calculating aggregates for a field (or expression) over the features from a vector ...
This is a container for configuration of the attribute table.
Class allowing to manage the auxiliary storage for a vector layer.
Class providing some utility methods to manage auxiliary storage.
The QgsConditionalLayerStyles class holds conditional style information for a layer.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for curved geometry type.
Definition: qgscurve.h:36
Abstract base class for spatial data provider implementations.
The QgsDefaultValue class provides a container for managing client side default values for fields.
Stores the settings for rendering of all diagrams for a layer.
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
Contains configuration settings for an editor form.
Holder for the widget type and its configuration for a field.
Manages an editor widget Widget and wrapper share the same parent.
Abstract interface for generating an expression context.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Abstract interface for generating an expression context scope.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Buffers information about expression fields for a vector layer.
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
An interface for objects which generate feature renderers for vector layers.
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.
virtual bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
Adds a single feature to the sink.
An interface for objects which provide features via a getFeatures method.
virtual QSet< QVariant > uniqueValues(int fieldIndex, int limit=-1) const
Returns the set of unique values contained within the specified fieldIndex from this source.
SpatialIndexPresence
Enumeration of spatial index presence states.
virtual QgsWkbTypes::Type wkbType() const =0
Returns the geometry type for features returned by this source.
virtual QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const =0
Returns an iterator for the features in the source.
virtual long long featureCount() const =0
Returns the number of features contained in the source, or -1 if the feature count is unknown.
virtual SpatialIndexPresence hasSpatialIndex() const
Returns an enum value representing the presence of a valid spatial index on the source,...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
ConstraintStrength
Strength of constraints.
@ ConstraintStrengthHard
Constraint must be honored before feature can be accepted.
Constraint
Constraints which may be present on a field.
Encapsulate a field in an attribute table or data source.
Definition: qgsfield.h:51
ConfigurationFlag
Configuration flags for fields These flags are meant to be user-configurable and are not describing a...
Definition: qgsfield.h:80
Container of fields for a vector layer.
Definition: qgsfields.h:45
The QgsGeometryOptions class contains options to automatically adjust geometries to constraints on a ...
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:164
Base class for storage of map layer elevation properties.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the layer.
virtual bool setDependencies(const QSet< QgsMapLayerDependency > &layers)
Sets the list of dependencies.
virtual QSet< QgsMapLayerDependency > dependencies() const
Gets the list of dependencies.
friend class QgsVectorLayer
Definition: qgsmaplayer.h:2182
virtual bool isEditable() const
Returns true if the layer can be edited.
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
virtual void setExtent(const QgsRectangle &rect)
Sets the extent.
virtual void setTransformContext(const QgsCoordinateTransformContext &transformContext)=0
Sets the coordinate transform context to transformContext.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Contains settings for how a map layer will be labeled.
A class to represent a 2D point.
Definition: qgspointxy.h:59
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:105
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
This class manages a set of relations between layers.
Contains information about the context of a rendering operation.
Manages stored expressions regarding creation, modification and storing in the project.
An interface for classes which can visit style entity (e.g.
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:93
This is the base class for vector data providers.
The edit buffer group manages a group of edit buffers.
Vector layer specific subclass of QgsMapLayerElevationProperties.
Counts the features in a QgsVectorLayer in task.
Partial snapshot of vector layer's state (only the members necessary for access to features)
Manages joined fields for a vector layer.
Defines left outer join from our vector layer to some other vector layer.
Implementation of map layer temporal properties for vector layers.
Represents a vector layer which manages a vector based data sets.
void committedFeaturesAdded(const QString &layerId, const QgsFeatureList &addedFeatures)
Emitted when features are added to the provider if not in transaction mode.
void labelingFontNotFound(QgsVectorLayer *layer, const QString &fontfamily)
Emitted when the font family defined for labeling layer is not found on system.
void featureBlendModeChanged(QPainter::CompositionMode blendMode)
Signal emitted when setFeatureBlendMode() is called.
void beforeRemovingExpressionField(int idx)
Will be emitted, when an expression field is going to be deleted from this vector layer.
void committedGeometriesChanges(const QString &layerId, const QgsGeometryMap &changedGeometries)
Emitted when geometry changes are saved to the provider if not in transaction mode.
void beforeCommitChanges(bool stopEditing)
Emitted before changes are committed to the data provider.
void attributeAdded(int idx)
Will be emitted, when a new attribute has been added to this vector layer.
QgsAbstractVectorLayerLabeling * labeling()
Access to labeling configuration.
void allowCommitChanged()
Emitted whenever the allowCommitChanged() property of this layer changes.
void editCommandStarted(const QString &text)
Signal emitted when a new edit command has been started.
const QgsDiagramLayerSettings * diagramLayerSettings() const
const QgsVectorLayerJoinBuffer * joinBuffer() const
Returns a const pointer on join buffer object.
void editCommandDestroyed()
Signal emitted, when an edit command is destroyed.
QgsVectorLayer(const QgsVectorLayer &rhs)=delete
QgsVectorLayer cannot be copied.
void featuresDeleted(const QgsFeatureIds &fids)
Emitted when features have been deleted.
void subsetStringChanged()
Emitted when the layer's subset string has changed.
void committedFeaturesRemoved(const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
Emitted when features are deleted from the provider if not in transaction mode.
void symbolFeatureCountMapChanged()
Emitted when the feature count for symbols on this layer has been recalculated.
void writeCustomSymbology(QDomElement &element, QDomDocument &doc, QString &errorMessage) const
Signal emitted whenever the symbology (QML-file) for this layer is being written.
void attributeDeleted(int idx)
Will be emitted, when an attribute has been deleted from this vector layer.
QgsVectorLayer & operator=(QgsVectorLayer const &rhs)=delete
QgsVectorLayer cannot be copied.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
void beforeEditingStarted()
Emitted before editing on this layer is started.
void committedAttributeValuesChanges(const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
Emitted when attribute value changes are saved to the provider if not in transaction mode.
void committedAttributesAdded(const QString &layerId, const QList< QgsField > &addedAttributes)
Emitted when attributes are added to the provider if not in transaction mode.
void committedAttributesDeleted(const QString &layerId, const QgsAttributeList &deletedAttributes)
Emitted when attributes are deleted from the provider if not in transaction mode.
void displayExpressionChanged()
Emitted when the display expression changes.
const QgsActionManager * actions() const
Returns all layer actions defined on this layer.
void editFormConfigChanged()
Will be emitted whenever the edit form configuration of this layer changes.
void afterCommitChanges()
Emitted after changes are committed to the data provider.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
void raiseError(const QString &msg)
Signals an error related to this vector layer.
void editCommandEnded()
Signal emitted, when an edit command successfully ended.
void supportsEditingChanged()
Emitted when the read only state or the data provider of this layer is changed.
void readOnlyChanged()
Emitted when the read only state of this layer is changed.
void attributeValueChanged(QgsFeatureId fid, int idx, const QVariant &value)
Emitted whenever an attribute value change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsFeatureIds &fids)
Queries the layer for the features with the given ids.
void afterRollBack()
Emitted after changes are rolled back.
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings for fast rendering of features.
void selectionChanged(const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect)
Emitted when selection was changed.
void beforeAddingExpressionField(const QString &fieldName)
Will be emitted, when an expression field is going to be added to this vector layer.
void updatedFields()
Emitted whenever the fields available from this layer have been changed.
void featureAdded(QgsFeatureId fid)
Emitted when a new feature has been added to the layer.
void featureDeleted(QgsFeatureId fid)
Emitted when a feature has been deleted.
void readCustomSymbology(const QDomElement &element, QString &errorMessage)
Signal emitted whenever the symbology (QML-file) for this layer is being read.
const QgsVectorLayerEditBuffer * editBuffer() const
Buffer with uncommitted editing operations.
void beforeRollBack()
Emitted before changes are rolled back.
void geometryChanged(QgsFeatureId fid, const QgsGeometry &geometry)
Emitted whenever a geometry change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsRectangle &rectangle)
Queries the layer for the features which intersect the specified rectangle.
const QgsFeatureRenderer * renderer() const
Returns the feature renderer used for rendering the features in the layer in 2D map views.
void beforeModifiedCheck() const
Emitted when the layer is checked for modifications. Use for last-minute additions.
const QgsDiagramRenderer * diagramRenderer() const
This class contains information how to simplify geometries fetched from a vector layer.
SimplifyHint
Simplification flags for fast rendering of features.
The QgsWeakRelation class represent a QgsRelation with possibly unresolved layers or unmatched fields...
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
#define str(x)
Definition: qgis.cpp:37
QMap< QString, QString > QgsStringMap
Definition: qgis.h:3622
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_SKIP
Definition: qgis_sip.h:126
#define FINAL
Definition: qgis_sip.h:237
#define SIP_PYNAME(name)
Definition: qgis_sip.h:81
#define SIP_PYARGREMOVE
Definition: qgis_sip.h:151
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_FACTORY
Definition: qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence
QMap< int, QVariant > QgsAttributeMap
Definition: qgsattributes.h:42
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:915
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:906
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:920
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28
QList< int > QgsAttributeList
Definition: qgsfield.h:26
const QgsField & field
Definition: qgsfield.h:463
QList< int > QgsAttributeList
QSet< int > QgsAttributeIds
Context for cascade delete features.
DeleteContext(bool cascade=false, QgsProject *project=nullptr)
Constructor for DeleteContext.
Setting options for loading vector layers.
LayerOptions(bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
LayerOptions(const QgsCoordinateTransformContext &transformContext, bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
QgsCoordinateReferenceSystem fallbackCrs
Fallback layer coordinate reference system.