QGIS API Documentation  master-6227475
QgsRasterDataProvider Class Reference

Base class for raster data providers. More...

#include <qgsrasterdataprovider.h>

+ Inheritance diagram for QgsRasterDataProvider:
+ Collaboration diagram for QgsRasterDataProvider:

List of all members.

Signals

void progress (int theType, double theProgress, QString theMessage)
 Emit a signal to notify of the progress event.
void progressUpdate (int theProgress)

Public Member Functions

 QgsRasterDataProvider ()
 QgsRasterDataProvider (const QString &uri)
virtual ~QgsRasterDataProvider ()
virtual QgsRasterBlockblock (int theBandNo, const QgsRectangle &theExtent, int theWidth, int theHeight)
 Read block of data using given extent and size.
virtual QList< QgsRasterPyramidbuildPyramidList (QList< int > overviewList=QList< int >())
 Accessor for ths raster layers pyramid list.
virtual QString buildPyramids (const QList< QgsRasterPyramid > &thePyramidList, const QString &theResamplingMethod="NEAREST", QgsRaster::RasterPyramidsFormat theFormat=QgsRaster::PyramidsGTiff, const QStringList &theConfigOptions=QStringList())
 Create pyramid overviews.
virtual QgsRasterInterfaceclone () const =0
 Clone itself, create deep copy.
virtual int colorInterpretation (int theBandNo) const
 Returns data type for the band specified by number.
virtual QString colorInterpretationName (int theBandNo) const
QString colorName (int colorInterpretation) const
virtual QList
< QgsColorRampShader::ColorRampItem
colorTable (int bandNo) const
virtual QDateTime dataTimestamp () const
 Current time stamp of data source.
virtual QGis::DataType dataType (int bandNo) const =0
 Returns data type for the band specified by number.
int dpi () const
 Returns the dpi of the output device.
virtual QImage * draw (const QgsRectangle &viewExtent, int pixelWidth, int pixelHeight)=0
 Renders the layer as an image.
virtual QgsRectangle extent ()=0
 Get the extent of the data source.
bool hasPyramids ()
 Returns true if raster has at least one populated histogram.
virtual QgsRasterIdentifyResult identify (const QgsPoint &thePoint, QgsRaster::IdentifyFormat theFormat, const QgsRectangle &theExtent=QgsRectangle(), int theWidth=0, int theHeight=0)
 Identify raster value(s) found on the point position.
virtual QString lastError ()=0
 Returns the verbose error text for the last error in this provider.
virtual QString lastErrorFormat ()
 Returns the format of the error text for the last error in this provider.
virtual QString lastErrorTitle ()=0
 Returns the caption error text for the last error in this provider.
virtual QString metadata ()=0
 Get metadata in a format suitable for feeding directly into a subset of the GUI raster properties "Metadata" tab.
virtual bool reload ()
 Reload data (data could change)
virtual bool remove ()
 Returns the formats supported by create()
void setDpi (int dpi)
 Sets the output device resolution.
bool setInput (QgsRasterInterface *input)
 Set input.
virtual bool setNoDataValue (int bandNo, double noDataValue)
 Set no data value on created dataset.
virtual void setUserNoDataValue (int bandNo, QgsRasterRangeList noData)
virtual void setUseSrcNoDataValue (int bandNo, bool use)
 Set source nodata value usage.
virtual QGis::DataType srcDataType (int bandNo) const =0
 Returns source data type for the band specified by number, source data type may be shorter than dataType.
virtual bool srcHasNoDataValue (int bandNo) const
virtual double srcNoDataValue (int bandNo) const
 Value representing no data value.
virtual QStringList subLayers () const
 Returns the sublayers of this layer - useful for providers that manage their own layers, such as WMS.
virtual QDateTime timestamp () const
 Time stamp of data source in the moment when data/metadata were loaded by provider.
virtual QgsRasterRangeList userNoDataValues (int bandNo) const
 Get list of user no data value ranges.
virtual bool useSrcNoDataValue (int bandNo) const
 Get source nodata value usage.
virtual QString validateCreationOptions (const QStringList &createOptions, QString format)
 Validates creation options for a specific dataset and destination format.
virtual QString validatePyramidsConfigOptions (QgsRaster::RasterPyramidsFormat pyramidsFormat, const QStringList &theConfigOptions, const QString &fileFormat)
 Validates pyramid creation options for a specific dataset and destination format.
