QGIS API Documentation
3.14.0-Pi (9f7028fd23)
src
core
raster
qgsrasterprojector.h
Go to the documentation of this file.
1
/***************************************************************************
2
qgsrasterprojector.h - Raster projector
3
--------------------------------------
4
Date : Jan 16, 2011
5
Copyright : (C) 2005 by Radim Blazek
6
email : radim dot blazek 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
/* This code takes ideas from WarpBuilder in Geotools.
19
* Thank to Ing. Andrea Aime, Ing. Simone Giannecchini and GeoSolutions S.A.S.
20
* See : http://geo-solutions.blogspot.com/2011/01/developers-corner-improving.html
21
*/
22
23
#ifndef QGSRASTERPROJECTOR_H
24
#define QGSRASTERPROJECTOR_H
25
26
#include "qgis_core.h"
27
#include "
qgis_sip.h
"
28
#include <QVector>
29
#include <QList>
30
31
#include "
qgsrectangle.h
"
32
#include "
qgscoordinatereferencesystem.h
"
33
#include "
qgscoordinatetransform.h
"
34
#include "
qgsrasterinterface.h
"
35
36
#include <cmath>
37
38
class
QgsPointXY
;
39
47
class
CORE_EXPORT
QgsRasterProjector
:
public
QgsRasterInterface
48
{
49
Q_GADGET
50
51
public
:
52
57
enum
Precision
58
{
59
Approximate = 0,
60
Exact = 1,
61
};
62
Q_ENUM( Precision )
63
64
QgsRasterProjector
();
65
66
QgsRasterProjector
*
clone
() const override
SIP_FACTORY
;
67
68
int
bandCount() const override;
69
70
Qgis
::DataType dataType(
int
bandNo ) const override;
71
76
Q_DECL_DEPRECATED
void
setCrs( const
QgsCoordinateReferenceSystem
&srcCRS, const
QgsCoordinateReferenceSystem
&destCRS,
77
int
srcDatumTransform = -1,
int
destDatumTransform = -1 )
SIP_DEPRECATED
;
78
83
void
setCrs( const
QgsCoordinateReferenceSystem
&srcCRS, const
QgsCoordinateReferenceSystem
&destCRS,
84
QgsCoordinateTransformContext
transformContext );
85
87
QgsCoordinateReferenceSystem
sourceCrs()
const
{
return
mSrcCRS; }
88
90
QgsCoordinateReferenceSystem
destinationCrs
()
const
{
return
mDestCRS; }
91
92
Precision
precision
()
const
{
return
mPrecision; }
93
void
setPrecision
(
Precision
precision
) { mPrecision =
precision
; }
94
// Translated precision mode, for use in ComboBox etc.
95
static
QString precisionLabel( Precision
precision
);
96
97
QgsRasterBlock
*
block
(
int
bandNo,
const
QgsRectangle
&extent,
int
width,
int
height,
QgsRasterBlockFeedback
*feedback =
nullptr
) override
SIP_FACTORY
;
98
100
bool
destExtentSize( const
QgsRectangle
&srcExtent,
int
srcXSize,
int
srcYSize,
101
QgsRectangle
&destExtent
SIP_OUT
,
int
&destXSize
SIP_OUT
,
int
&destYSize
SIP_OUT
);
102
104
static
bool
extentSize( const
QgsCoordinateTransform
&ct,
105
const
QgsRectangle
&srcExtent,
int
srcXSize,
int
srcYSize,
106
QgsRectangle
&destExtent
SIP_OUT
,
int
&destXSize
SIP_OUT
,
int
&destYSize
SIP_OUT
);
107
108
private:
109
111
QgsCoordinateReferenceSystem
mSrcCRS;
112
114
QgsCoordinateReferenceSystem
mDestCRS;
115
117
Q_DECL_DEPRECATED
int
mSrcDatumTransform = -1;
118
120
Q_DECL_DEPRECATED
int
mDestDatumTransform = -1;
121
123
Precision mPrecision = Approximate;
124
125
QgsCoordinateTransformContext
mTransformContext;
126
127
};
128
129
130
#ifndef SIP_RUN
131
138
class
ProjectorData
139
{
140
public
:
142
ProjectorData(
const
QgsRectangle
&extent,
int
width,
int
height,
QgsRasterInterface
*input,
const
QgsCoordinateTransform
&inverseCt,
QgsRasterProjector::Precision
precision
,
QgsRasterBlockFeedback
*feedback =
nullptr
);
143
~ProjectorData();
144
145
ProjectorData(
const
ProjectorData &other ) =
delete
;
146
ProjectorData &operator=(
const
ProjectorData &other ) =
delete
;
147
153
bool
srcRowCol(
int
destRow,
int
destCol,
int
*srcRow,
int
*srcCol );
154
155
QgsRectangle
srcExtent()
const
{
return
mSrcExtent; }
156
int
srcRows()
const
{
return
mSrcRows; }
157
int
srcCols()
const
{
return
mSrcCols; }
158
159
private
:
160
162
void
destPointOnCPMatrix(
int
row,
int
col,
double
*theX,
double
*theY );
163
165
int
matrixRow(
int
destRow );
166
168
int
matrixCol(
int
destCol );
169
171
inline
bool
preciseSrcRowCol(
int
destRow,
int
destCol,
int
*srcRow,
int
*srcCol );
172
174
inline
bool
approximateSrcRowCol(
int
destRow,
int
destCol,
int
*srcRow,
int
*srcCol );
175
177
void
insertRows(
const
QgsCoordinateTransform
&ct );
178
180
void
insertCols(
const
QgsCoordinateTransform
&ct );
181
183
void
calcCP(
int
row,
int
col,
const
QgsCoordinateTransform
&ct );
184
186
bool
calcRow(
int
row,
const
QgsCoordinateTransform
&ct );
187
189
bool
calcCol(
int
col,
const
QgsCoordinateTransform
&ct );
190
192
void
calcSrcExtent();
193
195
void
calcSrcRowsCols();
196
200
bool
checkCols(
const
QgsCoordinateTransform
&ct );
201
205
bool
checkRows(
const
QgsCoordinateTransform
&ct );
206
208
void
calcHelper(
int
matrixRow,
QgsPointXY
*points );
209
211
void
nextHelper();
212
214
QString cpToString();
215
219
bool
mApproximate;
220
222
QgsCoordinateTransform
mInverseCt;
223
225
QgsRectangle
mDestExtent;
226
228
QgsRectangle
mSrcExtent;
229
231
QgsRectangle
mExtent;
232
234
int
mDestRows;
235
237
int
mDestCols;
238
240
double
mDestXRes;
241
243
double
mDestYRes;
244
246
int
mSrcRows;
247
249
int
mSrcCols;
250
252
double
mSrcXRes;
253
255
double
mSrcYRes;
256
258
double
mDestRowsPerMatrixRow;
259
261
double
mDestColsPerMatrixCol;
262
264
QList< QList<QgsPointXY> > mCPMatrix;
265
267
/* Same size as mCPMatrix */
268
QList< QList<bool> > mCPLegalMatrix;
269
271
/* Warning: using QList is slow on access */
272
QgsPointXY
*pHelperTop =
nullptr
;
273
275
/* Warning: using QList is slow on access */
276
QgsPointXY
*pHelperBottom =
nullptr
;
277
279
int
mHelperTopRow;
280
282
int
mCPCols;
284
int
mCPRows;
285
287
double
mSqrTolerance;
288
290
double
mMaxSrcXRes;
291
double
mMaxSrcYRes;
292
293
};
294
296
#endif
297
298
#endif
299
QgsCoordinateTransformContext
Definition:
qgscoordinatetransformcontext.h:57
qgsrectangle.h
SIP_OUT
#define SIP_OUT
Definition:
qgis_sip.h:58
QgsRectangle
Definition:
qgsrectangle.h:41
SIP_FACTORY
#define SIP_FACTORY
Definition:
qgis_sip.h:76
QgsRasterProjector
QgsRasterProjector implements approximate projection support for it calculates grid of points in sour...
Definition:
qgsrasterprojector.h:47
SIP_DEPRECATED
#define SIP_DEPRECATED
Definition:
qgis_sip.h:106
precision
int precision
Definition:
qgswfsgetfeature.cpp:103
qgsrasterinterface.h
QgsRasterProjector::destinationCrs
QgsCoordinateReferenceSystem destinationCrs() const
Returns the destination CRS.
Definition:
qgsrasterprojector.h:90
qgis_sip.h
QgsRasterInterface::clone
virtual QgsRasterInterface * clone() const =0
Clone itself, create deep copy.
qgscoordinatetransform.h
QgsCoordinateReferenceSystem
Definition:
qgscoordinatereferencesystem.h:206
QgsRasterProjector::setPrecision
void setPrecision(Precision precision)
Definition:
qgsrasterprojector.h:93
QgsPointXY
Definition:
qgspointxy.h:43
QgsRasterProjector::precision
Precision precision() const
Definition:
qgsrasterprojector.h:92
QgsRasterInterface
Definition:
qgsrasterinterface.h:116
QgsRasterBlockFeedback
Definition:
qgsrasterinterface.h:40
Qgis
Definition:
qgis.h:45
QgsRasterInterface::block
virtual QgsRasterBlock * block(int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback=nullptr)=0
Read block of data using given extent and size.
QgsCoordinateTransform
Definition:
qgscoordinatetransform.h:52
qgscoordinatereferencesystem.h
QgsRasterBlock
Definition:
qgsrasterblock.h:36
QgsRasterProjector::Precision
Precision
Precision defines if each pixel is reprojected or approximate reprojection based on an approximation ...
Definition:
qgsrasterprojector.h:57
Generated on Mon Jun 22 2020 05:14:09 for QGIS API Documentation by
1.8.17