QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgslayermetadata.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayermetadata.h
3 -------------------
4 begin : April 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot 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 QGSLAYERMETADATA_H
19#define QGSLAYERMETADATA_H
20
21#include "qgis_sip.h"
22#include "qgis_core.h"
24#include "qgsbox3d.h"
25#include "qgsrange.h"
27
28class QgsMapLayer;
29
56class CORE_EXPORT QgsLayerMetadata : public QgsAbstractMetadataBase
57{
58 public:
59
63 struct CORE_EXPORT SpatialExtent
64 {
65
73
83
84 // TODO c++20 - replace with = default
85 bool operator==( const QgsLayerMetadata::SpatialExtent &other ) const;
86 };
87
91 struct CORE_EXPORT Extent
92 {
93 public:
94
99 QList< QgsLayerMetadata::SpatialExtent > spatialExtents() const;
100
105 void setSpatialExtents( const QList< QgsLayerMetadata::SpatialExtent > &extents );
106
114 QList< QgsDateTimeRange > temporalExtents() const;
115
120 void setTemporalExtents( const QList< QgsDateTimeRange > &extents );
121
122 // TODO c++20 - replace with = default
123 bool operator==( const QgsLayerMetadata::Extent &other ) const;
124
125#ifndef SIP_RUN
126 private:
127
128 QList< QgsLayerMetadata::SpatialExtent > mSpatialExtents;
129 QList< QgsDateTimeRange > mTemporalExtents;
130
131#endif
132
133 };
134
138 struct CORE_EXPORT Constraint
139 {
140
144 Constraint( const QString &constraint = QString(), const QString &type = QString() )
145 : type( type )
146 , constraint( constraint )
147 {}
148
153 QString type;
154
158 QString constraint;
159
160 // TODO c++20 - replace with = default
161 bool operator==( const QgsLayerMetadata::Constraint &other ) const;
162
163 };
164
168 typedef QList< QgsLayerMetadata::Constraint > ConstraintList;
169
173 QgsLayerMetadata() = default;
174
175
176 QgsLayerMetadata *clone() const override SIP_FACTORY;
177
183 QString fees() const;
184
190 void setFees( const QString &fees );
191
196 QgsLayerMetadata::ConstraintList constraints() const;
197
203 void addConstraint( const QgsLayerMetadata::Constraint &constraint );
204
209 void setConstraints( const QgsLayerMetadata::ConstraintList &constraints );
210
215 QStringList rights() const;
216
221 void setRights( const QStringList &rights );
222
227 QStringList licenses() const;
228
234 void setLicenses( const QStringList &licenses );
235
240 QString encoding() const;
241
246 void setEncoding( const QString &encoding );
247
252 SIP_SKIP const QgsLayerMetadata::Extent &extent() const;
253
258 QgsLayerMetadata::Extent &extent();
259
264 void setExtent( const QgsLayerMetadata::Extent &extent );
265
284
306 void setCrs( const QgsCoordinateReferenceSystem &crs );
307
312 void saveToLayer( QgsMapLayer *layer ) const;
313
318 void readFromLayer( const QgsMapLayer *layer );
319
320 bool readMetadataXml( const QDomElement &metadataElement ) override;
321 bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const override;
322 void combine( const QgsAbstractMetadataBase *other ) override;
323
324 bool operator==( const QgsLayerMetadata &metadataOther ) const;
325
334 bool contains( const QString &searchString ) const;
335
342 bool matches( const QVector<QRegularExpression> &searchReList ) const;
343
344 private:
345
346 /*
347 * IMPORTANT!!!!!!
348 *
349 * Do NOT add anything to this class without also updating the schema
350 * definition located at resources/qgis-resource-metadata.xsd
351 *
352 */
353
354 QString mFees;
355 ConstraintList mConstraints;
356 QStringList mRights;
357 QStringList mLicenses;
358
359 // IMPORTANT - look up before adding anything here!!
360
361 QString mEncoding;
363
364 Extent mExtent;
365
366 /*
367 * IMPORTANT!!!!!!
368 *
369 * Do NOT add anything to this class without also updating the schema
370 * definition located at resources/qgis-resource-metadata.xsd
371 *
372 */
373
374};
375
379
380#endif // QGSLAYERMETADATA_H
An abstract base class for metadata stores.
virtual QgsAbstractMetadataBase * clone() const =0
Clones the metadata object.
A 3-dimensional box composed of x, y, z coordinates.
Definition: qgsbox3d.h:39
This class represents a coordinate reference system (CRS).
A structured metadata store for a map layer.
QgsLayerMetadata()=default
Constructor for QgsLayerMetadata.
QList< QgsLayerMetadata::Constraint > ConstraintList
A list of constraints.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_FACTORY
Definition: qgis_sip.h:76
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
const QgsCoordinateReferenceSystem & crs
Metadata constraint structure.
Constraint(const QString &constraint=QString(), const QString &type=QString())
Constructor for Constraint.
QString constraint
Free-form constraint string.
QString type
Constraint type.
Metadata extent structure.
Metadata spatial extent structure.
QgsCoordinateReferenceSystem extentCrs
Coordinate reference system for spatial extent.
QgsBox3d bounds
Geospatial extent of the resource.