virtual bool write (void *data, int band, int width, int height, int xOffset, int yOffset)
 Writes into the provider datasource.

Static Public Member Functions

static QgsRasterDataProvidercreate (const QString &providerKey, const QString &uri, const QString &format, int nBands, QGis::DataType type, int width, int height, double *geoTransform, const QgsCoordinateReferenceSystem &crs, QStringList createOptions=QStringList())
 Creates a new dataset with mDataSourceURI.
static QgsRaster::IdentifyFormat identifyFormatFromName (QString formatName)
static QString identifyFormatLabel (QgsRaster::IdentifyFormat format)
static QString identifyFormatName (QgsRaster::IdentifyFormat format)
static Capability identifyFormatToCapability (QgsRaster::IdentifyFormat format)
static QList< QPair< QString,
QString > > 
pyramidResamplingMethods (QString providerKey)
 Returns a list of pyramid resampling method name and label pairs for given provider.

Protected Member Functions

virtual void readBlock (int bandNo, int xBlock, int yBlock, void *data)
 Read block of data.
virtual void readBlock (int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data)
 Read block of data using give extent and size.
bool userNoDataValuesContains (int bandNo, double value) const
 Returns true if user no data contains value.

Static Protected Member Functions

static QStringList cStringList2Q_ (char **stringList)
static void initPyramidResamplingDefs ()
static QString makeTableCell (const QString &value)
static QString makeTableCells (const QStringList &values)

Protected Attributes

int mDpi
 Dots per inch.
QgsRectangle mExtent
QList< bool > mSrcHasNoDataValue
 Source no data value exists.
QList< double > mSrcNoDataValue
 Source no data value is available and is set to be used or internal no data is available.
QList< QgsRasterRangeListmUserNoDataValue
 List of lists of user defined additional no data values for each band, indexed from 0.
QList< bool > mUseSrcNoDataValue
 Use source nodata value.

Static Protected Attributes

static QStringList mPyramidResamplingListGdal
static QgsStringMap mPyramidResamplingMapGdal

Detailed Description

Base class for raster data providers.

Definition at line 52 of file qgsrasterdataprovider.h.


Constructor & Destructor Documentation

Definition at line 218 of file qgsrasterdataprovider.cpp.

virtual QgsRasterDataProvider::~QgsRasterDataProvider ( ) [inline, virtual]

Definition at line 61 of file qgsrasterdataprovider.h.


Member Function Documentation

virtual QList<QgsRasterPyramid> QgsRasterDataProvider::buildPyramidList ( QList< int >  overviewList = QList<int>()) [inline, virtual]

Accessor for ths raster layers pyramid list.

Parameters:
overviewListused to construct the pyramid list (optional), when empty the list is defined by the provider. A pyramid list defines the POTENTIAL pyramids that can be in a raster. To know which of the pyramid layers ACTUALLY exists you need to look at the existsFlag member in each struct stored in the list.

Definition at line 207 of file qgsrasterdataprovider.h.

Referenced by QgsRasterFileWriter::buildPyramids(), hasPyramids(), and QgsRasterLayerSaveAsDialog::populatePyramidsLevels().

virtual QString QgsRasterDataProvider::buildPyramids ( const QList< QgsRasterPyramid > &  thePyramidList,
const QString &  theResamplingMethod = "NEAREST",
QgsRaster::RasterPyramidsFormat  theFormat = QgsRaster::PyramidsGTiff,
const QStringList &  theConfigOptions = QStringList() 
) [inline, virtual]

Create pyramid overviews.

Definition at line 190 of file qgsrasterdataprovider.h.

Referenced by QgsRasterFileWriter::buildPyramids().

virtual QgsRasterInterface* QgsRasterDataProvider::clone ( ) const [pure virtual]

Clone itself, create deep copy.

Implements QgsRasterInterface.

virtual int QgsRasterDataProvider::colorInterpretation ( int  theBandNo) const [inline, virtual]

Returns data type for the band specified by number.

Definition at line 83 of file qgsrasterdataprovider.h.

References QgsRaster::UndefinedColorInterpretation.

Referenced by QgsRasterLayer::paletteAsPixmap(), and QgsRasterLayer::setDataProvider().

