23#ifndef QGSRASTERDATAPROVIDER_H 
   24#define QGSRASTERDATAPROVIDER_H 
   78    void progress( qint64 received, qint64 total );
 
   80    void error( 
const QString &msg );
 
 
  148    QString colorInterpretationName( 
int bandNo ) 
const override;
 
  153    virtual double bandScale( 
int bandNo )
 const { Q_UNUSED( bandNo ) 
return 1.0; }
 
  158    virtual double bandOffset( 
int bandNo )
 const { Q_UNUSED( bandNo ) 
return 0.0; }
 
  175    virtual 
bool sourceHasNoDataValue( 
int bandNo )
 const { 
return mSrcHasNoDataValue.
value( bandNo - 1 ); }
 
  181    virtual void setUseSourceNoDataValue( 
int bandNo, 
bool use );
 
  184    virtual double sourceNoDataValue( 
int bandNo )
 const { 
return mSrcNoDataValue.value( bandNo - 1 ); }
 
  191    virtual QList<QgsColorRampShader::ColorRampItem> 
colorTable( 
int bandNo )
 const 
  192    { Q_UNUSED( bandNo ) 
return QList<QgsColorRampShader::ColorRampItem>(); }
 
 
  200      return QStringList();
 
 
  209    virtual 
bool supportsLegendGraphic()
 const { 
return false; }
 
  225      Q_UNUSED( forceRefresh )
 
  226      Q_UNUSED( visibleExtent )
 
 
  244      Q_UNUSED( mapSettings )
 
 
  265                                   const QString &resamplingMethod = 
"NEAREST",
 
  267                                   const QStringList &configOptions = QStringList(),
 
  270      Q_UNUSED( pyramidList )
 
  271      Q_UNUSED( resamplingMethod )
 
  273      Q_UNUSED( configOptions )
 
  275      return QStringLiteral( 
"FAILED_NOT_SUPPORTED" );
 
 
  296    virtual QList<QgsRasterPyramid> 
buildPyramidList( 
const QList<int> &overviewList = QList<int>() )
 
  297    { Q_UNUSED( overviewList ) 
return QList<QgsRasterPyramid>(); }
 
 
  350    virtual double sample( 
const QgsPointXY &point, 
int band,
 
  376    virtual QString lastErrorFormat();
 
  379    int dpi()
 const { 
return mDpi; }
 
  385    QDateTime 
timestamp()
 const override { 
return mTimestamp; }
 
  408    virtual bool setEditable( 
bool enabled ) { Q_UNUSED( enabled ) 
return false; }
 
  413    virtual bool write( 
const void *data, 
int band, 
int width, 
int height, 
int xOffset, 
int yOffset )
 
 
  440    bool writeBlock( 
QgsRasterBlock *block, 
int band, 
int xOffset = 0, 
int yOffset = 0 );
 
  447                                          const QString &format, 
int nBands,
 
  449                                          int width, 
int height, 
double *geoTransform,
 
  451                                          const QStringList &createOptions = QStringList() );
 
  458    virtual bool setNoDataValue( 
int bandNo, 
double noDataValue ) { Q_UNUSED( bandNo ) Q_UNUSED( noDataValue ); 
return false; }
 
  467    static QList<QPair<QString, QString> > pyramidResamplingMethods( 
const QString &providerKey );
 
  519    { Q_UNUSED( createOptions ) Q_UNUSED( format ); 
return QString(); }
 
 
  526        const QStringList &configOptions, 
const QString &fileFormat )
 
  527    { Q_UNUSED( pyramidsFormat ) Q_UNUSED( configOptions ); Q_UNUSED( fileFormat ); 
return QString(); }
 
 
  573    virtual QList< double > nativeResolutions() 
const;
 
  581    virtual bool ignoreExtents() 
const;
 
  605    virtual QgsPoint transformCoordinates( 
const QgsPoint &point, TransformType type );
 
  672    void readXml( 
const QDomElement &filterElem ) 
override;
 
  674    void writeXml( QDomDocument &doc, QDomElement &parentElem ) 
