QGIS API Documentation 3.39.0-Master (bca3cdb6021)
Loading...
Searching...
No Matches
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
55class CORE_EXPORT QgsLayerMetadata : public QgsAbstractMetadataBase
56{
57 public:
58
62 struct CORE_EXPORT SpatialExtent
63 {
64
72
82
83 // TODO c++20 - replace with = default
84 bool operator==( const QgsLayerMetadata::SpatialExtent &other ) const;
85 };
86
90 struct CORE_EXPORT Extent
91 {
92 public:
93
98 QList< QgsLayerMetadata::SpatialExtent > spatialExtents() const;
99
104 void setSpatialExtents( const QList< QgsLayerMetadata::SpatialExtent > &extents );
105
113 QList< QgsDateTimeRange > temporalExtents() const;
114
119 void setTemporalExtents( const QList< QgsDateTimeRange > &extents );
120
121 // TODO c++20 - replace with = default
122 bool operator==( const QgsLayerMetadata::Extent &other ) const;
123
124#ifndef SIP_RUN
125 private:
126
127 QList< QgsLayerMetadata::SpatialExtent > mSpatialExtents;
128 QList< QgsDateTimeRange > mTemporalExtents;
129
130#endif
131
132 };
133
137 struct CORE_EXPORT Constraint
138 {
139
143 Constraint( const QString &constraint = QString(), const QString &type = QString() )
144 : type( type )
145 , constraint( constraint )
146 {}
147
152 QString type;
153
157 QString constraint;
158
159 // TODO c++20 - replace with = default
160 bool operator==( const QgsLayerMetadata::Constraint &other ) const;
161
162 };
163
167 typedef QList< QgsLayerMetadata::Constraint > ConstraintList;
168
169 QgsLayerMetadata() = default;
170
171
172 QgsLayerMetadata *clone() const override SIP_FACTORY;
173
179 QString fees() const;
180
186 void setFees( const QString &fees );
187
192 QgsLayerMetadata::ConstraintList constraints() const;
193
199 void addConstraint( const QgsLayerMetadata::Constraint &constraint );
200
205 void setConstraints( const QgsLayerMetadata::ConstraintList &constraints );
206
211 QStringList rights() const;
212
217 void setRights( const QStringList &rights );
218
223 QStringList licenses() const;
224
230 void setLicenses( const QStringList &licenses );
231
236 QString encoding() const;
237
242 void setEncoding( const QString &encoding );
243
248 SIP_SKIP const QgsLayerMetadata::Extent &extent() const;
249
254 QgsLayerMetadata::Extent &extent();
255
260 void setExtent( const QgsLayerMetadata::Extent &extent );
261
280
302 void setCrs( const QgsCoordinateReferenceSystem &crs );
303
308 void saveToLayer( QgsMapLayer *layer ) const;
309
314 void readFromLayer( const QgsMapLayer *layer );
315
316 bool readMetadataXml( const QDomElement &metadataElement ) override;
317 bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const override;
318 void combine( const QgsAbstractMetadataBase *other ) override;
319
320 bool operator==( const QgsLayerMetadata &metadataOther ) const;
321
330 bool contains( const QString &searchString ) const;
331
338 bool matches( const QVector<QRegularExpression> &searchReList ) const;
339
340 private:
341
342 /*
343 * IMPORTANT!!!!!!
344 *
345 * Do NOT add anything to this class without also updating the schema
346 * definition located at resources/qgis-resource-metadata.xsd
347 *
348 */
349
350 QString mFees;
351 ConstraintList mConstraints;
352 QStringList mRights;
353 QStringList mLicenses;
354
355 // IMPORTANT - look up before adding anything here!!
356
357 QString mEncoding;
359
360 Extent mExtent;
361
362 /*
363 * IMPORTANT!!!!!!
364 *
365 * Do NOT add anything to this class without also updating the schema
366 * definition located at resources/qgis-resource-metadata.xsd
367 *
368 */
369
370};
371
375
376#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:43
This class represents a coordinate reference system (CRS).
A structured metadata store for a map layer.
QgsLayerMetadata()=default
QList< QgsLayerMetadata::Constraint > ConstraintList
A list of constraints.
Base class for all map layer types.
Definition qgsmaplayer.h:76
#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.