virtual QString QgsRasterDataProvider::colorInterpretationName ( int  theBandNo) const [inline, virtual]

Definition at line 152 of file qgsrasterdataprovider.h.

Referenced by QgsRasterRendererWidget::displayBandName().

QgsRasterDataProvider * QgsRasterDataProvider::create ( const QString &  providerKey,
const QString &  uri,
const QString &  format,
int  nBands,
QGis::DataType  type,
int  width,
int  height,
double *  geoTransform,
const QgsCoordinateReferenceSystem crs,
QStringList  createOptions = QStringList() 
) [static]
QStringList QgsRasterDataProvider::cStringList2Q_ ( char **  stringList) [static, protected]

Definition at line 231 of file qgsrasterdataprovider.cpp.

virtual QDateTime QgsRasterDataProvider::dataTimestamp ( ) const [inline, virtual]

Current time stamp of data source.

Reimplemented from QgsDataProvider.

Definition at line 285 of file qgsrasterdataprovider.h.

Referenced by QgsRasterLayer::update().

int QgsRasterDataProvider::dpi ( ) const [inline]

Returns the dpi of the output device.

Note:
: this method was added in version 1.2

Definition at line 275 of file qgsrasterdataprovider.h.

virtual QImage* QgsRasterDataProvider::draw ( const QgsRectangle viewExtent,
int  pixelWidth,
int  pixelHeight 
) [pure virtual]

Renders the layer as an image.

Returns true if raster has at least one populated histogram.

Definition at line 367 of file qgsrasterdataprovider.cpp.

References buildPyramidList().

QgsRasterIdentifyResult QgsRasterDataProvider::identify ( const QgsPoint thePoint,
QgsRaster::IdentifyFormat  theFormat,
const QgsRectangle theExtent = QgsRectangle(),
int  theWidth = 0,
int  theHeight = 0 
) [virtual]

Identify raster value(s) found on the point position.

The context parameters theExtent, theWidth and theHeigh are important to identify on the same zoom level as a displayed map and to do effective caching (WCS). If context params are not specified the highest resolution is used. capabilities() may be used to test if format is supported by provider. Values are set to 'no data' or empty string if point is outside data source extent.

Note:
The arbitraryness of the returned document is enforced by WMS standards up to at least v1.3.0
Parameters:
thePointcoordinates in data source CRS
theFormatresult format
theExtentcontext extent
theWidthcontext width
theHeightcontext height
Returns:
QgsRaster::IdentifyFormatValue: map of values for each band, keys are band numbers (from 1). QgsRaster::IdentifyFormatFeature: map of QgsRasterFeatureList for each sublayer (WMS) - TODO: it is not consistent with QgsRaster::IdentifyFormatValue. QgsRaster::IdentifyFormatHtml: map of HTML strings for each sublayer (WMS). Empty if failed or there are no results (TODO: better error reporting).

Definition at line 274 of file qgsrasterdataprovider.cpp.

References QgsRasterInterface::bandCount(), block(), QgsRasterInterface::capabilities(), ERR, extent(), QgsRectangle::height(), QgsRaster::IdentifyFormatValue, QgsRasterInterface::IdentifyValue, QgsRectangle::isEmpty(), QgsDebugMsg, QgsRasterInterface::Size, tr, QgsRasterBlock::value(), QgsRectangle::width(), QgsPoint::x(), QgsRectangle::xMinimum(), QgsRasterInterface::xSize(), QgsPoint::y(), QgsRectangle::yMaximum(), and QgsRasterInterface::ySize().

Referenced by QgsMapToolIdentify::identifyRasterLayer().

static void QgsRasterDataProvider::initPyramidResamplingDefs ( ) [static, protected]
virtual QString QgsRasterDataProvider::lastError ( ) [pure virtual]

Returns the verbose error text for the last error in this provider.

If an operation returns 0 (e.g. draw()), this function returns the text of the error associated with the failure. Interactive users of this provider can then, for example, call a QMessageBox to display the contents.

Returns the format of the error text for the last error in this provider.

Note:
added in 1.6

Definition at line 339 of file qgsrasterdataprovider.cpp.

virtual QString QgsRasterDataProvider::lastErrorTitle ( ) [pure virtual]

Returns the caption error text for the last error in this provider.

If an operation returns 0 (e.g. draw()), this function returns the text of the error associated with the failure. Interactive users of this provider can then, for example, call a QMessageBox to display the contents.

