mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-25 00:05:03 -04:00
Moved all temporary projector members to a private class, so even recursive block() calls will not affect each other (there is no new performance penalty as block() call always recomputes the temporary control point matrix anyway)
62 lines
2.3 KiB
Plaintext
62 lines
2.3 KiB
Plaintext
|
|
/** \ingroup core
|
|
* \brief QgsRasterProjector implements approximate projection support for
|
|
* it calculates grid of points in source CRS for target CRS + extent
|
|
* which are used to calculate affine transformation matrices.
|
|
* \class QgsRasterProjector
|
|
*/
|
|
class QgsRasterProjector : QgsRasterInterface
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgsrasterprojector.h>
|
|
#include <qgscoordinatereferencesystem.h>
|
|
%End
|
|
|
|
public:
|
|
/** Precision defines if each pixel is reprojected or approximate reprojection based
|
|
* on an approximation matrix of reprojected points is used.
|
|
*/
|
|
enum Precision
|
|
{
|
|
Approximate, //!< Approximate (default), fast but possibly inaccurate
|
|
Exact, //!< Exact, precise but slow
|
|
};
|
|
|
|
QgsRasterProjector();
|
|
|
|
/** \brief The destructor */
|
|
~QgsRasterProjector();
|
|
|
|
virtual QgsRasterProjector *clone() const /Factory/;
|
|
|
|
int bandCount() const;
|
|
|
|
int dataType( int bandNo ) const;
|
|
|
|
/** \brief set source and destination CRS */
|
|
void setCrs( const QgsCoordinateReferenceSystem & theSrcCRS, const QgsCoordinateReferenceSystem & theDestCRS,
|
|
int srcDatumTransform = -1, int destDatumTransform = -1 );
|
|
|
|
/** \brief Get source CRS */
|
|
QgsCoordinateReferenceSystem sourceCrs() const;
|
|
|
|
/** \brief Get destination CRS */
|
|
QgsCoordinateReferenceSystem destinationCrs() const;
|
|
|
|
Precision precision() const;
|
|
void setPrecision( Precision precision );
|
|
// Translated precision mode, for use in ComboBox etc.
|
|
static QString precisionLabel( Precision precision );
|
|
|
|
QgsRasterBlock *block( int bandNo, const QgsRectangle & extent, int width, int height, QgsRasterBlockFeedback* feedback = nullptr ) / Factory /;
|
|
|
|
/** Calculate destination extent and size from source extent and size */
|
|
bool destExtentSize( const QgsRectangle& theSrcExtent, int theSrcXSize, int theSrcYSize,
|
|
QgsRectangle& theDestExtent, int& theDestXSize, int& theDestYSize );
|
|
|
|
/** Calculate destination extent and size from source extent and size */
|
|
static bool extentSize( const QgsCoordinateTransform& ct,
|
|
const QgsRectangle& theSrcExtent, int theSrcXSize, int theSrcYSize,
|
|
QgsRectangle& theDestExtent, int& theDestXSize, int& theDestYSize );
|
|
};
|