QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgsremappingproxyfeaturesink.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsremappingproxyfeaturesink.h
3  ----------------------
4  begin : April 2020
5  copyright : (C) 2020 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 QGSREMAPPINGPROXYFEATURESINK_H
19 #define QGSREMAPPINGPROXYFEATURESINK_H
20 
21 #include "qgis_core.h"
22 #include "qgis.h"
23 #include "qgsfeaturesink.h"
24 #include "qgsproperty.h"
25 
37 class CORE_EXPORT QgsRemappingSinkDefinition
38 {
39  public:
40 
51  QMap< QString, QgsProperty > fieldMap() const { return mFieldMap; }
52 
63  void setFieldMap( const QMap< QString, QgsProperty > &map ) { mFieldMap = map; }
64 
74  void addMappedField( const QString &destinationField, const QgsProperty &property ) { mFieldMap.insert( destinationField, property ); }
75 
81  QgsCoordinateReferenceSystem sourceCrs() const { return mSourceCrs; }
82 
88  void setSourceCrs( const QgsCoordinateReferenceSystem &source ) { mSourceCrs = source; }
89 
95  QgsCoordinateReferenceSystem destinationCrs() const { return mDestinationCrs; }
96 
102  void setDestinationCrs( const QgsCoordinateReferenceSystem &destination ) { mDestinationCrs = destination; }
103 
109  QgsWkbTypes::Type destinationWkbType() const { return mDestinationWkbType; }
110 
116  void setDestinationWkbType( QgsWkbTypes::Type type ) { mDestinationWkbType = type; }
117 
123  QgsFields destinationFields() const { return mDestinationFields; }
124 
130  void setDestinationFields( const QgsFields &fields ) { mDestinationFields = fields; }
131 
137  QVariant toVariant() const;
138 
144  bool loadVariant( const QVariantMap &map );
145 
146  bool operator==( const QgsRemappingSinkDefinition &other ) const;
147  bool operator!=( const QgsRemappingSinkDefinition &other ) const;
148 
149  private:
150 
151  QMap< QString, QgsProperty > mFieldMap;
152 
153  QgsCoordinateReferenceSystem mSourceCrs;
154  QgsCoordinateReferenceSystem mDestinationCrs;
155 
156  QgsWkbTypes::Type mDestinationWkbType = QgsWkbTypes::Unknown;
157 
158  QgsFields mDestinationFields;
159 
160 };
161 
163 
164 
165 
166 
179 {
180  public:
181 
182 #ifndef SIP_RUN
183 
192  QgsRemappingProxyFeatureSink( const QgsRemappingSinkDefinition &mappingDefinition, QgsFeatureSink *sink, bool ownsSink = false );
193 #else
194 
200 #endif
201 
202  ~QgsRemappingProxyFeatureSink() override;
203 
207  void setExpressionContext( const QgsExpressionContext &context );
208 
212  void setTransformContext( const QgsCoordinateTransformContext &context );
213 
217  QgsFeatureList remapFeature( const QgsFeature &feature ) const;
218 
219  bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) override;
220  bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) override;
221  bool addFeatures( QgsFeatureIterator &iterator, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) override;
222  QString lastError() const override;
223 
227  QgsFeatureSink *destinationSink() { return mSink; }
228 
229  private:
230 
231  QgsRemappingSinkDefinition mDefinition;
232  QgsCoordinateTransform mTransform;
233  QgsFeatureSink *mSink = nullptr;
234  mutable QgsExpressionContext mContext;
235  bool mOwnsSink = false;
236 };
237 
238 #endif // QGSREMAPPINGPROXYFEATURESINK_H
239 
240 
241 
242 
QgsExpressionContext
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Definition: qgsexpressioncontext.h:370
QgsRemappingProxyFeatureSink::destinationSink
QgsFeatureSink * destinationSink()
Returns the destination QgsFeatureSink which the proxy will forward features to.
Definition: qgsremappingproxyfeaturesink.h:227
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition: qgscoordinatetransformcontext.h:58
QgsRemappingSinkDefinition::setDestinationWkbType
void setDestinationWkbType(QgsWkbTypes::Type type)
Sets the WKB geometry type for the destination.
Definition: qgsremappingproxyfeaturesink.h:116
QgsProperty
A store for object properties.
Definition: qgsproperty.h:232
QgsRemappingSinkDefinition::setDestinationCrs
void setDestinationCrs(const QgsCoordinateReferenceSystem &destination)
Sets the destination crs used for reprojecting incoming features to the sink's destination CRS.
Definition: qgsremappingproxyfeaturesink.h:102
QgsRemappingSinkDefinition
Defines the parameters used to remap features when creating a QgsRemappingProxyFeatureSink.
Definition: qgsremappingproxyfeaturesink.h:38
operator==
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
Definition: qgsfeatureiterator.h:400
QgsRemappingSinkDefinition::destinationCrs
QgsCoordinateReferenceSystem destinationCrs() const
Returns the destination CRS used for reprojecting incoming features to the sink's destination CRS.
Definition: qgsremappingproxyfeaturesink.h:95
QgsFields
Container of fields for a vector layer.
Definition: qgsfields.h:45
qgsfeaturesink.h
QgsRemappingSinkDefinition::destinationWkbType
QgsWkbTypes::Type destinationWkbType() const
Returns the WKB geometry type for the destination.
Definition: qgsremappingproxyfeaturesink.h:109
qgis.h
QgsWkbTypes::Type
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
QgsRemappingSinkDefinition::fieldMap
QMap< QString, QgsProperty > fieldMap() const
Returns the field mapping, which defines how to map the values from incoming features to destination ...
Definition: qgsremappingproxyfeaturesink.h:51
operator!=
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
Definition: qgsfeatureiterator.h:405
QgsRemappingSinkDefinition::setSourceCrs
void setSourceCrs(const QgsCoordinateReferenceSystem &source)
Sets the source crs used for reprojecting incoming features to the sink's destination CRS.
Definition: qgsremappingproxyfeaturesink.h:88
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(QgsMeshTimeSettings)
QgsWkbTypes::Unknown
@ Unknown
Definition: qgswkbtypes.h:71
QgsRemappingSinkDefinition::setDestinationFields
void setDestinationFields(const QgsFields &fields)
Sets the fields for the destination sink.
Definition: qgsremappingproxyfeaturesink.h:130
QgsFeatureList
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:583
QgsRemappingSinkDefinition::addMappedField
void addMappedField(const QString &destinationField, const QgsProperty &property)
Adds a mapping for a destination field.
Definition: qgsremappingproxyfeaturesink.h:74
QgsRemappingSinkDefinition::destinationFields
QgsFields destinationFields() const
Returns the fields for the destination sink.
Definition: qgsremappingproxyfeaturesink.h:123
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:206
QgsRemappingProxyFeatureSink
A QgsFeatureSink which proxies incoming features to a destination feature sink, after applying transf...
Definition: qgsremappingproxyfeaturesink.h:179
QgsRemappingSinkDefinition::setFieldMap
void setFieldMap(const QMap< QString, QgsProperty > &map)
Sets the field mapping, which defines how to map the values from incoming features to destination fie...
Definition: qgsremappingproxyfeaturesink.h:63
qgsproperty.h
QgsFeature
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:56
QgsRemappingSinkDefinition::sourceCrs
QgsCoordinateReferenceSystem sourceCrs() const
Returns the source CRS used for reprojecting incoming features to the sink's destination CRS.
Definition: qgsremappingproxyfeaturesink.h:81
QgsCoordinateTransform
Class for doing transforms between two map coordinate systems.
Definition: qgscoordinatetransform.h:53
QgsFeatureIterator
Wrapper for iterator of features from vector data provider or vector layer.
Definition: qgsfeatureiterator.h:265
QgsFeatureSink
An interface for objects which accept features via addFeature(s) methods.
Definition: qgsfeaturesink.h:34