QGIS API Documentation
3.8.0-Zanzibar (11aff65)
src
core
qgsprojutils.h
Go to the documentation of this file.
1
/***************************************************************************
2
qgsprojutils.h
3
-------------------
4
begin : March 2019
5
copyright : (C) 2019 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
#ifndef QGSPROJUTILS_H
18
#define QGSPROJUTILS_H
19
20
#include <QtGlobal>
21
22
#include "qgis_core.h"
23
#include "qgsconfig.h"
24
#include "
qgsdatumtransform.h
"
25
#include <memory>
26
#include <QStringList>
27
28
#if !defined(USE_THREAD_LOCAL) || defined(Q_OS_WIN)
29
#include <QThreadStorage>
30
#endif
31
32
#if PROJ_VERSION_MAJOR>=6
33
#ifndef SIP_RUN
34
struct
PJconsts;
35
typedef
struct
PJconsts PJ;
36
#endif
37
#endif
38
45
class
CORE_EXPORT
QgsProjUtils
46
{
47
public
:
48
52
static
int
projVersionMajor
()
53
{
54
return
PROJ_VERSION_MAJOR;
55
}
56
63
static
QStringList searchPaths();
64
65
#ifndef SIP_RUN
66
#if PROJ_VERSION_MAJOR >= 6
67
71
struct
ProjPJDeleter
72
{
73
77
void
CORE_EXPORT operator()( PJ *
object
);
78
79
};
80
84
using
proj_pj_unique_ptr = std::unique_ptr< PJ, ProjPJDeleter >;
85
90
static
bool
usesAngularUnit(
const
QString &projDef );
91
92
//TODO - remove when proj 6.1 is minimum supported version, and replace with proj_normalize_for_visualization
93
98
static
bool
axisOrderIsSwapped(
const
PJ *
crs
);
99
104
static
proj_pj_unique_ptr crsToSingleCrs(
const
PJ *crs );
105
109
static
bool
coordinateOperationIsAvailable(
const
QString &projDef );
110
114
static
QList< QgsDatumTransform::GridDetails > gridsUsed(
const
QString &proj );
115
116
117
#if 0 // not possible in current Proj 6 API
118
123
static
QStringList nonAvailableGrids(
const
QString &projDef );
124
#endif
125
#endif
126
#endif
127
};
128
129
#ifndef SIP_RUN
130
131
#if PROJ_VERSION_MAJOR>=6
132
struct
projCtx_t;
133
typedef
struct
projCtx_t
PJ_CONTEXT
;
134
#else
135
typedef
void
PJ_CONTEXT
;
136
#endif
137
145
class
CORE_EXPORT
QgsProjContext
146
{
147
public
:
148
149
QgsProjContext
();
150
~
QgsProjContext
();
151
155
static
PJ_CONTEXT
*
get
();
156
157
private
:
158
PJ_CONTEXT
*mContext =
nullptr
;
159
164
#if defined(USE_THREAD_LOCAL) && !defined(Q_OS_WIN)
165
static
thread_local
QgsProjContext
sProjContext;
166
#else
167
static
QThreadStorage< QgsProjContext * > sProjContext;
168
#endif
169
};
170
171
#endif
172
#endif // QGSPROJUTILS_H
QgsProjUtils::projVersionMajor
static int projVersionMajor()
Returns the proj library major version number.
Definition:
qgsprojutils.h:52
qgsdatumtransform.h
crs
const QgsCoordinateReferenceSystem & crs
Definition:
qgswfsgetfeature.cpp:49
QgsProjContext
Used to create and store a proj context object, correctly freeing the context upon destruction...
Definition:
qgsprojutils.h:145
PJ_CONTEXT
void PJ_CONTEXT
Definition:
qgsprojutils.h:135
QgsProjUtils
Utility functions for working with the proj library.
Definition:
qgsprojutils.h:45
Generated on Sat Jun 22 2019 09:24:07 for QGIS API Documentation by
1.8.13