QString QgsRasterDataProvider::makeTableCell ( const QString &  value) [static, protected]

Definition at line 245 of file qgsrasterdataprovider.cpp.

Referenced by makeTableCells().

QString QgsRasterDataProvider::makeTableCells ( const QStringList &  values) [static, protected]

Definition at line 251 of file qgsrasterdataprovider.cpp.

References makeTableCell().

QString QgsRasterDataProvider::metadata ( ) [pure virtual]

Get metadata in a format suitable for feeding directly into a subset of the GUI raster properties "Metadata" tab.

Definition at line 267 of file qgsrasterdataprovider.cpp.

Referenced by QgsRasterLayer::metadata().

void QgsRasterDataProvider::progress ( int  theType,
double  theProgress,
QString  theMessage 
) [signal]

Emit a signal to notify of the progress event.

Emitted theProgress is in percents (0.0-100.0)

void QgsRasterDataProvider::progressUpdate ( int  theProgress) [signal]
QList< QPair< QString, QString > > QgsRasterDataProvider::pyramidResamplingMethods ( QString  providerKey) [static]

Returns a list of pyramid resampling method name and label pairs for given provider.

Definition at line 345 of file qgsrasterdataprovider.cpp.

References cast_to_fptr, QgsProviderRegistry::function(), QgsProviderRegistry::instance(), and QgsDebugMsg.

Referenced by QgsRasterPyramidsOptionsWidget::updateUi().

virtual void QgsRasterDataProvider::readBlock ( int  bandNo,
int  xBlock,
int  yBlock,
void *  data 
) [inline, protected, virtual]

Read block of data.

Note:
not available in python bindings

Definition at line 352 of file qgsrasterdataprovider.h.

Referenced by block().

virtual void QgsRasterDataProvider::readBlock ( int  bandNo,
QgsRectangle const &  viewExtent,
int  width,
int  height,
void *  data 
) [inline, protected, virtual]

Read block of data using give extent and size.

Note:
not available in python bindings

Definition at line 357 of file qgsrasterdataprovider.h.

virtual bool QgsRasterDataProvider::reload ( ) [inline, virtual]

Reload data (data could change)

Definition at line 150 of file qgsrasterdataprovider.h.

virtual bool QgsRasterDataProvider::remove ( ) [inline, virtual]

Returns the formats supported by create()

Remove dataset

Definition at line 320 of file qgsrasterdataprovider.h.

Referenced by QgsRasterFileWriter::writeDataRaster().

void QgsRasterDataProvider::setDpi ( int  dpi) [inline]

Sets the output device resolution.

Note:
: this method was added in version 1.2

Definition at line 279 of file qgsrasterdataprovider.h.

Referenced by QgsRasterLayer::draw().

bool QgsRasterDataProvider::setInput ( QgsRasterInterface input) [inline, virtual]

Set input.

Returns true if set correctly, false if cannot use that input

Reimplemented from QgsRasterInterface.

Definition at line 66 of file qgsrasterdataprovider.h.

virtual bool QgsRasterDataProvider::setNoDataValue ( int  bandNo,
double  noDataValue 
) [inline, virtual]

Set no data value on created dataset.

Parameters:
bandNoband number
noDataValueno data value

Definition at line 313 of file qgsrasterdataprovider.h.

Referenced by QgsRasterFileWriter::writeDataRaster().

void QgsRasterDataProvider::setUseSrcNoDataValue ( int  bandNo,
bool  use 
) [virtual]

Set source nodata value usage.

Definition at line 34 of file qgsrasterdataprovider.cpp.

References mUseSrcNoDataValue.

Referenced by QgsRasterLayer::readXml().

virtual QGis::DataType QgsRasterDataProvider::srcDataType ( int  bandNo) const [pure virtual]

Returns source data type for the band specified by number, source data type may be shorter than dataType.

Reimplemented from QgsRasterInterface.

Referenced by QgsRasterLayerSaveAsDialog::addNoDataRow(), QgsRasterLayer::metadata(), QgsRasterHistogramWidget::refreshHistogram(), QgsRasterChecker::runTest(), and QgsRasterFileWriter::writeDataRaster().

virtual bool QgsRasterDataProvider::srcHasNoDataValue ( int  bandNo) const [inline, virtual]
virtual double QgsRasterDataProvider::srcNoDataValue ( int  bandNo) const [inline, virtual]

