QGIS API Documentation  3.2.0-Bonn (bc43194)
qgsjsonutils.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsjsonutils.h
3  -------------
4  Date : May 206
5  Copyright : (C) 2016 Nyall Dawson
6  Email : nyall dot dawson at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSJSONUTILS_H
17 #define QGSJSONUTILS_H
18 
19 #include "qgis_core.h"
20 #include "qgsfeature.h"
22 #include "qgscoordinatetransform.h"
23 #include "qgsfields.h"
24 #include "qgsvectorlayer.h"
25 
26 class QTextCodec;
27 
38 class CORE_EXPORT QgsJsonExporter
39 {
40  public:
41 
48  QgsJsonExporter( QgsVectorLayer *vectorLayer = nullptr, int precision = 6 );
49 
56  void setPrecision( int precision ) { mPrecision = precision; }
57 
62  int precision() const { return mPrecision; }
63 
69  void setIncludeGeometry( bool includeGeometry ) { mIncludeGeometry = includeGeometry; }
70 
75  bool includeGeometry() const { return mIncludeGeometry; }
76 
82  void setIncludeAttributes( bool includeAttributes ) { mIncludeAttributes = includeAttributes; }
83 
88  bool includeAttributes() const { return mIncludeAttributes; }
89 
97  void setIncludeRelated( bool includeRelated ) { mIncludeRelatedAttributes = includeRelated; }
98 
103  bool includeRelated() const { return mIncludeRelatedAttributes; }
104 
111  void setVectorLayer( QgsVectorLayer *vectorLayer );
112 
117  QgsVectorLayer *vectorLayer() const;
118 
126  void setSourceCrs( const QgsCoordinateReferenceSystem &crs );
127 
133  QgsCoordinateReferenceSystem sourceCrs() const;
134 
144  void setAttributes( const QgsAttributeList &attributes ) { mAttributeIndexes = attributes; }
145 
154  QgsAttributeList attributes() const { return mAttributeIndexes; }
155 
163  void setExcludedAttributes( const QgsAttributeList &attributes ) { mExcludedAttributeIndexes = attributes; }
164 
171  QgsAttributeList excludedAttributes() const { return mExcludedAttributeIndexes; }
172 
182  QString exportFeature( const QgsFeature &feature,
183  const QVariantMap &extraProperties = QVariantMap(),
184  const QVariant &id = QVariant() ) const;
185 
186 
193  QString exportFeatures( const QgsFeatureList &features ) const;
194 
195  private:
196 
198  int mPrecision;
199 
204  QgsAttributeList mAttributeIndexes;
205 
207  QgsAttributeList mExcludedAttributeIndexes;
208 
210  bool mIncludeGeometry = true;
211 
213  bool mIncludeAttributes = true;
214 
216  bool mIncludeRelatedAttributes = false;
217 
219  QPointer< QgsVectorLayer > mLayer;
220 
222 
223  QgsCoordinateTransform mTransform;
224 
225 };
226 
234 class CORE_EXPORT QgsJsonUtils
235 {
236  public:
237 
247  static QgsFeatureList stringToFeatureList( const QString &string, const QgsFields &fields, QTextCodec *encoding );
248 
257  static QgsFields stringToFields( const QString &string, QTextCodec *encoding );
258 
265  static QString encodeValue( const QVariant &value );
266 
275  static QString exportAttributes( const QgsFeature &feature, QgsVectorLayer *layer = nullptr,
276  const QVector<QVariant> &attributeWidgetCaches = QVector<QVariant>() );
277 
284  static QVariantList parseArray( const QString &json, QVariant::Type type );
285 };
286 
287 #endif // QGSJSONUTILS_H
QgsAttributeList excludedAttributes() const
Returns a list of attributes which will be specifically excluded from the JSON exports.
Definition: qgsjsonutils.h:171
bool includeRelated() const
Returns whether attributes of related (child) features will be included in the JSON exports...
Definition: qgsjsonutils.h:103
void setIncludeAttributes(bool includeAttributes)
Sets whether to include attributes in the JSON exports.
Definition: qgsjsonutils.h:82
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:549
void setIncludeGeometry(bool includeGeometry)
Sets whether to include geometry in the JSON exports.
Definition: qgsjsonutils.h:69
Helper utilities for working with JSON and GeoJSON conversions.
Definition: qgsjsonutils.h:234
Container of fields for a vector layer.
Definition: qgsfields.h:42
bool includeAttributes() const
Returns whether attributes will be included in the JSON exports.
Definition: qgsjsonutils.h:88
int precision() const
Returns the maximum number of decimal places to use in geometry coordinates.
Definition: qgsjsonutils.h:62
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:62
void setAttributes(const QgsAttributeList &attributes)
Sets the list of attributes to include in the JSON exports.
Definition: qgsjsonutils.h:144
void setExcludedAttributes(const QgsAttributeList &attributes)
Sets a list of attributes to specifically exclude from the JSON exports.
Definition: qgsjsonutils.h:163
QgsAttributeList attributes() const
Returns the list of attributes which will be included in the JSON exports, or an empty list if all at...
Definition: qgsjsonutils.h:154
void setIncludeRelated(bool includeRelated)
Sets whether to include attributes of features linked via references in the JSON exports.
Definition: qgsjsonutils.h:97
Handles exporting QgsFeature features to GeoJSON features.
Definition: qgsjsonutils.h:38
bool includeGeometry() const
Returns whether geometry will be included in the JSON exports.
Definition: qgsjsonutils.h:75
This class represents a coordinate reference system (CRS).
Class for doing transforms between two map coordinate systems.
QList< int > QgsAttributeList
Definition: qgsfield.h:27
void setPrecision(int precision)
Sets the maximum number of decimal places to use in geometry coordinates.
Definition: qgsjsonutils.h:56
Represents a vector layer which manages a vector based data sets.