const override;
 
  699    void removeAttributeTable( 
int bandNumber );
 
  708    bool writeFileBasedAttributeTable( 
int bandNumber, 
const QString &path, QString *errorMessage 
SIP_OUT = 
nullptr ) 
const;
 
  716    bool readFileBasedAttributeTable( 
int bandNumber, 
const QString &path, QString *errorMessage 
SIP_OUT = 
nullptr );
 
  728    virtual bool writeNativeAttributeTable( QString *errorMessage 
SIP_OUT = 
nullptr );  
 
  738    virtual bool readNativeAttributeTable( QString *errorMessage 
SIP_OUT  = 
nullptr );
 
  746    virtual QString bandDescription( 
int bandNumber );
 
  765    { Q_UNUSED( bandNo ) Q_UNUSED( xBlock ); Q_UNUSED( yBlock ); Q_UNUSED( data ); 
return false; }
 
 
  773    { Q_UNUSED( bandNo ) Q_UNUSED( viewExtent ); Q_UNUSED( width ); Q_UNUSED( height ); Q_UNUSED( data ); Q_UNUSED( feedback ); 
return false; }
 
 
  776    bool userNoDataValuesContains( 
int bandNo, 
double value ) 
const;
 
  815    bool mProviderResamplingEnabled = 
false;
 
  824    double mMaxOversampling = 2.0;
 
  831    std::unique_ptr< QgsRasterDataProviderTemporalCapabilities > mTemporalCapabilities;
 
  833    std::unique_ptr< QgsRasterDataProviderElevationProperties > mElevationProperties;
 
  835    std::map<int, std::unique_ptr<QgsRasterAttributeTable>> mAttributeTables;
 
 
QFlags< RasterProviderCapability > RasterProviderCapabilities
Raster data provider capabilities.
 
RasterPyramidFormat
Raster pyramid formats.
 
@ GeoTiff
Geotiff .ovr (external)
 
RasterResamplingMethod
Resampling method for raster provider-level resampling.
 
@ Nearest
Nearest-neighbour resampling.
 
RasterInterfaceCapability
Raster interface capabilities.
 
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
 
DataType
Raster data types.
 
RasterColorInterpretation
Raster color interpretation.
 
RasterIdentifyFormat
Raster identify formats.
 
Represents a coordinate reference system (CRS).
 
Abstract base class for spatial data provider implementations.
 
Container of fields for a vector layer.
 
Handles asynchronous download of images.
 
QgsImageFetcher(QObject *parent=nullptr)
Constructor.
 
void progress(qint64 received, qint64 total)
Emitted to report progress.
 
void error(const QString &msg)
Emitted when an error occurs.
 
void finish(const QImage &legend)
Emitted when the download completes.
 
virtual void start()=0
Starts the image download.
 
Contains configuration for rendering maps.
 
Point geometry type, with support for z-dimension and m-values.
 
Represents a Raster Attribute Table (RAT).
 
Feedback object tailored for raster block reading.
 
double value(int row, int column) const
Read a single value if type of block is numeric.
 
Handles elevation related properties for a raster data provider.
 
Implementation of data provider temporal properties for QgsRasterDataProviders.
 
Base class for raster data providers.
 
virtual QgsFields fields() const
Returns the fields of the raster layer for data providers that expose them, the default implementatio...
 
virtual bool write(const void *data, int band, int width, int height, int xOffset, int yOffset)
Writes into the provider datasource.
 
QList< bool > mUseSrcNoDataValue
Use source nodata value.
 
TransformType
Types of transformation in transformCoordinates() function.
 
@ TransformLayerToImage
Transforms layer (georeferenced) coordinates to image coordinates.
 
@ TransformImageToLayer
Transforms image coordinates to layer (georeferenced) coordinates.
 
QgsRasterDataProvider * clone() const override=0
Clone itself, create deep copy.
 
virtual bool setNoDataValue(int bandNo, double noDataValue)
Set no data value on created dataset.
 
virtual double bandOffset(int bandNo) const
Read band offset for raster value.
 
Qgis::RasterResamplingMethod zoomedInResamplingMethod() const
Returns resampling method for zoomed-in operations.
 
virtual QString buildPyramids(const QList< QgsRasterPyramid > &pyramidList, const QString &resamplingMethod="NEAREST", Qgis::RasterPyramidFormat format=Qgis::RasterPyramidFormat::GeoTiff, const QStringList &configOptions=QStringList(), QgsRasterBlockFeedback *feedback=nullptr)
Creates pyramid overviews.
 
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.
 
virtual QSize maximumTileSize() const
Returns the maximum tile size in pixels for the data provider.
 
virtual bool useSourceNoDataValue(int bandNo) const
Returns the source nodata value usage.
 
virtual QString validateCreationOptions(const QStringList &createOptions, const QString &format)
Validates creation options for a specific dataset and destination format.
 
virtual QString lastError()=0
Returns the verbose error text for the last error in this provider.
 
