23 #ifndef QGSRASTERDATAPROVIDER_H 24 #define QGSRASTERDATAPROVIDER_H 26 #include "qgis_core.h" 67 virtual void start() = 0;
75 void finish(
const QImage &legend );
77 void progress( qint64 received, qint64 total );
79 void error(
const QString &msg );
99 NoProviderCapabilities = 0,
100 ReadLayerMetadata = 1 << 1,
101 WriteLayerMetadata = 1 << 2,
102 ProviderHintBenefitsFromResampling = 1 << 3
126 virtual QgsRasterDataProvider::ProviderCapabilities providerCapabilities()
const;
152 switch ( colorInterpretation )
155 return QStringLiteral(
"Undefined" );
158 return QStringLiteral(
"Gray" );
161 return QStringLiteral(
"Palette" );
164 return QStringLiteral(
"Red" );
167 return QStringLiteral(
"Green" );
170 return QStringLiteral(
"Blue" );
173 return QStringLiteral(
"Alpha" );
176 return QStringLiteral(
"Hue" );
179 return QStringLiteral(
"Saturation" );
182 return QStringLiteral(
"Lightness" );
185 return QStringLiteral(
"Cyan" );
188 return QStringLiteral(
"Magenta" );
191 return QStringLiteral(
"Yellow" );
194 return QStringLiteral(
"Black" );
197 return QStringLiteral(
"YCbCr_Y" );
200 return QStringLiteral(
"YCbCr_Cb" );
203 return QStringLiteral(
"YCbCr_Cr" );
206 return QStringLiteral(
"Unknown" );
214 return colorName( colorInterpretation( bandNo ) );
221 virtual double bandScale(
int bandNo )
const { Q_UNUSED( bandNo )
return 1.0; }
227 virtual double bandOffset(
int bandNo )
const { Q_UNUSED( bandNo )
return 0.0; }
241 virtual void setUseSourceNoDataValue(
int bandNo,
bool use );
244 virtual double sourceNoDataValue(
int bandNo )
const {
return mSrcNoDataValue.value( bandNo - 1 ); }
251 virtual QList<QgsColorRampShader::ColorRampItem>
colorTable(
int bandNo )
const 252 { Q_UNUSED( bandNo )
return QList<QgsColorRampShader::ColorRampItem>(); }
260 return QStringList();
280 Q_UNUSED( forceRefresh )
281 Q_UNUSED( visibleExtent )
300 Q_UNUSED( mapSettings )
306 const QString &resamplingMethod =
"NEAREST",
308 const QStringList &configOptions = QStringList(),
311 Q_UNUSED( pyramidList )
312 Q_UNUSED( resamplingMethod )
314 Q_UNUSED( configOptions )
316 return QStringLiteral(
"FAILED_NOT_SUPPORTED" );
328 { Q_UNUSED( overviewList )
return QList<QgsRasterPyramid>(); }
337 virtual QString htmlMetadata() = 0;
380 virtual double sample(
const QgsPointXY &point,
int band,
392 virtual QString lastErrorTitle() = 0;
403 virtual QString lastError() = 0;
406 virtual QString lastErrorFormat();
409 int dpi()
const {
return mDpi; }
438 virtual bool setEditable(
bool enabled ) { Q_UNUSED( enabled )
return false; }
442 virtual bool write(
void *data,
int band,
int width,
int height,
int xOffset,
int yOffset )
469 bool writeBlock(
QgsRasterBlock *block,
int band,
int xOffset = 0,
int yOffset = 0 );
474 const QString &format,
int nBands,
476 int width,
int height,
double *geoTransform,
478 const QStringList &createOptions = QStringList() );
485 virtual bool setNoDataValue(
int bandNo,
double noDataValue ) { Q_UNUSED( bandNo ) Q_UNUSED( noDataValue );
return false; }
488 virtual bool remove() {
return false; }
494 static QList<QPair<QString, QString> > pyramidResamplingMethods(
const QString &providerKey );
502 { Q_UNUSED( createOptions ) Q_UNUSED( format );
return QString(); }
509 const QStringList &configOptions,
const QString &fileFormat )
510 { Q_UNUSED( pyramidsFormat ) Q_UNUSED( configOptions ); Q_UNUSED( fileFormat );
return QString(); }
539 virtual QList< double > nativeResolutions()
const;
547 virtual bool ignoreExtents()
const;
555 void statusChanged(
const QString & )
const;
565 { Q_UNUSED( bandNo ) Q_UNUSED( xBlock ); Q_UNUSED( yBlock ); Q_UNUSED( data );
return false; }
573 { Q_UNUSED( bandNo ) Q_UNUSED( viewExtent ); Q_UNUSED( width ); Q_UNUSED( height ); Q_UNUSED( data ); Q_UNUSED( feedback );
return false; }
576 bool userNoDataValuesContains(
int bandNo,
double value )
const;
616 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsRasterDataProvider::ProviderCapabilities )
A rectangle specified with double values.
bool setInput(QgsRasterInterface *input) override
Set input.
Black band of CMLY image.
virtual bool readBlock(int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback=nullptr)
Reads a block of raster data into data, using the given extent and size.
Handles asynchronous download of images.
virtual QList< QgsColorRampShader::ColorRampItem > colorTable(int bandNo) const
virtual double bandOffset(int bandNo) const
Read band offset for raster value.
A class to represent a 2D point.
QDateTime mTimestamp
Timestamp of data in the moment when the data were loaded by provider.
DataType
Raster data types.
virtual QgsImageFetcher * getLegendGraphicFetcher(const QgsMapSettings *mapSettings)
Returns a new image downloader for the raster legend.
Capability
If you add to this, please also add to capabilitiesString()
virtual QImage getLegendGraphic(double scale=0, bool forceRefresh=false, const QgsRectangle *visibleExtent=nullptr)
Returns the legend rendered as pixmap.
virtual bool supportsLegendGraphic() const
Returns whether the provider supplies a legend graphic.
virtual bool setNoDataValue(int bandNo, double noDataValue)
Set no data value on created dataset.
Abstract base class for spatial data provider implementations.
virtual Qgis::DataType dataType(int bandNo) const =0
Returns data type for the band specified by number.
const QgsCoordinateReferenceSystem & crs
virtual QString buildPyramids(const QList< QgsRasterPyramid > &pyramidList, const QString &resamplingMethod="NEAREST", QgsRaster::RasterPyramidsFormat format=QgsRaster::PyramidsGTiff, const QStringList &configOptions=QStringList(), QgsRasterBlockFeedback *feedback=nullptr)
Create pyramid overviews.
virtual double sourceNoDataValue(int bandNo) const
Value representing no data value.
virtual QString validatePyramidsConfigOptions(QgsRaster::RasterPyramidsFormat pyramidsFormat, const QStringList &configOptions, const QString &fileFormat)
Validates pyramid creation options for a specific dataset and destination format. ...
The QgsMapSettings class contains configuration for rendering of the map.
QDateTime timestamp() const override
Time stamp of data source in the moment when data/metadata were loaded by provider.
Raster identify results container.
ProviderCapability
Enumeration with capabilities that raster providers might implement.
Lightness band of HLS image.
int dpi() const
Returns the dpi of the output device.
virtual bool setEditable(bool enabled)
Turns on/off editing mode of the provider.
Paletted (see associated color table)
Alpha (0=transparent, 255=opaque)
Green band of RGBA image.
virtual QList< QgsRasterPyramid > buildPyramidList(QList< int > overviewList=QList< int >())
Returns the raster layers pyramid list.
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.
static const int DEFAULT_MAXIMUM_TILE_HEIGHT
Default maximum tile height.
virtual bool reload()
Reload data (data could change)
QList< bool > mSrcHasNoDataValue
Source no data value exists.
virtual QString colorInterpretationName(int bandNo) const
virtual Qgis::DataType sourceDataType(int bandNo) const
Returns source data type for the band specified by number, source data type may be shorter than dataT...
Base class for processing filters like renderers, reprojector, resampler etc.
virtual bool isEditable() const
Checks whether the provider is in editing mode, i.e.
virtual bool sourceHasNoDataValue(int bandNo) const
Returns true if source band has no data value.
Saturation band of HLS image.
QList< double > mSrcNoDataValue
Source no data value is available and is set to be used or internal no data is available.
virtual bool readBlock(int bandNo, int xBlock, int yBlock, void *data)
Reads a block of raster data into data.
virtual int stepHeight() const
Step height for raster iterations.
Setting options for creating vector data providers.
QString colorName(int colorInterpretation) const
QList< QgsRasterRange > QgsRasterRangeList
virtual QgsRasterInterface * clone() const =0
Clone itself, create deep copy.
This class represents a coordinate reference system (CRS).
QStringList subLayers() const override
Returns the sublayers of this layer - useful for providers that manage their own layers, such as WMS.
virtual QgsRasterRangeList userNoDataValues(int bandNo) const
Returns a list of user no data value ranges.
virtual int stepWidth() const
Step width for raster iterations.
Magenta band of CMYK image.
virtual QString validateCreationOptions(const QStringList &createOptions, const QString &format)
Validates creation options for a specific dataset and destination format.
virtual QgsRectangle extent() const =0
Returns the extent of the layer.
virtual bool write(void *data, int band, int width, int height, int xOffset, int yOffset)
Writes into the provider datasource.
QDateTime dataTimestamp() const override
Current time stamp of data source.
virtual bool useSourceNoDataValue(int bandNo) const
Returns the source nodata value usage.
Feedback object tailored for raster block reading.
static const int DEFAULT_MAXIMUM_TILE_WIDTH
Default maximum tile width.
void setDpi(int dpi)
Sets the output device resolution.
QgsImageFetcher(QObject *parent=nullptr)
Constructor.
virtual int colorInterpretation(int bandNo) const
Returns data type for the band specified by number.
Base class for raster data providers.
QList< QgsRasterRangeList > mUserNoDataValue
List of lists of user defined additional no data values for each band, indexed from 0...
QList< bool > mUseSrcNoDataValue
Use source nodata value.
Yellow band of CMYK image.
virtual double bandScale(int bandNo) const
Read band scale for raster value.