QGIS API Documentation 3.34.0-Prizren (ffbdd678812)
Loading...
Searching...
No Matches
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#include "qgis_core.h"
22#include <QMap>
23#include <QSet>
24#include <QList>
25#include <QStringList>
26#include <QFont>
27#include <QMutex>
28
29#include "qgis.h"
30#include "qgsmaplayer.h"
31#include "qgsfeature.h"
32#include "qgsfeaturerequest.h"
33#include "qgsfeaturesource.h"
34#include "qgsfields.h"
37#include "qgseditformconfig.h"
40#include "qgsfeatureiterator.h"
45
46class QPainter;
47class QImage;
48
52class QgsCurve;
58class QgsGeometry;
59class QgsGeometryVertexIndex;
60class QgsMapToPixel;
61class QgsRectangle;
62class QgsRectangle;
63class QgsRelation;
64class QgsWeakRelation;
68class QgsSymbol;
75class QgsPoint;
76class QgsFeedback;
85
86#ifndef SIP_RUN
87template<class T>
89#endif
92
93
94typedef QList<int> QgsAttributeList;
95typedef QSet<int> QgsAttributeIds;
96
97// TODO QGIS4: Remove virtual from non-inherited methods (like isModified)
98
400{
401 Q_OBJECT
402
403 Q_PROPERTY( QString subsetString READ subsetString WRITE setSubsetString NOTIFY subsetStringChanged )
404 Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
405 Q_PROPERTY( QgsEditFormConfig editFormConfig READ editFormConfig WRITE setEditFormConfig NOTIFY editFormConfigChanged )
406 Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged )
407 Q_PROPERTY( bool supportsEditing READ supportsEditing NOTIFY supportsEditingChanged )
408
409 public:
410
411 static const QgsSettingsEntryBool *settingsSimplifyLocal SIP_SKIP;
412
413 static const QgsSettingsEntryDouble *settingsSimplifyMaxScale SIP_SKIP;
414 static const QgsSettingsEntryDouble *settingsSimplifyDrawingTol SIP_SKIP;
415 static const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyAlgorithm> *settingsSimplifyAlgorithm SIP_SKIP;
416 static const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyHints> *settingsSimplifyDrawingHints SIP_SKIP;
417
423 {
424
428 explicit LayerOptions( bool loadDefaultStyle = true,
429 bool readExtentFromXml = false )
430 : loadDefaultStyle( loadDefaultStyle )
431 , readExtentFromXml( readExtentFromXml )
432 {}
433
438 explicit LayerOptions( const QgsCoordinateTransformContext &transformContext,
439 bool loadDefaultStyle = true,
440 bool readExtentFromXml = false
441 )
442 : loadDefaultStyle( loadDefaultStyle )
443 , readExtentFromXml( readExtentFromXml )
444 , transformContext( transformContext )
445 {}
446
448 bool loadDefaultStyle = true;
449
454 bool readExtentFromXml = false;
455
461
474
487
501 bool skipCrsValidation = false;
502
514 bool forceReadOnly = false;
515
528 bool loadAllStoredStyles = false;
529 };
530
535 struct CORE_EXPORT DeleteContext
536 {
537
541 explicit DeleteContext( bool cascade = false, QgsProject *project = nullptr ): cascade( cascade ), project( project ) {}
542
549 QList<QgsVectorLayer *> handledLayers( bool includeAuxiliaryLayers = true ) const;
550
554 QgsFeatureIds handledFeatures( QgsVectorLayer *layer ) const;
555
556 QMap<QgsVectorLayer *, QgsFeatureIds> mHandledFeatures SIP_SKIP;
559 };
560
574 explicit QgsVectorLayer( const QString &path = QString(), const QString &baseName = QString(),
575 const QString &providerLib = "ogr", const QgsVectorLayer::LayerOptions &options = QgsVectorLayer::LayerOptions() );
576
577 ~QgsVectorLayer() override;
578
580 QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
582 QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
583
584#ifdef SIP_RUN
585 SIP_PYOBJECT __repr__();
586 % MethodCode
587 QString str = QStringLiteral( "<QgsVectorLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral( "Invalid" ) );
588 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
589 % End
590#endif
591
600 QgsVectorLayer *clone() const override SIP_FACTORY;
601
606 QString storageType() const;
607
611 QString capabilitiesString() const;
612
613
623 bool isSqlQuery() const;
624
631 Qgis::VectorLayerTypeFlags vectorLayerTypeFlags() const;
632
633
637 QString dataComment() const;
638
646 QString displayField() const;
647
655 void setDisplayExpression( const QString &displayExpression );
656
663 QString displayExpression() const;
664
665 bool hasMapTips() const FINAL;
666
667 QgsVectorDataProvider *dataProvider() FINAL;
668 const QgsVectorDataProvider *dataProvider() const FINAL SIP_SKIP;
669 QgsMapLayerSelectionProperties *selectionProperties() override;
670 QgsMapLayerTemporalProperties *temporalProperties() override;
671 QgsMapLayerElevationProperties *elevationProperties() override;
672 QgsAbstractProfileGenerator *createProfileGenerator( const QgsProfileRequest &request ) override SIP_FACTORY;
673
684 void setProviderEncoding( const QString &encoding );
685
687 void setCoordinateSystem();
688
694 bool addJoin( const QgsVectorLayerJoinInfo &joinInfo );
695
700 bool removeJoin( const QString &joinLayerId );
701
706 QgsVectorLayerJoinBuffer *joinBuffer() { return mJoinBuffer; }
707
712 const QgsVectorLayerJoinBuffer *joinBuffer() const { return mJoinBuffer; } SIP_SKIP;
713
714 const QList<QgsVectorLayerJoinInfo> vectorJoins() const;
715
724 bool setDependencies( const QSet<QgsMapLayerDependency> &layers ) FINAL;
725
733 QSet<QgsMapLayerDependency> dependencies() const FINAL;
734
745 int addExpressionField( const QString &exp, const QgsField &fld );
746
754 void removeExpressionField( int index );
755
765 QString expressionField( int index ) const;
766
776 void updateExpressionField( int index, const QString &exp );
777
784 QgsActionManager *actions() { return mActions; }
785
791 const QgsActionManager *actions() const SIP_SKIP { return mActions; }
792
798 int selectedFeatureCount() const;
799
809 Q_INVOKABLE void selectByRect( QgsRectangle &rect, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
810
821 Q_INVOKABLE void selectByExpression( const QString &expression, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection, QgsExpressionContext *context = nullptr );
822
833 Q_INVOKABLE void selectByIds( const QgsFeatureIds &ids, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
834
846 Q_INVOKABLE void modifySelection( const QgsFeatureIds &selectIds, const QgsFeatureIds &deselectIds );
847
849 Q_INVOKABLE void invertSelection();
850
852 Q_INVOKABLE void selectAll();
853
861 Q_INVOKABLE void invertSelectionInRectangle( QgsRectangle &rect );
862
875 Q_INVOKABLE QgsFeatureList selectedFeatures() const;
876
892 QgsFeatureIterator getSelectedFeatures( QgsFeatureRequest request = QgsFeatureRequest() ) const;
893
901 Q_INVOKABLE const QgsFeatureIds &selectedFeatureIds() const;
902
904 Q_INVOKABLE QgsRectangle boundingBoxOfSelected() const;
905
913 bool labelsEnabled() const;
914
924 void setLabelsEnabled( bool enabled );
925
931 bool diagramsEnabled() const;
932
934 void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
935 const QgsDiagramRenderer *diagramRenderer() const { return mDiagramRenderer; }
936
937 void setDiagramLayerSettings( const QgsDiagramLayerSettings &s );
938 const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; }
939
946 QgsFeatureRenderer *renderer() { return mRenderer; }
947
955 const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
956
963 void setRenderer( QgsFeatureRenderer *r SIP_TRANSFER );
964
974 void addFeatureRendererGenerator( QgsFeatureRendererGenerator *generator SIP_TRANSFER );
975
985 void removeFeatureRendererGenerator( const QString &id );
986
994 QList< const QgsFeatureRendererGenerator * > featureRendererGenerators() const;
995
997 Q_INVOKABLE Qgis::GeometryType geometryType() const;
998
1000 Q_INVOKABLE Qgis::WkbType wkbType() const FINAL;
1001
1002 QgsCoordinateReferenceSystem sourceCrs() const FINAL;
1003 QString sourceName() const FINAL;
1004
1009 bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) FINAL;
1010
1015 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const FINAL;
1016
1017 QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
1018 QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
1019
1024 void resolveReferences( QgsProject *project ) FINAL;
1025
1039 bool loadAuxiliaryLayer( const QgsAuxiliaryStorage &storage, const QString &key = QString() );
1040
1050 void setAuxiliaryLayer( QgsAuxiliaryLayer *layer SIP_TRANSFER = nullptr );
1051
1057 QgsAuxiliaryLayer *auxiliaryLayer();
1058
1064 const QgsAuxiliaryLayer *auxiliaryLayer() const SIP_SKIP;
1065
1066 bool readSymbology( const QDomNode &layerNode, QString &errorMessage,
1067 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1068 bool readStyle( const QDomNode &node, QString &errorMessage,
1069 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1070 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1071 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1072 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1073 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1074
1083 bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QVariantMap &props = QVariantMap() ) const;
1084
1085 bool readSld( const QDomNode &node, QString &errorMessage ) FINAL;
1086
1092 long long featureCount( const QString &legendKey ) const;
1093
1100 QgsFeatureIds symbolFeatureIds( const QString &legendKey ) const;
1101
1112 FeatureAvailability hasFeatures() const FINAL;
1113
1114
1115 QString loadDefaultStyle( bool &resultFlag SIP_OUT ) FINAL;
1116
1130 QgsVectorLayerFeatureCounter *countSymbolFeatures( bool storeSymbolFids = false );
1131
1139 virtual bool setSubsetString( const QString &subset );
1140
1145 virtual QString subsetString() const;
1146
1152 QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const FINAL;
1153
1157 inline QgsFeatureIterator getFeatures( const QString &expression )
1158 {
1159 return getFeatures( QgsFeatureRequest( expression ) );
1160 }
1161
1167 {
1168 QgsFeature feature;
1169 getFeatures( QgsFeatureRequest( fid ) ).nextFeature( feature );
1170 return feature;
1171 }
1172
1177 QgsGeometry getGeometry( QgsFeatureId fid ) const;
1178
1183 {
1184 return getFeatures( QgsFeatureRequest( fids ) );
1185 }
1186
1191 {
1192 return getFeatures( QgsFeatureRequest( rectangle ) );
1193 }
1194
1195 bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1196
1222 bool updateFeature( QgsFeature &feature, bool skipDefaultValues = false );
1223
1235 bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex );
1236
1248 bool insertVertex( const QgsPoint &point, QgsFeatureId atFeatureId, int beforeVertex );
1249
1260 bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex );
1261
1272 bool moveVertex( const QgsPoint &p, QgsFeatureId atFeatureId, int atVertex ) SIP_PYNAME( moveVertexV2 );
1273
1284 Qgis::VectorEditResult deleteVertex( QgsFeatureId featureId, int vertex );
1285
1293 Q_INVOKABLE bool deleteSelectedFeatures( int *deletedCount = nullptr, QgsVectorLayer::DeleteContext *context = nullptr );
1294
1315 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addRing( const QVector<QgsPointXY> &ring, QgsFeatureId *featureId = nullptr ) SIP_DEPRECATED;
1316
1317
1337 Q_INVOKABLE Qgis::GeometryOperationResult addRing( const QgsPointSequence &ring, QgsFeatureId *featureId = nullptr );
1338
1359 Q_INVOKABLE Qgis::GeometryOperationResult addRing( QgsCurve *ring SIP_TRANSFER, QgsFeatureId *featureId = nullptr ) SIP_PYNAME( addCurvedRing );
1360
1380 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QList<QgsPointXY> &ring ) SIP_DEPRECATED;
1381
1382#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1383
1404 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QVector<QgsPointXY> &ring ) SIP_PYNAME( addPartV2 ) SIP_DEPRECATED;
1405#endif
1406
1426 Q_INVOKABLE Qgis::GeometryOperationResult addPart( const QgsPointSequence &ring ) SIP_PYNAME( addPartV2 );
1427
1435 Q_INVOKABLE Qgis::GeometryOperationResult addPart( QgsCurve *ring SIP_TRANSFER ) SIP_PYNAME( addCurvedPart );
1436
1448 Q_INVOKABLE int translateFeature( QgsFeatureId featureId, double dx, double dy );
1449
1470 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitParts( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1471
1491 Q_INVOKABLE Qgis::GeometryOperationResult splitParts( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1492
1513 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitFeatures( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1514
1534 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1535
1558 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsCurve *curve, QgsPointSequence &topologyTestPoints SIP_OUT, bool preserveCircular = false, bool topologicalEditing = false );
1559
1573 int addTopologicalPoints( const QgsGeometry &geom );
1574
1591 Q_DECL_DEPRECATED int addTopologicalPoints( const QgsPointXY &p ) SIP_DEPRECATED;
1592
1609 int addTopologicalPoints( const QgsPoint &p );
1610
1627 int addTopologicalPoints( const QgsPointSequence &ps );
1628
1635 const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
1636
1644
1649 void setLabeling( QgsAbstractVectorLayerLabeling *labeling SIP_TRANSFER );
1650
1652 bool isEditable() const FINAL;
1653
1655 bool isSpatial() const FINAL;
1656
1658 bool isModified() const override;
1659
1666 bool isAuxiliaryField( int index, int &srcIndex ) const;
1667
1669 void reload() FINAL;
1670
1675 QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) FINAL SIP_FACTORY;
1676
1677 QgsRectangle extent() const FINAL;
1678 QgsRectangle sourceExtent() const FINAL;
1679
1686 QgsFields fields() const FINAL;
1687
1691 inline QgsAttributeList attributeList() const { return mFields.allAttributesList(); }
1692
1696 QgsAttributeList primaryKeyAttributes() const;
1697
1703 long long featureCount() const FINAL;
1704
1711 bool setReadOnly( bool readonly = true );
1712
1718 bool supportsEditing() const override;
1719
1740 bool changeGeometry( QgsFeatureId fid, QgsGeometry &geometry, bool skipDefaultValue = false );
1741
1772 bool changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue = QVariant(), bool skipDefaultValues = false );
1773
1809 bool changeAttributeValues( QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues = QgsAttributeMap(), bool skipDefaultValues = false );
1810
1820 bool addAttribute( const QgsField &field );
1821
1827 void setFieldAlias( int index, const QString &aliasString );
1828
1834 void removeFieldAlias( int index );
1835
1846 bool renameAttribute( int index, const QString &newName );
1847
1854 QString attributeAlias( int index ) const;
1855
1857 QString attributeDisplayName( int index ) const;
1858
1860 QgsStringMap attributeAliases() const;
1861
1862#ifndef SIP_RUN
1863
1869 void setFieldSplitPolicy( int index, Qgis::FieldDomainSplitPolicy policy );
1870#else
1871
1878 void setFieldSplitPolicy( int index, Qgis::FieldDomainSplitPolicy policy );
1879
1880 % MethodCode
1881 if ( a0 < 0 || a0 >= sipCpp->fields().count() )
1882 {
1883 PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
1884 sipIsErr = 1;
1885 }
1886 else
1887 {
1888 sipCpp->setFieldSplitPolicy( a0, a1 );
1889 }
1890 % End
1891#endif
1892
1897 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWms() const SIP_DEPRECATED;
1898
1903 Q_DECL_DEPRECATED void setExcludeAttributesWms( const QSet<QString> &att ) SIP_DEPRECATED;
1904
1909 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWfs() const SIP_DEPRECATED;
1910
1915 Q_DECL_DEPRECATED void setExcludeAttributesWfs( const QSet<QString> &att ) SIP_DEPRECATED;
1916
1925 virtual bool deleteAttribute( int attr );
1926
1934 bool deleteAttributes( const QList<int> &attrs );
1935
1936 bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1937
1948 bool deleteFeature( QgsFeatureId fid, DeleteContext *context = nullptr );
1949
1963 bool deleteFeatures( const QgsFeatureIds &fids, DeleteContext *context = nullptr );
1964
1988 Q_INVOKABLE bool commitChanges( bool stopEditing = true );
1989
1995 QStringList commitErrors() const;
1996
2006 Q_INVOKABLE bool rollBack( bool deleteBuffer = true );
2007
2014 QList<QgsRelation> referencingRelations( int idx ) const;
2015
2025 QList<QgsWeakRelation> weakRelations() const SIP_SKIP;
2026
2035 void setWeakRelations( const QList< QgsWeakRelation > &relations ) SIP_SKIP;
2036
2038 Q_INVOKABLE QgsVectorLayerEditBuffer *editBuffer() { return mEditBuffer; }
2039
2044 const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
2045
2050 void beginEditCommand( const QString &text );
2051
2053 void endEditCommand();
2054
2056 void destroyEditCommand();
2057
2062 Q_DECL_DEPRECATED static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int vertexSize );
2063
2072 void updateFields();
2073
2088 QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
2089 QgsExpressionContext *context = nullptr ) const;
2090
2102 void setDefaultValueDefinition( int index, const QgsDefaultValue &definition );
2103
2114 QgsDefaultValue defaultValueDefinition( int index ) const;
2115
2123 QgsFieldConstraints::Constraints fieldConstraints( int fieldIndex ) const;
2124
2130 QMap< QgsFieldConstraints::Constraint, QgsFieldConstraints::ConstraintStrength> fieldConstraintsAndStrength( int fieldIndex ) const;
2131
2141
2149 void removeFieldConstraint( int index, QgsFieldConstraints::Constraint constraint );
2150
2158 QString constraintExpression( int index ) const;
2159
2167 QString constraintDescription( int index ) const;
2168
2177 void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
2178
2184 void setFieldConfigurationFlags( int index, Qgis::FieldConfigurationFlags flags );
2185
2190 void setFieldConfigurationFlag( int index, Qgis::FieldConfigurationFlag flag, bool active );
2191
2197 Qgis::FieldConfigurationFlags fieldConfigurationFlags( int index ) const;
2198
2202 void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
2203
2210 QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
2211
2223 QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;
2224
2238 QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
2239 QgsFeedback *feedback = nullptr ) const;
2240
2255 QVariant minimumValue( int index ) const FINAL;
2256
2271 QVariant maximumValue( int index ) const FINAL;
2272
2273
2293 void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;
2294
2309 QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
2310 const QString &fieldOrExpression,
2311 const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
2312 QgsExpressionContext *context = nullptr,
2313 bool *ok = nullptr,
2314 QgsFeatureIds *fids = nullptr,
2315 QgsFeedback *feedback = nullptr,
2316 QString *error SIP_PYARGREMOVE = nullptr ) const;
2317
2319 void setFeatureBlendMode( QPainter::CompositionMode blendMode );
2321 QPainter::CompositionMode featureBlendMode() const;
2322
2323 QString htmlMetadata() const FINAL;
2324
2329 void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mSimplifyMethod = simplifyMethod; }
2330
2335 inline const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
2336
2342 bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const;
2343
2351 QgsConditionalLayerStyles *conditionalStyles() const;
2352
2357 QgsAttributeTableConfig attributeTableConfig() const;
2358
2363 void setAttributeTableConfig( const QgsAttributeTableConfig &attributeTableConfig );
2364
2366
2367 QgsExpressionContextScope *createExpressionContextScope() const FINAL SIP_FACTORY;
2368
2376 QgsEditFormConfig editFormConfig() const;
2377
2384 void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
2385
2393 void setReadExtentFromXml( bool readExtentFromXml );
2394
2402 bool readExtentFromXml() const;
2403
2409 bool isEditCommandActive() const { return mEditCommandActive; }
2410
2416 QgsGeometryOptions *geometryOptions() const;
2417
2435 bool allowCommit() const SIP_SKIP;
2436
2454 void setAllowCommit( bool allowCommit ) SIP_SKIP;
2455
2461 QgsStoredExpressionManager *storedExpressionManager() { return mStoredExpressionManager; }
2462
2463 public slots:
2464
2472 void select( QgsFeatureId featureId );
2473
2481 Q_INVOKABLE void select( const QgsFeatureIds &featureIds );
2482
2490 void deselect( QgsFeatureId featureId );
2491
2499 Q_INVOKABLE void deselect( const QgsFeatureIds &featureIds );
2500
2507 Q_INVOKABLE void removeSelection();
2508
2519 void reselect();
2520
2527 virtual void updateExtents( bool force = false );
2528
2543 Q_INVOKABLE bool startEditing();
2544
2550 virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
2551
2553
2554 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
2555
2556 signals:
2557
2565 void selectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect );
2566
2573
2576
2579
2585 void beforeCommitChanges( bool stopEditing );
2586
2589
2595
2601
2610 void attributeAdded( int idx );
2611
2618 void beforeAddingExpressionField( const QString &fieldName );
2619
2628 void attributeDeleted( int idx );
2629
2637
2644
2654
2664 void featuresDeleted( const QgsFeatureIds &fids );
2665
2671
2677
2686 void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
2687
2695 void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
2696
2698 void committedAttributesDeleted( const QString &layerId, const QgsAttributeList &deletedAttributes );
2700 void committedAttributesAdded( const QString &layerId, const QList<QgsField> &addedAttributes );
2702 void committedFeaturesAdded( const QString &layerId, const QgsFeatureList &addedFeatures );
2704 void committedFeaturesRemoved( const QString &layerId, const QgsFeatureIds &deletedFeatureIds );
2706 void committedAttributeValuesChanges( const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues );
2708 void committedGeometriesChanges( const QString &layerId, const QgsGeometryMap &changedGeometries );
2709
2711 void labelingFontNotFound( QgsVectorLayer *layer, const QString &fontfamily );
2712
2714 void featureBlendModeChanged( QPainter::CompositionMode blendMode );
2715
2721 void editCommandStarted( const QString &text );
2722
2729
2736
2746 void readCustomSymbology( const QDomElement &element, QString &errorMessage );
2747
2757 void writeCustomSymbology( QDomElement &element, QDomDocument &doc, QString &errorMessage ) const;
2758
2765
2769 void raiseError( const QString &msg );
2770
2777
2787
2794
2801
2802 protected:
2804 void setExtent( const QgsRectangle &rect ) FINAL;
2805
2806 private slots:
2807 void invalidateSymbolCountedFlag();
2808 void onFeatureCounterCompleted();
2809 void onFeatureCounterTerminated();
2810 void onJoinedFieldsChanged();
2811 void onFeatureDeleted( QgsFeatureId fid );
2812 void onRelationsLoaded();
2813 void onSymbolsCounted();
2814 void onDirtyTransaction( const QString &sql, const QString &name );
2815 void emitDataChanged();
2816 void onAfterCommitChangesDependency();
2817
2818 private:
2819 void updateDefaultValues( QgsFeatureId fid, QgsFeature feature = QgsFeature() );
2820
2830 bool isReadOnly() const FINAL;
2831
2838 bool setDataProvider( QString const &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
2839
2851 void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
2852
2854 void readSldLabeling( const QDomNode &node );
2855
2857 bool readSldTextSymbolizer( const QDomNode &node, QgsPalLayerSettings &settings ) const;
2858
2860 QgsAbstractVectorLayerLabeling *readLabelingFromCustomProperties();
2861
2862 bool deleteFeatureCascade( QgsFeatureId fid, DeleteContext *context = nullptr );
2863
2864#ifdef SIP_RUN
2865 QgsVectorLayer( const QgsVectorLayer &rhs );
2866#endif
2868 void minimumOrMaximumValue( int index, QVariant *minimum, QVariant *maximum ) const;
2869
2870 void createEditBuffer();
2871 void clearEditBuffer();
2872
2873 QgsConditionalLayerStyles *mConditionalStyles = nullptr;
2874 QgsVectorDataProvider *mDataProvider = nullptr;
2875 QgsVectorLayerSelectionProperties *mSelectionProperties = nullptr;
2876 QgsVectorLayerTemporalProperties *mTemporalProperties = nullptr;
2877 QgsVectorLayerElevationProperties *mElevationProperties = nullptr;
2878
2880 QString mDisplayExpression;
2881
2883 QgsActionManager *mActions = nullptr;
2884
2886 bool mDataSourceReadOnly = false;
2887
2894 bool mReadOnly = false;
2895
2901 QgsFeatureIds mSelectedFeatureIds;
2902
2906 QgsFeatureIds mPreviousSelectedFeatureIds;
2907
2909 QgsFields mFields;
2910
2912 QgsStringMap mAttributeAliasMap;
2913
2915 QMap<QString, QgsDefaultValue> mDefaultExpressionMap;
2916
2918 QMap< QString, Qgis::FieldDomainSplitPolicy > mAttributeSplitPolicy;
2919
2921 QSet<int> mDefaultValueOnUpdateFields;
2922
2924 QMap< QString, QgsFieldConstraints::Constraints > mFieldConstraints;
2925
2927 QMap< QPair< QString, QgsFieldConstraints::Constraint >, QgsFieldConstraints::ConstraintStrength > mFieldConstraintStrength;
2928
2930 QMap< QString, QPair< QString, QString > > mFieldConstraintExpressions;
2931
2932 QMap< QString, Qgis::FieldConfigurationFlags > mFieldConfigurationFlags;
2933 QMap< QString, QgsEditorWidgetSetup > mFieldWidgetSetups;
2934
2936 QgsEditFormConfig mEditFormConfig;
2937
2940
2942 QgsFeatureRenderer *mRenderer = nullptr;
2943
2945 QgsVectorSimplifyMethod mSimplifyMethod;
2946
2948 QgsAbstractVectorLayerLabeling *mLabeling = nullptr;
2949
2951 bool mLabelsEnabled = false;
2952
2954 bool mLabelFontNotFoundNotified = false;
2955
2957 QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode_SourceOver;
2958
2960 bool mVertexMarkerOnlyForSelection = false;
2961
2962 QStringList mCommitErrors;
2963
2965 QgsVectorLayerEditBuffer *mEditBuffer = nullptr;
2969
2970 //stores information about joined layers
2971 QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
2972
2974 QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;
2975
2976 //diagram rendering object. 0 if diagram drawing is disabled
2977 QgsDiagramRenderer *mDiagramRenderer = nullptr;
2978
2979 //stores infos about diagram placement (placement type, priority, position distance)
2980 QgsDiagramLayerSettings *mDiagramLayerSettings = nullptr;
2981
2982 mutable bool mValidExtent = false;
2983 mutable bool mLazyExtent = true;
2984
2986 std::unique_ptr<QgsAuxiliaryLayer> mAuxiliaryLayer;
2987
2989 QString mAuxiliaryLayerKey;
2990
2991 // Features in renderer classes counted
2992 bool mSymbolFeatureCounted = false;
2993
2994 // Feature counts for each renderer legend key
2995 QHash<QString, long long> mSymbolFeatureCountMap;
2996 QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
2997
2999 bool mEditCommandActive = false;
3000
3002 bool mCommitChangesActive = false;
3003
3004 bool mReadExtentFromXml;
3005 QgsRectangle mXmlExtent;
3006
3007 QgsFeatureIds mDeletedFids;
3008
3009 QgsAttributeTableConfig mAttributeTableConfig;
3010
3011 mutable QMutex mFeatureSourceConstructorMutex;
3012
3013 QgsVectorLayerFeatureCounter *mFeatureCounter = nullptr;
3014
3015 std::unique_ptr<QgsGeometryOptions> mGeometryOptions;
3016
3017 bool mAllowCommit = true;
3018
3020 QgsStoredExpressionManager *mStoredExpressionManager = nullptr;
3021
3023
3025 bool mDataChangedFired = false;
3026
3027 QList<QgsWeakRelation> mWeakRelations;
3028
3029 bool mSetLegendFromStyle = false;
3030
3031 QList< QgsFeatureRendererGenerator * > mRendererGenerators;
3032
3034 QTimer *mRefreshRendererTimer = nullptr;
3035
3039 bool mLoadAllStoredStyle = false;
3040
3041};
3042
3043
3044
3045// clazy:excludeall=qstring-allocations
3046
3047#endif
The Qgis class provides global constants for use throughout the application.
Definition qgis.h:54
GeometryOperationResult
Success or failure of a geometry operation.
Definition qgis.h:1520
FieldDomainSplitPolicy
Split policy for field domains.
Definition qgis.h:2632
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:255
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1325
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:182
@ Unknown
Unknown.
FieldConfigurationFlag
Configuration flags for fields These flags are meant to be user-configurable and are not describing a...
Definition qgis.h:1213
SelectBehavior
Specifies how a selection should be applied.
Definition qgis.h:1263
@ 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 Qgis::WkbType 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:53
Container of fields for a vector layer.
Definition qgsfields.h:45
QgsAttributeList allAttributesList() const
Utility function to get list of attribute indexes.
The QgsGeometryOptions class contains options to automatically adjust geometries to constraints on a ...
A geometry is the spatial representation of a feature.
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 selection properties.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
Definition qgsmaplayer.h:74
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
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.
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:107
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
This class manages a set of relations between layers.
Contains information about the context of a rendering operation.
A boolean settings entry.
A double settings entry.
A template class for enum and flag settings entry.
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:94
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 layer selection properties for vector layers.
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...
#define str(x)
Definition qgis.cpp:38
QMap< QString, QString > QgsStringMap
Definition qgis.h:4877
#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
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
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
QList< int > QgsAttributeList
Definition qgsfield.h:27
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.