50 #include <QApplication> 52 #include <QDomElement> 57 #include <QFontMetrics> 64 #include <QMessageBox> 75 #define ERR(message) QGS_ERROR_MESSAGE(message,"Raster layer") 83 , QSTRING_NOT_SET(
"Not Set" )
84 , TRSTRING_NOT_SET(
tr(
"Not Set" ) )
85 , mDataProvider( nullptr )
94 bool loadDefaultStyleFlag )
96 , QSTRING_NOT_SET(
"Not Set" )
97 , TRSTRING_NOT_SET(
tr(
"Not Set" ) )
98 , mDataProvider( nullptr )
107 bool defaultLoadedFlag =
false;
108 if (
mValid && loadDefaultStyleFlag )
112 if ( !defaultLoadedFlag )
126 bool loadDefaultStyleFlag )
129 , QSTRING_NOT_SET(
"Not Set" )
130 , TRSTRING_NOT_SET(
tr(
"Not Set" ) )
131 , mDataProvider( nullptr )
132 , mProviderKey( providerKey )
140 bool defaultLoadedFlag =
false;
141 if (
mValid && loadDefaultStyleFlag )
145 if ( !defaultLoadedFlag )
175 QgsDebugMsg(
"Could not resolve isValidRasterFileName in gdal provider library" );
179 bool myIsValid = pValid( theFileNameQString, retErrMsg );
218 if ( !mDataProvider )
return 0;
237 return mDataProvider;
245 return mDataProvider;
303 drawer.draw( theQPainter, theRasterViewPort, theQgsMapToPixel );
322 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Driver" ) +
"</p>\n";
325 myMetadata +=
"</p>\n";
329 myMetadata += mDataProvider->
metadata();
331 myMetadata +=
"<p class=\"glossy\">";
332 myMetadata +=
tr(
"No Data Value" );
333 myMetadata +=
"</p>\n";
342 myMetadata +=
'*' +
tr(
"NoDataValue not set" ) +
'*';
344 myMetadata +=
"</p>\n";
346 myMetadata +=
"</p>\n";
347 myMetadata +=
"<p class=\"glossy\">";
348 myMetadata +=
tr(
"Data Type" );
349 myMetadata +=
"</p>\n";
355 myMetadata +=
tr(
"Byte - Eight bit unsigned integer" );
358 myMetadata +=
tr(
"UInt16 - Sixteen bit unsigned integer " );
361 myMetadata +=
tr(
"Int16 - Sixteen bit signed integer " );
364 myMetadata +=
tr(
"UInt32 - Thirty two bit unsigned integer " );
367 myMetadata +=
tr(
"Int32 - Thirty two bit signed integer " );
370 myMetadata +=
tr(
"Float32 - Thirty two bit floating point " );
373 myMetadata +=
tr(
"Float64 - Sixty four bit floating point " );
376 myMetadata +=
tr(
"CInt16 - Complex Int16 " );
379 myMetadata +=
tr(
"CInt32 - Complex Int32 " );
382 myMetadata +=
tr(
"CFloat32 - Complex Float32 " );
385 myMetadata +=
tr(
"CFloat64 - Complex Float64 " );
388 myMetadata +=
tr(
"Could not determine raster data type." );
390 myMetadata +=
"</p>\n";
392 myMetadata +=
"<p class=\"glossy\">";
393 myMetadata +=
tr(
"Pyramid overviews" );
394 myMetadata +=
"</p>\n";
397 myMetadata +=
"<p class=\"glossy\">";
398 myMetadata +=
tr(
"Layer Spatial Reference System" );
399 myMetadata +=
"</p>\n";
402 myMetadata +=
"</p>\n";
404 myMetadata +=
"<p class=\"glossy\">";
405 myMetadata +=
tr(
"Layer Extent (layer original source projection)" );
406 myMetadata +=
"</p>\n";
409 myMetadata +=
"</p>\n";
414 myMetadata +=
"<tr><td class=\"glossy\">";
415 myMetadata +=
tr(
"Project Spatial Reference System" );
416 myMetadata +=
"</p>\n";
418 myMetadata += mCoordinateTransform->destCRS().toProj4();
419 myMetadata +=
"</p>\n";
426 for (
int myIteratorInt = 1; myIteratorInt <= myBandCountInt; ++myIteratorInt )
430 myMetadata +=
"<p class=\"glossy\">\n";
431 myMetadata +=
tr(
"Band" );
432 myMetadata +=
"</p>\n";
434 myMetadata +=
bandName( myIteratorInt );
435 myMetadata +=
"</p>\n";
438 myMetadata +=
tr(
"Band No" );
439 myMetadata +=
"</p>\n";
440 myMetadata +=
"<p>\n";
442 myMetadata +=
"</p>\n";
450 myMetadata +=
tr(
"No Stats" );
451 myMetadata +=
"</p>\n";
452 myMetadata +=
"<p>\n";
453 myMetadata +=
tr(
"No stats collected yet" );
454 myMetadata +=
"</p>\n";
463 myMetadata +=
tr(
"Min Val" );
464 myMetadata +=
"</p>\n";
465 myMetadata +=
"<p>\n";
467 myMetadata +=
"</p>\n";
471 myMetadata +=
tr(
"Max Val" );
472 myMetadata +=
"</p>\n";
473 myMetadata +=
"<p>\n";
475 myMetadata +=
"</p>\n";
479 myMetadata +=
tr(
"Range" );
480 myMetadata +=
"</p>\n";
481 myMetadata +=
"<p>\n";
483 myMetadata +=
"</p>\n";
487 myMetadata +=
tr(
"Mean" );
488 myMetadata +=
"</p>\n";
489 myMetadata +=
"<p>\n";
491 myMetadata +=
"</p>\n";
495 myMetadata +=
tr(
"Sum of squares" );
496 myMetadata +=
"</p>\n";
497 myMetadata +=
"<p>\n";
499 myMetadata +=
"</p>\n";
503 myMetadata +=
tr(
"Standard Deviation" );
504 myMetadata +=
"</p>\n";
505 myMetadata +=
"<p>\n";
507 myMetadata +=
"</p>\n";
511 myMetadata +=
tr(
"Sum of all cells" );
512 myMetadata +=
"</p>\n";
513 myMetadata +=
"<p>\n";
515 myMetadata +=
"</p>\n";
519 myMetadata +=
tr(
"Cell Count" );
520 myMetadata +=
"</p>\n";
521 myMetadata +=
"<p>\n";
523 myMetadata +=
"</p>\n";
547 if ( !myColorRampItemList.
isEmpty() )
554 QPixmap myPalettePixmap( mySize, mySize );
555 QPainter myQPainter( &myPalettePixmap );
557 QImage myQImage =
QImage( mySize, mySize, QImage::Format_RGB32 );
559 myPalettePixmap.
fill();
561 double myStep = (
static_cast< double >( myColorRampItemList.
size() ) - 1 ) /
static_cast< double >( mySize * mySize );
562 double myValue = 0.0;
563 for (
int myRow = 0; myRow < mySize; myRow++ )
565 QRgb* myLineBuffer =
reinterpret_cast< QRgb*
>( myQImage.
scanLine( myRow ) );
566 for (
int myCol = 0; myCol < mySize; myCol++ )
568 myValue = myStep *
static_cast< double >( myCol + myRow * mySize );
570 myShader.
shade( myValue, &c1, &c2, &c3, &c4 );
571 myLineBuffer[ myCol ] = qRgba( c1, c2, c3, c4 );
576 return myPalettePixmap;
621 void QgsRasterLayer::init()
639 mPipe.
remove( mDataProvider );
640 mDataProvider =
nullptr;
645 mProviderKey = provider;
655 if ( !mDataProvider )
658 appendError(
ERR(
tr(
"Cannot instantiate the '%1' data provider" ).arg( mProviderKey ) ) );
664 mPipe.
set( mDataProvider );
665 if ( !mDataProvider->
isValid() )
672 if ( provider ==
"gdal" )
780 for (
int bandNo = 1; bandNo <= mDataProvider->
bandCount(); bandNo++ )
794 mPipe.
set( brightnessFilter );
798 mPipe.
set( hueSaturationFilter );
802 mPipe.
set( resampleFilter );
806 mPipe.
set( projector );
836 mDataProvider, SIGNAL( progress(
int,
double,
QString ) ),
852 void QgsRasterLayer::closeDataProvider()
855 mPipe.
remove( mDataProvider );
856 mDataProvider =
nullptr;
861 QgsDebugMsgLevel(
QString(
"theAlgorithm = %1 theLimits = %2 theExtent.isEmpty() = %3" ).arg( theAlgorithm ).arg( theLimits ).arg( theExtent.
isEmpty() ), 4 );
862 if ( !mPipe.
renderer() || !mDataProvider )
872 if ( rendererType ==
"singlebandgray" )
875 if ( !myGrayRenderer )
return;
876 myBands << myGrayRenderer->
grayBand();
878 else if ( rendererType ==
"multibandcolor" )
881 if ( !myMultiBandRenderer )
return;
885 Q_FOREACH (
int myBand, myBands )
893 double myMin = std::numeric_limits<double>::quiet_NaN();
894 double myMax = std::numeric_limits<double>::quiet_NaN();
906 myMin = myRasterBandStats.
mean - ( myStdDev * myRasterBandStats.
stdDev );
907 myMax = myRasterBandStats.
mean + ( myStdDev * myRasterBandStats.
stdDev );
915 mDataProvider->
cumulativeCut( myBand, myLower, myUpper, myMin, myMax, theExtent, theSampleSize );
921 myEnhancements.
append( myEnhancement );
925 myEnhancements.
append(
nullptr );
929 if ( rendererType ==
"singlebandgray" )
933 else if ( rendererType ==
"multibandcolor" )
941 qDeleteAll( myEnhancements );
956 if ( dynamic_cast<QgsSingleBandGrayRenderer*>(
renderer() ) )
958 myKey =
"singleBand";
959 myDefault =
"StretchToMinimumMaximum";
961 else if ( dynamic_cast<QgsMultiBandColorRenderer*>(
renderer() ) )
965 myKey =
"multiBandSingleByte";
966 myDefault =
"NoEnhancement";
970 myKey =
"multiBandMultiByte";
971 myDefault =
"StretchToMinimumMaximum";
977 QgsDebugMsg(
"No default contrast enhancement for this drawing style" );
981 QString myAlgorithmString = mySettings.
value(
"/Raster/defaultContrastEnhancementAlgorithm/" + myKey, myDefault ).
toString();
991 QString myLimitsString = mySettings.
value(
"/Raster/defaultContrastEnhancementLimits",
"CumulativeCut" ).
toString();
1006 if ( theDrawingStyleQString ==
"SingleBandGray" )
1010 else if ( theDrawingStyleQString ==
"SingleBandPseudoColor" )
1014 else if ( theDrawingStyleQString ==
"PalettedColor" )
1018 else if ( theDrawingStyleQString ==
"PalettedSingleBandGray" )
1022 else if ( theDrawingStyleQString ==
"PalettedSingleBandPseudoColor" )
1026 else if ( theDrawingStyleQString ==
"PalettedMultiBandColor" )
1030 else if ( theDrawingStyleQString ==
"MultiBandSingleBandGray" )
1034 else if ( theDrawingStyleQString ==
"MultiBandSingleBandPseudoColor" )
1038 else if ( theDrawingStyleQString ==
"MultiBandColor" )
1042 else if ( theDrawingStyleQString ==
"SingleBandColorDataStyle" )
1052 setRendererForDrawingStyle( drawingStyle );
1059 if ( mDataProvider )
1070 if ( mDataProvider )
1072 QgsDebugMsgLevel(
"About to mDataProvider->setSubLayerVisibility(name, vis).", 4 );
1081 if ( !theRenderer ) {
return; }
1082 mPipe.
set( theRenderer );
1110 myQPixmap.
fill( bgColor );
1114 double myMapUnitsPerPixel;
1118 if ( myExtent.
width() / myExtent.
height() >=
static_cast< double >( myQPixmap.
width() ) / myQPixmap.
height() )
1120 myMapUnitsPerPixel = myExtent.
width() / myQPixmap.
width();
1121 myY = ( myQPixmap.
height() - myExtent.
height() / myMapUnitsPerPixel ) / 2;
1125 myMapUnitsPerPixel = myExtent.
height() / myQPixmap.
height();
1126 myX = ( myQPixmap.
width() - myExtent.
width() / myMapUnitsPerPixel ) / 2;
1129 double myPixelWidth = myExtent.
width() / myMapUnitsPerPixel;
1130 double myPixelHeight = myExtent.
height() / myMapUnitsPerPixel;
1146 draw( myQPainter, myRasterViewPort, myMapToPixel );
1147 delete myRasterViewPort;
1148 delete myMapToPixel;
1159 QImage myQImage( size, format );
1166 double myMapUnitsPerPixel;
1170 if ( myExtent.
width() / myExtent.
height() >=
static_cast< double >( myQImage.
width() ) / myQImage.
height() )
1172 myMapUnitsPerPixel = myExtent.
width() / myQImage.
width();
1173 myY = ( myQImage.
height() - myExtent.
height() / myMapUnitsPerPixel ) / 2;
1177 myMapUnitsPerPixel = myExtent.
height() / myQImage.
height();
1178 myX = ( myQImage.
width() - myExtent.
width() / myMapUnitsPerPixel ) / 2;
1181 double myPixelWidth = myExtent.
width() / myMapUnitsPerPixel;
1182 double myPixelHeight = myExtent.
height() / myMapUnitsPerPixel;
1198 draw( myQPainter, myRasterViewPort, myMapToPixel );
1199 delete myRasterViewPort;
1200 delete myMapToPixel;
1209 Q_UNUSED( theProgress );
1215 Q_UNUSED( theType );
1216 Q_UNUSED( theMessage );
1233 Q_UNUSED( errorMessage );
1243 pipeNode = layer_node;
1263 if ( !rasterRendererElem.
isNull() )
1270 mPipe.
set( renderer );
1276 mPipe.
set( brightnessFilter );
1280 if ( !brightnessElem.
isNull() )
1282 brightnessFilter->
readXML( brightnessElem );
1287 mPipe.
set( hueSaturationFilter );
1291 if ( !hueSaturationElem.
isNull() )
1293 hueSaturationFilter->
readXML( hueSaturationElem );
1298 mPipe.
set( resampleFilter );
1302 if ( !resampleElem.
isNull() )
1304 resampleFilter->
readXML( resampleElem );
1309 if ( !blendModeNode.
isNull() )
1334 mProviderKey =
"gdal";
1339 mProviderKey = pkeyElt.
text();
1342 mProviderKey =
"gdal";
1354 if ( mProviderKey ==
"wms" )
1364 while ( !layerElement.
isNull() )
1390 if ( !
mValid )
return false;
1396 if ( res && mProviderKey ==
"wms" && ( !
renderer() ||
renderer()->
type() !=
"singlebandcolordata" ) )
1408 if ( !stampNode.
isNull() )
1412 if ( stamp < mDataProvider->dataTimestamp() )
1415 closeDataProvider();
1418 if ( !
mValid )
return false;
1428 for (
int i = 0; i < noDataBandList.
size(); ++i )
1434 if ( ok && ( bandNo > 0 ) && ( bandNo <= mDataProvider->
bandCount() ) )
1442 for (
int j = 0; j < rangeList.
size(); ++j )
1448 myNoDataRangeList << myNoDataRange;
1467 Q_UNUSED( errorMessage );
1474 for (
int i = 1; i < mPipe.
size(); i++ )
1477 if ( !interface )
continue;
1478 interface->writeXML( document, pipeElement );
1503 if ( mapLayerNode.
isNull() ||
"maplayer" != mapLayerNode.
nodeName() )
1521 for (
int bandNo = 1; bandNo <= mDataProvider->
bandCount(); bandNo++ )
1553 if ( !mDataProvider )
return 0;
1554 return mDataProvider->
xSize();
1559 if ( !mDataProvider )
return 0;
1560 return mDataProvider->
ySize();
1568 bool QgsRasterLayer::update()
1575 closeDataProvider();
bool draw(QgsRenderContext &rendererContext) override
This is called when the view on the raster layer needs to be redrawn.
QgsDataProvider * classFactoryFunction_t(const QString *)
bool readSymbology(const QDomNode &node, QString &errorMessage) override
Read the symbology for the current layer from the Dom node supplied.
virtual int bandCount() const =0
Get number of bands.
virtual void setSubLayerVisibility(const QString &name, bool vis)
Set the visibility of the given sublayer name.
Eight bit unsigned integer (quint8)
void onProgress(int, double, const QString &)
receive progress signal from provider
void setRenderer(QgsRasterRenderer *theRenderer)
Set raster renderer.
QDomNodeList elementsByTagName(const QString &tagname) const
QString toString(Qt::DateFormat format) const
void setContrastEnhancementAlgorithm(ContrastEnhancementAlgorithm, bool generateTable=true)
Set the contrast enhancement algorithm.
static QgsProviderRegistry * instance(const QString &pluginPath=QString::null)
Means of accessing canonical single instance.
A rectangle specified with double values.
Base class for all map layer types.
Interface for all raster shaders.
virtual QDateTime timestamp() const override
Time stamp of data source in the moment when data/metadata were loaded by provider.
bool isEmpty() const
test if rectangle is empty.
virtual QStringList subLayers() const override
Returns the sublayers of this layer - Useful for providers that manage their own layers, such as WMS.
double rasterUnitsPerPixelY()
QgsMapLayer::LayerType type() const
Get the type of the layer.
double sum
The sum of all cells in the band.
void setCRS(const QgsCoordinateReferenceSystem &theSrcCRS, const QgsCoordinateReferenceSystem &theDestCRS, int srcDatumTransform=-1, int destDatumTransform=-1)
set source and destination CRS
Iterator for sequentially processing raster cells.
QString name() const
Get the display name of the layer.
QDomNode appendChild(const QDomNode &newChild)
void fill(const QColor &color)
DrawingStyle
This enumerator describes the different kinds of drawing we can do.
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
QString attribute(const QString &name, const QString &defValue) const
void setEncodedUri(const QByteArray &uri)
set complete encoded uri (generic mode)
virtual QgsCoordinateReferenceSystem crs()=0
Get the QgsCoordinateReferenceSystem for this layer.
QString toString(int indent) const
virtual void setLayerOrder(const QStringList &layers) override
Reorders the previously selected sublayers of this layer from bottom to top.
void setContrastEnhancement(QgsContrastEnhancement::ContrastEnhancementAlgorithm theAlgorithm, QgsRaster::ContrastEnhancementLimits theLimits=QgsRaster::ContrastEnhancementMinMax, const QgsRectangle &theExtent=QgsRectangle(), int theSampleSize=SAMPLE_SIZE, bool theGenerateLookupTableFlag=true)
Set contrast enhancement algorithm.
void setDefaultContrastEnhancement()
Set default contrast enhancement.
virtual void setUseSrcNoDataValue(int bandNo, bool use)
Set source nodata value usage.
virtual double srcNoDataValue(int bandNo) const
Value representing no data value.
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for layer.
QString toWkt() const
Returns a WKT representation of this CRS.
static QgsMapRenderer::BlendMode getBlendModeEnum(QPainter::CompositionMode blendMode)
Returns a BlendMode corresponding to a QPainter::CompositionMode.
double maximumValue
The maximum cell value in the raster band.
int mWidth
Width, number of columns to be rendered.
QDomElement nextSiblingElement(const QString &tagName) const
QgsRasterInterface * last() const
Thirty two bit floating point (float)
virtual QgsRasterRangeList userNoDataValues(int bandNo) const
Get list of user no data value ranges.
static QDateTime lastModified(const QString &name)
Return time stamp for given file name.
Raster values range container.
static bool isValidRasterFileName(const QString &theFileNameQString, QString &retError)
This helper checks to see whether the file name appears to be a valid raster file name...
Resample filter pipe for rasters.
Abstract base class for spatial data provider implementations.
void setColorRampItemList(const QList< QgsColorRampShader::ColorRampItem > &theList)
Set custom colormap.
void readXML(const QDomElement &filterElem) override
Sets base class members from xml.
static const double SAMPLE_SIZE
Default sample size (number of pixels) for estimated statistics/histogram calculation.
Q_DECL_DEPRECATED void updateProgress(int, int)
bool readXml(const QDomNode &layer_node) override
Reads layer specific state from project file Dom node.
Implementation of threaded rendering for raster layers.
double toDouble(bool *ok) const
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
QString tr(const char *sourceText, const char *disambiguation, int n)
QString mLayerName
Name of the layer - used for display.
virtual bool render() override
Do the rendering (based on data stored in the class)
void setShader(QgsRasterShader *shader)
Takes ownership of the shader.
void setColor(int index, QRgb colorValue)
double rasterUnitsPerPixelX()
Returns the number of raster units per each raster pixel.
virtual int ySize() const
void setGreenContrastEnhancement(QgsContrastEnhancement *ce)
Takes ownership.
static QString identifyFormatName(QgsRaster::IdentifyFormat format)
QgsCoordinateReferenceSystem mDestCRS
Target coordinate system.
Q_DECL_DEPRECATED void setDrawingStyle(const QString &theDrawingStyleQString)
Overloaded version of the above function for convenience when restoring from xml. ...
virtual bool useSrcNoDataValue(int bandNo) const
Get source nodata value usage.
QDomElement toElement() const
Perform transforms between map coordinates and device coordinates.
bool writeSymbology(QDomNode &, QDomDocument &doc, QString &errorMessage) const override
Write the symbology for the layer into the docment provided.
virtual QgsRasterBandStats bandStatistics(int theBandNo, int theStats=QgsRasterBandStats::All, const QgsRectangle &theExtent=QgsRectangle(), int theSampleSize=0)
Get band statistics.
The drawing pipe for raster layers.
double stdDev
The standard deviation of the cell values.
Paletted (see associated color table)
Alpha (0=transparent, 255=opaque)
QString number(int n, int base)
The RasterBandStats struct is a container for statistics about a single raster band.
static QgsRasterRendererRegistry * instance()
static ContrastEnhancementLimits contrastEnhancementLimitsFromString(const QString &theLimits)
void setError(const QgsError &theError)
Set error message.
double mean
The mean cell value for the band.
int height() const
Accessor that returns the height of the (unclipped) raster.
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
void append(const T &value)
Sixteen bit unsigned integer (quint16)
Continuous palette, QGIS addition, GRASS.
Sixty four bit floating point (double)
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
void readStyleManager(const QDomNode &layerNode)
Read style manager's configuration (if any).
QDomDocument ownerDocument() const
void setRedContrastEnhancement(QgsContrastEnhancement *ce)
Takes ownership.
QgsRasterRenderer * renderer() const
void fill(uint pixelValue)
int bandCount() const
Get the number of bands in this layer.
QgsDataProvider * provider(const QString &providerKey, const QString &dataSource)
Create an instance of the provider.
#define QgsDebugMsgLevel(str, level)
virtual QGis::DataType srcDataType(int bandNo) const override=0
Returns source data type for the band specified by number, source data type may be shorter than dataT...
Thirty two bit signed integer (qint32)
void setParam(const QString &key, const QString &value)
Set generic param (generic mode)
void setCrs(const QgsCoordinateReferenceSystem &srs, bool emitSignal=true)
Sets layer's spatial reference system.
virtual QStringList subLayers() const override
Returns the sublayers of this layer - useful for providers that manage their own layers, such as WMS.
void setAttribute(const QString &name, const QString &value)
void writeStyleManager(QDomNode &layerNode, QDomDocument &doc) const
Write style manager's configuration (if exists).
int toInt(bool *ok, int base) const
virtual void setExtent(const QgsRectangle &rect)
Set the extent.
QString metadata() override
Obtain GDAL Metadata for this layer.
bool shade(double, int *, int *, int *, int *) override
Generates and new RGB value based on one input value.
static const double CUMULATIVE_CUT_UPPER
Default cumulative cut upper limit.
Q_DECL_DEPRECATED QPixmap previewAsPixmap(QSize size, const QColor &bgColor=Qt::white)
Draws a preview of the rasterlayer into a pixmap.
~QgsRasterLayer()
The destructor.
ContrastEnhancementLimits
Contrast enhancement limits.
qgssize elementCount
The number of not no data cells in the band.
void setMinimumValue(double, bool generateTable=true)
Return the minimum value for the contrast enhancement range.
Thirty two bit unsigned integer (quint32)
static void logMessage(const QString &message, const QString &tag=QString::null, MessageLevel level=WARNING)
add a message to the instance (and create it if necessary)
Raster renderer pipe for single band pseudocolor.
virtual QString dataSourceUri(bool expandAuthConfig=false) const
Get the data source specification.
const QString bandName(int theBandNoInt)
Get the name of a band given its number.
bool isvalidrasterfilename_t(QString const &theFileNameQString, QString &retErrMsg)
Raster renderer pipe for single band gray.
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
virtual QString generateBandName(int theBandNumber) const
helper function to create zero padded band names
QgsRasterResampleFilter * resampleFilter() const
Set raster resample filter.
static int typeSize(int dataType)
virtual QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext) override
Return new instance of QgsMapLayerRenderer that will be used for rendering of given context...
virtual void setLayerOrder(const QStringList &layers)
Reorder the list of layer names to be rendered by this provider (in order from bottom to top) ...
QgsRasterProjector * projector() const
void statusChanged(const QString &theStatus)
Emit a signal with status (e.g.
QDateTime lastModified() const
void rendererChanged()
Signal emitted when renderer is changed.
void setAlphaBand(int band)
bool mValid
Indicates if the layer is valid and can be drawn.
static QPainter::CompositionMode getCompositionMode(BlendMode blendMode)
Returns a QPainter::CompositionMode corresponding to a BlendMode.
void setDataProvider(const QString &provider)
[ data provider interface ] Set the data provider
void setRasterShaderFunction(QgsRasterShaderFunction *)
A public method that allows the user to set their own shader function.
Base class for processing filters like renderers, reprojector, resampler etc.
A class to represent a point.
bool hasChildNodes() const
void setColorRampType(QgsColorRampShader::ColorRamp_TYPE theColorRampType)
Set the color ramp type.
Sixteen bit signed integer (qint16)
QDomText createTextNode(const QString &value)
virtual void setSubLayerVisibility(const QString &name, bool vis) override
Set the visibility of the given sublayer name.
Class for storing the component parts of a PostgreSQL/RDBMS datasource URI.
QPixmap paletteAsPixmap(int theBandNumber=1)
Get an 100x100 pixmap of the color palette.
QDomNode namedItem(const QString &name) const
bool contains(QChar ch, Qt::CaseSensitivity cs) const
static ContrastEnhancementAlgorithm contrastEnhancementAlgorithmFromString(const QString &contrastEnhancementString)
virtual int capabilities() const
Returns a bitmask containing the supported capabilities.
virtual int colorInterpretation(int theBandNo) const
Returns data type for the band specified by number.
QDateTime fromString(const QString &string, Qt::DateFormat format)
QgsCoordinateReferenceSystem mSrcCRS
Source coordinate system.
void progressUpdate(int theValue)
Signal for notifying listeners of long running processes.
void showProgress(int theValue)
[ data provider interface ] A wrapper function to emit a progress update signal
virtual QgsRectangle extent() override=0
Get the extent of the data source.
Registry for raster renderer entries.
virtual QGis::DataType dataType(int bandNo) const override=0
Returns data type for the band specified by number.
QgsPoint mBottomRightPoint
Coordinate (in output device coordinate system) of bottom right corner of the part of the raster that...
QImage previewAsImage(QSize size, const QColor &bgColor=Qt::white, QImage::Format format=QImage::Format_ARGB32_Premultiplied)
Draws a preview of the rasterlayer into a QImage.
void setContrastEnhancement(QgsContrastEnhancement *ce)
Takes ownership.
ContrastEnhancementAlgorithm
This enumerator describes the types of contrast enhancement algorithms that can be used...
QVariant value(const QString &key, const QVariant &defaultValue) const
Contains information about the context of a rendering operation.
virtual void legendSymbologyItems(QList< QPair< QString, QColor > > &symbolItems) const
Get symbology items if provided by renderer.
static QgsMapLayerLegend * defaultRasterLegend(QgsRasterLayer *rl)
Create new legend implementation for raster layer.
void drawImage(const QRectF &target, const QImage &image, const QRectF &source, QFlags< Qt::ImageConversionFlag > flags)
bool remove(int idx)
Remove and delete interface at given index if possible.
virtual int xSize() const
Get raster size.
QString mDataSource
Data source description string, varies by layer type.
virtual QString loadDefaultStyle(bool &theResultFlag)
Retrieve the default style for this layer if one exists (either as a .qml file on disk or as a record...
bool writeXml(QDomNode &layer_node, QDomDocument &doc) override
Write layer specific state to project file Dom node.
QDomNode cloneNode(bool deep) const
virtual QString type() const
virtual QString metadata()=0
Get metadata in a format suitable for feeding directly into a subset of the GUI raster properties "Me...
void readXML(const QDomElement &filterElem) override
Sets base class members from xml.
virtual void reloadData()
Reloads the data from the source.
virtual bool isValid()=0
Returns true if this is a valid layer.
void repaintRequested()
By emitting this signal the layer tells that either appearance or content have been changed and any v...
QDomElement firstChildElement(const QString &tagName) const
int mHeight
Distance in map units from bottom edge to top edge for the part of the raster that is to be rendered...
Brightness/contrast filter pipe for rasters.
Class for storing a coordinate reference system (CRS)
Color and saturation filter pipe for rasters.
static const double CUMULATIVE_CUT_LOWER
Default cumulative cut lower limit.
DataType
Raster data types.
virtual QString description() const =0
Return description.
double range
The range is the distance between min & max.
void setBlueContrastEnhancement(QgsContrastEnhancement *ce)
Takes ownership.
QgsHueSaturationFilter * hueSaturationFilter() const
double minimumValue
The minimum cell value in the raster band.
Renderer for multiband images with the color components.
void dataChanged()
Data of layer changed.
Base class for utility classes that encapsulate information necessary for rendering of map layers...
void setLayerName(const QString &name)
Set the display name of the layer.
const QgsCoordinateReferenceSystem & crs() const
Returns layer's spatial reference system.
void appendError(const QgsErrorMessage &theMessage)
Add error message.
Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range...
QByteArray encodedUri() const
return complete encoded uri (generic mode)
double toDouble(bool *ok) const
void(*)() cast_to_fptr(void *p)
QgsRasterDataProvider * dataProvider()
Returns the data provider.
QString providerType() const
[ data provider interface ] Which provider is being used for this Raster Layer?
QgsPoint mTopLeftPoint
Coordinate (in output device coordinate system) of top left corner of the part of the raster that is ...
virtual bool srcHasNoDataValue(int bandNo) const
Return true if source band has no data value.
This class provides details of the viewable area that a raster will be rendered into.
QDomElement createElement(const QString &tagName)
virtual void reload() override
Synchronises with changes in the datasource.
void readXML(const QDomElement &filterElem) override
Sets base class members from xml.
void setLegend(QgsMapLayerLegend *legend)
Assign a legend controller to the map layer.
double width() const
Width of the rectangle.
virtual void setUserNoDataValue(int bandNo, const QgsRasterRangeList &noData)
virtual void cumulativeCut(int theBandNo, double theLowerCount, double theUpperCount, double &theLowerValue, double &theUpperValue, const QgsRectangle &theExtent=QgsRectangle(), int theSampleSize=0)
Find values for cumulative pixel count cut.
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
virtual QList< QgsColorRampShader::ColorRampItem > colorTable(int bandNo) const
QgsLegendColorList legendSymbologyItems() const
Returns a list with classification items (Text and color)
QString toString(bool automaticPrecision=false) const
returns string representation of form xmin,ymin xmax,ymax
QgsRasterRenderer * renderer() const
bool set(QgsRasterInterface *theInterface)
Insert a new known interface in default place or replace interface of the same role if it already exi...
virtual QgsError error() const
Get current status error.
Raster renderer pipe that applies colors to a raster.
QgsRasterRendererCreateFunc rendererCreateFunction
void setMaximumValue(double, bool generateTable=true)
Set the maximum value for the contrast enhancement range.
void showStatusMessage(const QString &theMessage)
virtual QDateTime dataTimestamp() const override
Current time stamp of data source.
double height() const
Height of the rectangle.
QgsBrightnessContrastFilter * brightnessFilter() const
QDomNode at(int index) const
QgsRectangle mDrawnExtent
Intersection of current map extent and layer extent.
QString toProj4() const
Returns a Proj4 string representation of this CRS.
Base class for raster data providers.
int width() const
Accessor that returns the width of the (unclipped) raster.
double sumOfSquares
The sum of the squares.
QgsRasterLayer()
Constructor.