QGIS API Documentation
4.3.0-Master (52aa6503bed)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
quickgui
qgsquickcoordinatetransformer.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsquickcoordinatetransformer.cpp
3
--------------------------------------
4
Date : 1.6.2017
5
Copyright : (C) 2017 by Matthias Kuhn
6
Email : matthias (at) opengis.ch
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
#include "
qgsquickcoordinatetransformer.h
"
17
18
#include "
qgslogger.h
"
19
20
#include "moc_qgsquickcoordinatetransformer.cpp"
21
22
QgsQuickCoordinateTransformer::QgsQuickCoordinateTransformer
( QObject *parent )
23
: QObject( parent )
24
{
25
mCoordinateTransform.setSourceCrs(
QgsCoordinateReferenceSystem::fromEpsgId
( 4326 ) );
26
}
27
28
QgsPoint
QgsQuickCoordinateTransformer::projectedPosition
()
const
29
{
30
return
mProjectedPosition;
31
}
32
33
QgsPoint
QgsQuickCoordinateTransformer::sourcePosition
()
const
34
{
35
return
mSourcePosition;
36
}
37
38
void
QgsQuickCoordinateTransformer::setSourcePosition
(
const
QgsPoint
&
sourcePosition
)
39
{
40
if
( mSourcePosition ==
sourcePosition
)
41
return
;
42
43
mSourcePosition =
sourcePosition
;
44
45
emit
sourcePositionChanged
();
46
updatePosition();
47
}
48
49
QgsCoordinateReferenceSystem
QgsQuickCoordinateTransformer::destinationCrs
()
const
50
{
51
return
mCoordinateTransform.destinationCrs();
52
}
53
54
void
QgsQuickCoordinateTransformer::setDestinationCrs
(
const
QgsCoordinateReferenceSystem
&
destinationCrs
)
55
{
56
if
(
destinationCrs
== mCoordinateTransform.destinationCrs() )
57
return
;
58
59
mCoordinateTransform.setDestinationCrs(
destinationCrs
);
60
emit
destinationCrsChanged
();
61
updatePosition();
62
}
63
64
QgsCoordinateReferenceSystem
QgsQuickCoordinateTransformer::sourceCrs
()
const
65
{
66
return
mCoordinateTransform.sourceCrs();
67
}
68
69
void
QgsQuickCoordinateTransformer::setSourceCrs
(
const
QgsCoordinateReferenceSystem
&
sourceCrs
)
70
{
71
if
(
sourceCrs
== mCoordinateTransform.sourceCrs() )
72
return
;
73
74
mCoordinateTransform.setSourceCrs(
sourceCrs
);
75
76
emit
sourceCrsChanged
();
77
updatePosition();
78
}
79
80
void
QgsQuickCoordinateTransformer::setTransformContext
(
const
QgsCoordinateTransformContext
&context )
81
{
82
mCoordinateTransform.setContext( context );
83
emit
transformContextChanged
();
84
}
85
86
QgsCoordinateTransformContext
QgsQuickCoordinateTransformer::transformContext
()
const
87
{
88
return
mCoordinateTransform.context();
89
}
90
91
void
QgsQuickCoordinateTransformer::updatePosition()
92
{
93
double
x = mSourcePosition.
x
();
94
double
y = mSourcePosition.
y
();
95
double
z = mSourcePosition.
z
();
96
97
// If Z is NaN, coordinate transformation (proj4) will
98
// also set X and Y to NaN. But we also want to get projected
99
// coords if we do not have any Z coordinate.
100
if
( std::isnan( z ) )
101
{
102
z = 0;
103
}
104
105
try
106
{
107
mCoordinateTransform.transformInPlace( x, y, z );
108
}
109
catch
(
const
QgsCsException &exp )
110
{
111
QgsDebugError
( exp.
what
() );
112
}
113
114
mProjectedPosition = QgsPoint( x, y );
115
mProjectedPosition.addZValue( mSourcePosition.z() );
116
117
emit
projectedPositionChanged
();
118
}
QgsCoordinateReferenceSystem
Represents a coordinate reference system (CRS).
Definition
qgscoordinatereferencesystem.h:216
QgsCoordinateReferenceSystem::fromEpsgId
static Q_INVOKABLE QgsCoordinateReferenceSystem fromEpsgId(long epsg)
Creates a CRS from a given EPSG ID.
Definition
qgscoordinatereferencesystem.cpp:211
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition
qgscoordinatetransformcontext.h:61
QgsException::what
QString what() const
Definition
qgsexception.h:47
QgsPoint
Point geometry type, with support for z-dimension and m-values.
Definition
qgspoint.h:53
QgsPoint::z
double z
Definition
qgspoint.h:58
QgsPoint::x
double x
Definition
qgspoint.h:56
QgsPoint::y
double y
Definition
qgspoint.h:57
QgsQuickCoordinateTransformer::sourceCrs
QgsCoordinateReferenceSystem sourceCrs
Source CRS, default 4326.
Definition
qgsquickcoordinatetransformer.h:52
QgsQuickCoordinateTransformer::destinationCrs
QgsCoordinateReferenceSystem destinationCrs
Destination CRS.
Definition
qgsquickcoordinatetransformer.h:49
QgsQuickCoordinateTransformer::transformContextChanged
void transformContextChanged()
Transformation context, can be set from QgsQuickMapSettings::transformContext().
QgsQuickCoordinateTransformer::projectedPositionChanged
void projectedPositionChanged()
Projected (destination) position (in destination CRS).
QgsQuickCoordinateTransformer::sourcePositionChanged
void sourcePositionChanged()
Source position (in source CRS).
QgsQuickCoordinateTransformer::setTransformContext
void setTransformContext(const QgsCoordinateTransformContext &context)
Transformation context, can be set from QgsQuickMapSettings::transformContext().
Definition
qgsquickcoordinatetransformer.cpp:80
QgsQuickCoordinateTransformer::transformContext
QgsCoordinateTransformContext transformContext
Transformation context, can be set from QgsQuickMapSettings::transformContext().
Definition
qgsquickcoordinatetransformer.h:55
QgsQuickCoordinateTransformer::QgsQuickCoordinateTransformer
QgsQuickCoordinateTransformer(QObject *parent=nullptr)
Creates new coordinate transformer.
Definition
qgsquickcoordinatetransformer.cpp:22
QgsQuickCoordinateTransformer::sourceCrsChanged
void sourceCrsChanged()
Source CRS, default 4326.
QgsQuickCoordinateTransformer::setSourceCrs
void setSourceCrs(const QgsCoordinateReferenceSystem &sourceCrs)
Source CRS, default 4326.
Definition
qgsquickcoordinatetransformer.cpp:69
QgsQuickCoordinateTransformer::projectedPosition
QgsPoint projectedPosition
Projected (destination) position (in destination CRS).
Definition
qgsquickcoordinatetransformer.h:43
QgsQuickCoordinateTransformer::sourcePosition
QgsPoint sourcePosition
Source position (in source CRS).
Definition
qgsquickcoordinatetransformer.h:46
QgsQuickCoordinateTransformer::destinationCrsChanged
void destinationCrsChanged()
Destination CRS.
QgsQuickCoordinateTransformer::setSourcePosition
void setSourcePosition(const QgsPoint &sourcePosition)
Source position (in source CRS).
Definition
qgsquickcoordinatetransformer.cpp:38
QgsQuickCoordinateTransformer::setDestinationCrs
void setDestinationCrs(const QgsCoordinateReferenceSystem &destinationCrs)
Destination CRS.
Definition
qgsquickcoordinatetransformer.cpp:54
qgslogger.h
QgsDebugError
#define QgsDebugError(str)
Definition
qgslogger.h:71
qgsquickcoordinatetransformer.h
Generated on
for QGIS API Documentation by
1.17.0