QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
qgscoordinatetransform_p.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscoordinatetransform_p.h
3 --------------------------
4 begin : July 2016
5 copyright : (C) 2016 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#ifndef QGSCOORDINATETRANSFORMPRIVATE_H
18#define QGSCOORDINATETRANSFORMPRIVATE_H
19
20#include "qgsconfig.h"
21
22#define SIP_NO_FILE
23
25
26//
27// W A R N I N G
28// -------------
29//
30// This file is not part of the QGIS API. It exists purely as an
31// implementation detail. This header file may change from version to
32// version without notice, or even be removed.
33//
34
35#include <QSharedData>
36
37struct PJconsts;
38typedef struct PJconsts PJ;
39typedef PJ *ProjData;
40
43
44class QgsCoordinateTransformPrivate : public QSharedData
45{
46 public:
47 explicit QgsCoordinateTransformPrivate();
48
49 QgsCoordinateTransformPrivate( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, const QgsCoordinateTransformContext &context );
50
51 QgsCoordinateTransformPrivate( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, int sourceDatumTransform, int destDatumTransform );
52
53 QgsCoordinateTransformPrivate( const QgsCoordinateTransformPrivate &other );
54
55 ~QgsCoordinateTransformPrivate();
56
57 bool checkValidity();
58
59 void invalidate();
60
61 bool initialize();
62
63 void calculateTransforms( const QgsCoordinateTransformContext &context );
64
65 ProjData threadLocalProjData();
66
67 int mAvailableOpCount = -1;
68 ProjData threadLocalFallbackProjData();
69
70 // Only meant to be called by QgsCoordinateTransform::removeFromCacheObjectsBelongingToCurrentThread()
71 bool removeObjectsBelongingToCurrentThread( void *pj_context );
72
77 bool mIsValid = false;
78
83 bool mShortCircuit = false;
84
86 bool mGeographicToWebMercator = false;
87
89 bool mHasVerticalComponent = false;
90
93
96
97 Q_DECL_DEPRECATED QString mSourceProjString;
98 Q_DECL_DEPRECATED QString mDestProjString;
99
100 Q_DECL_DEPRECATED int mSourceDatumTransform = -1;
101 Q_DECL_DEPRECATED int mDestinationDatumTransform = -1;
102 QString mProjCoordinateOperation;
103 bool mShouldReverseCoordinateOperation = false;
104 bool mAllowFallbackTransforms = true;
105
106 bool mSourceIsDynamic = false;
107 bool mDestIsDynamic = false;
108 double mSourceCoordinateEpoch = std::numeric_limits< double >::quiet_NaN();
109 double mDestCoordinateEpoch = std::numeric_limits< double >::quiet_NaN();
110 double mDefaultTime = std::numeric_limits< double >::quiet_NaN();
111
113 bool mIsReversed = false;
114
115 QReadWriteLock mProjLock;
116 QMap< uintptr_t, ProjData > mProjProjections;
117 QMap< uintptr_t, ProjData > mProjFallbackProjections;
118
126 static void setCustomMissingRequiredGridHandler(
127 const std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::GridDetails &grid )> &handler
128 );
129
141 static void setCustomMissingPreferredGridHandler(
142 const std::function< void(
143 const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::TransformDetails &preferredOperation, const QgsDatumTransform::TransformDetails &availableOperation
144 )> &handler
145 );
146
154 static void setCustomCoordinateOperationCreationErrorHandler(
155 const std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QString &error )> &handler
156 );
157
165 static void setCustomMissingGridUsedByContextHandler(
166 const std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::TransformDetails &desiredOperation )> &handler
167 );
168
175 static void setDynamicCrsToDynamicCrsWarningHandler( const std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs )> &handler );
176
177 private:
178 void freeProj();
179
180 static std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::GridDetails &grid )> sMissingRequiredGridHandler;
181
182 static std::function<
183 void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::TransformDetails &preferredOperation, const QgsDatumTransform::TransformDetails &availableOperation )>
184 sMissingPreferredGridHandler;
185
186 static std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QString &error )> sCoordinateOperationCreationErrorHandler;
187
188 static std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::TransformDetails &desiredOperation )>
189 sMissingGridUsedByContextHandler;
190
191 static std::function< void( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs )> sDynamicCrsToDynamicCrsWarningHandler;
192
193 QgsCoordinateTransformPrivate &operator=( const QgsCoordinateTransformPrivate & ) = delete;
194};
195
197
198#endif // QGSCOORDINATETRANSFORMPRIVATE_H
Represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
struct PJconsts PJ
Contains information about a projection transformation grid file.
Contains information about a coordinate transformation operation.