QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsrasteriterator.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrasteriterator.h
3 ---------------------
4 begin : July 2012
5 copyright : (C) 2012 by Marco Hugentobler
6 email : marco dot hugentobler at sourcepole dot 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#ifndef QGSRASTERITERATOR_H
16#define QGSRASTERITERATOR_H
17
18#include "qgis_core.h"
19#include "qgsrectangle.h"
20#include "qgis_sip.h"
21#include <QMap>
22
23class QgsMapToPixel;
24class QgsRasterBlock;
29
34class CORE_EXPORT QgsRasterIterator
35{
36 public:
37
43 QgsRasterIterator( QgsRasterInterface *input, int tileOverlapPixels = 0 );
44
62 static QgsRectangle subRegion( const QgsRectangle &rasterExtent, int rasterWidth, int rasterHeight, const QgsRectangle &subRegion, int &subRegionWidth SIP_OUT, int &subRegionHeight SIP_OUT, int &subRegionLeft SIP_OUT, int &subRegionTop SIP_OUT );
63
72 void startRasterRead( int bandNumber, qgssize nCols, qgssize nRows, const QgsRectangle &extent, QgsRasterBlockFeedback *feedback = nullptr );
73
93 bool next( int bandNumber, int &columns SIP_OUT, int &rows SIP_OUT, int &topLeftColumn SIP_OUT, int &topLeftRow SIP_OUT, QgsRectangle &blockExtent SIP_OUT );
94
106 bool readNextRasterPart( int bandNumber,
107 int &nCols, int &nRows,
109 int &topLeftCol, int &topLeftRow );
110
128 bool readNextRasterPart( int bandNumber,
129 int &nCols, int &nRows,
130 std::unique_ptr< QgsRasterBlock > &block,
131 int &topLeftCol, int &topLeftRow,
132 QgsRectangle *blockExtent = nullptr,
133 int *tileColumns = nullptr, int *tileRows = nullptr, int *tileTopLeftColumn = nullptr, int *tileTopLeftRow = nullptr ) SIP_SKIP;
134
138 void stopRasterRead( int bandNumber );
139
143 const QgsRasterInterface *input() const { return mInput; }
144
150 void setMaximumTileWidth( int w ) { mMaximumTileWidth = w; }
151
157 int maximumTileWidth() const { return mMaximumTileWidth; }
158
164 void setMaximumTileHeight( int h ) { mMaximumTileHeight = h; }
165
171 int maximumTileHeight() const { return mMaximumTileHeight; }
172
174 static const int DEFAULT_MAXIMUM_TILE_WIDTH = 2000;
175
177 static const int DEFAULT_MAXIMUM_TILE_HEIGHT = 2000;
178
179 private:
180 //Stores information about reading of a raster band. Columns and rows are in unsampled coordinates
181 struct RasterPartInfo
182 {
183 qgssize currentCol;
184 qgssize currentRow;
185 qgssize nCols;
186 qgssize nRows;
187 };
188
189 QgsRasterInterface *mInput = nullptr;
190 QMap<int, RasterPartInfo> mRasterPartInfos;
191 QgsRectangle mExtent;
192 QgsRasterBlockFeedback *mFeedback = nullptr;
193
194 int mTileOverlapPixels = 0;
195 int mMaximumTileWidth;
196 int mMaximumTileHeight;
197
199 void removePartInfo( int bandNumber );
200 bool readNextRasterPartInternal( int bandNumber, int &nCols, int &nRows, std::unique_ptr<QgsRasterBlock> *block, int &topLeftCol, int &topLeftRow, QgsRectangle *blockExtent, int &tileColumns, int &tileRows, int &tileTopLeftColumn, int &tileTopLeftRow );
201};
202
203#endif // QGSRASTERITERATOR_H
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Feedback object tailored for raster block reading.
Raster data container.
Base class for processing filters like renderers, reprojector, resampler etc.
Iterator for sequentially processing raster cells.
int maximumTileWidth() const
Returns the maximum tile width returned during iteration.
const QgsRasterInterface * input() const
Returns the input raster interface which is being iterated over.
void setMaximumTileWidth(int w)
Sets the maximum tile width returned during iteration.
int maximumTileHeight() const
Returns the minimum tile width returned during iteration.
void setMaximumTileHeight(int h)
Sets the minimum tile height returned during iteration.
QgsRasterProjector implements approximate projection support for it calculates grid of points in sour...
A rectangle specified with double values.
Definition: qgsrectangle.h:42
unsigned long long qgssize
Qgssize is used instead of size_t, because size_t is stdlib type, unknown by SIP, and it would be har...
Definition: qgis.h:5747
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_TRANSFERBACK
Definition: qgis_sip.h:48
This class provides details of the viewable area that a raster will be rendered into.