Qgis::DataType sourceDataType(int bandNo) const override=0
Returns source data type for the band specified by number, source data type may be shorter than dataT...
 
bool isProviderResamplingEnabled() const
Returns whether provider-level resampling is enabled.
 
virtual bool setZoomedInResamplingMethod(Qgis::RasterResamplingMethod method)
Set resampling method to apply for zoomed-in operations.
 
virtual bool remove()
Remove dataset.
 
virtual double sourceNoDataValue(int bandNo) const
Value representing no data value.
 
virtual QImage getLegendGraphic(double scale=0, bool forceRefresh=false, const QgsRectangle *visibleExtent=nullptr)
Returns the legend rendered as pixmap.
 
virtual bool reload()
Reload data (data could change)
 
QList< QgsRasterRangeList > mUserNoDataValue
List of lists of user defined additional no data values for each band, indexed from 0.
 
virtual bool isEditable() const
Checks whether the provider is in editing mode, i.e.
 
virtual bool setZoomedOutResamplingMethod(Qgis::RasterResamplingMethod method)
Set resampling method to apply for zoomed-out operations.
 
virtual bool enableProviderResampling(bool enable)
Enable or disable provider-level resampling.
 
void setDpi(int dpi)
Sets the output device resolution.
 
QDateTime timestamp() const override
Time stamp of data source in the moment when data/metadata were loaded by provider.
 
QgsRectangle extent() const override=0
Returns the extent of the layer.
 
virtual bool setMaxOversampling(double factor)
Sets maximum oversampling factor for zoomed-out operations.
 
Qgis::DataType dataType(int bandNo) const override=0
Returns data type for the band specified by number.
 
virtual QString validatePyramidsConfigOptions(Qgis::RasterPyramidFormat pyramidsFormat, const QStringList &configOptions, const QString &fileFormat)
Validates pyramid creation options for a specific dataset and destination format.
 
double maxOversampling() const
Returns maximum oversampling factor for zoomed-out operations.
 
QStringList subLayers() const override
Returns the sublayers of this layer - useful for providers that manage their own layers,...
 
virtual double bandScale(int bandNo) const
Read band scale for raster value.
 
int dpi() const
Returns the dpi of the output device.
 
Qgis::RasterResamplingMethod zoomedOutResamplingMethod() const
Returns resampling method for zoomed-out operations.
 
QDateTime dataTimestamp() const override
Current time stamp of data source.
 
virtual QList< QgsColorRampShader::ColorRampItem > colorTable(int bandNo) const
 
QList< double > mSrcNoDataValue
Source no data value is available and is set to be used or internal no data is available.
 
virtual QgsImageFetcher * getLegendGraphicFetcher(const QgsMapSettings *mapSettings)
Returns a new image downloader for the raster legend.
 
virtual bool readBlock(int bandNo, int xBlock, int yBlock, void *data)
Reads a block of raster data into data.
 
bool setInput(QgsRasterInterface *input) override
Set input.
 
QList< bool > mSrcHasNoDataValue
Source no data value exists.
 
void statusChanged(const QString &) const
Emit a message to be displayed on status bar, usually used by network providers (WMS,...
 
virtual QgsRasterRangeList userNoDataValues(int bandNo) const
Returns a list of user no data value ranges.
 
virtual int stepHeight() const
Step height for raster iterations.
 
virtual bool setEditable(bool enabled)
Turns on/off editing mode of the provider.
 
virtual int stepWidth() const
Step width for raster iterations.
 
virtual QString lastErrorTitle()=0
Returns the caption error text for the last error in this provider.
 
virtual QList< QgsRasterPyramid > buildPyramidList(const QList< int > &overviewList=QList< int >())
Returns the raster layers pyramid list.
 
Raster identify results container.
 
Base class for processing filters like renderers, reprojector, resampler etc.
 
static const int DEFAULT_MAXIMUM_TILE_WIDTH
Default maximum tile width.
 
static const int DEFAULT_MAXIMUM_TILE_HEIGHT
Default maximum tile height.
 
A rectangle specified with double values.
 
QList< QgsRasterRange > QgsRasterRangeList
 
const QgsCoordinateReferenceSystem & crs
 
Setting options for creating vector data providers.
 
Struct that stores the information about the parameters that should be given to the QgsVirtualRasterP...
 
QList< QgsRasterDataProvider::VirtualRasterInputLayers > rInputLayers
 
QgsCoordinateReferenceSystem crs