Value representing no data value.

Definition at line 172 of file qgsrasterdataprovider.h.

Referenced by block(), QgsRasterLayer::metadata(), and QgsRasterFileWriter::writeDataRaster().

virtual QStringList QgsRasterDataProvider::subLayers ( ) const [inline, virtual]

Returns the sublayers of this layer - useful for providers that manage their own layers, such as WMS.

Reimplemented from QgsDataProvider.

Definition at line 184 of file qgsrasterdataprovider.h.

Referenced by QgsRasterLayer::subLayers().

virtual QDateTime QgsRasterDataProvider::timestamp ( ) const [inline, virtual]

Time stamp of data source in the moment when data/metadata were loaded by provider.

Reimplemented from QgsDataProvider.

Definition at line 282 of file qgsrasterdataprovider.h.

References QgsDataProvider::mTimestamp.

Referenced by QgsRasterLayer::update().

virtual QgsRasterRangeList QgsRasterDataProvider::userNoDataValues ( int  bandNo) const [inline, virtual]

Get list of user no data value ranges.

Definition at line 177 of file qgsrasterdataprovider.h.

Referenced by block(), and QgsRasterLayer::writeXml().

bool QgsRasterDataProvider::userNoDataValuesContains ( int  bandNo,
double  value 
) const [protected]

Returns true if user no data contains value.

Definition at line 504 of file qgsrasterdataprovider.cpp.

References QgsRasterRange::contains(), and mUserNoDataValue.

virtual bool QgsRasterDataProvider::useSrcNoDataValue ( int  bandNo) const [inline, virtual]

Get source nodata value usage.

Definition at line 166 of file qgsrasterdataprovider.h.

Referenced by block(), and QgsRasterLayer::writeXml().

virtual QString QgsRasterDataProvider::validateCreationOptions ( const QStringList &  createOptions,
QString  format 
) [inline, virtual]

Validates creation options for a specific dataset and destination format.

Note:
used by GDAL provider only
see also validateCreationOptionsFormat() in gdal provider for validating options based on format only

Definition at line 329 of file qgsrasterdataprovider.h.

virtual QString QgsRasterDataProvider::validatePyramidsConfigOptions ( QgsRaster::RasterPyramidsFormat  pyramidsFormat,
const QStringList &  theConfigOptions,
const QString &  fileFormat 
) [inline, virtual]

Validates pyramid creation options for a specific dataset and destination format.

Note:
used by GDAL provider only

Definition at line 334 of file qgsrasterdataprovider.h.

virtual bool QgsRasterDataProvider::write ( void *  data,
int  band,
int  width,
int  height,
int  xOffset,
int  yOffset 
) [inline, virtual]

Writes into the provider datasource.

Definition at line 289 of file qgsrasterdataprovider.h.

Referenced by QgsRasterFileWriter::writeDataRaster(), and QgsRasterFileWriter::writeImageRaster().


Member Data Documentation

int QgsRasterDataProvider::mDpi [protected]

Dots per inch.

Extended WMS (e.g. QGIS mapserver) support DPI dependent output and therefore are suited for printing. A value of -1 means it has not been set

Note:
: this member has been added in version 1.2

Definition at line 371 of file qgsrasterdataprovider.h.

QStringList QgsRasterDataProvider::mPyramidResamplingListGdal [static, protected]

Definition at line 395 of file qgsrasterdataprovider.h.

Source no data value exists.

Definition at line 381 of file qgsrasterdataprovider.h.

QList<double> QgsRasterDataProvider::mSrcNoDataValue [protected]

Source no data value is available and is set to be used or internal no data is available.

Used internally only Cell value representing original source no data. e.g. -9999, indexed from 0

Definition at line 378 of file qgsrasterdataprovider.h.

List of lists of user defined additional no data values for each band, indexed from 0.

Definition at line 390 of file qgsrasterdataprovider.h.

Referenced by setUserNoDataValue(), and userNoDataValuesContains().

Use source nodata value.

User can disable usage of source nodata value as nodata. It may happen that a value is wrongly given by GDAL as nodata (e.g. 0) and it has to be treated as regular value.

Definition at line 386 of file qgsrasterdataprovider.h.

Referenced by setUseSrcNoDataValue().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines