QGIS API Documentation  2.7.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
qgsrasterlayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrasterlayer.h - description
3  -------------------
4  begin : Fri Jun 28 2002
5  copyright : (C) 2004 by T.Sutton, Gary E.Sherman, Steve Halasz
6  email : tim@linfiniti.com
7 ***************************************************************************/
8 /*
9  * Peter J. Ersts - contributed to the refactoring and maintenance of this class
10  * B. Morley - added functions to convert this class to a data provider interface
11  * Frank Warmerdam - contributed bug fixes and migrated class to use all GDAL_C_API calls
12  */
13 /***************************************************************************
14  * *
15  * This program is free software; you can redistribute it and/or modify *
16  * it under the terms of the GNU General Public License as published by *
17  * the Free Software Foundation; either version 2 of the License, or *
18  * (at your option) any later version. *
19  * *
20  ***************************************************************************/
21 #ifndef QGSRASTERLAYER_H
22 #define QGSRASTERLAYER_H
23 
24 #include <QColor>
25 #include <QDateTime>
26 #include <QList>
27 #include <QMap>
28 #include <QPair>
29 #include <QVector>
30 
31 #include "qgis.h"
33 #include "qgscolorrampshader.h"
34 #include "qgscontrastenhancement.h"
35 #include "qgshuesaturationfilter.h"
36 #include "qgsmaplayer.h"
37 #include "qgspoint.h"
38 #include "qgsraster.h"
39 #include "qgsrasterdataprovider.h"
40 #include "qgsrasterinterface.h"
41 #include "qgsrasterpipe.h"
44 #include "qgsrastershader.h"
45 #include "qgsrastertransparency.h"
46 #include "qgsrasterviewport.h"
47 
48 class QgsMapToPixel;
49 class QgsRasterRenderer;
50 class QgsRectangle;
51 class QImage;
52 class QLibrary;
53 class QPixmap;
54 class QSlider;
55 
56 typedef QList < QPair< QString, QColor > > QgsLegendColorList;
57 
163 class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
164 {
165  Q_OBJECT
166  public:
168  static const double CUMULATIVE_CUT_LOWER;
169 
171  static const double CUMULATIVE_CUT_UPPER;
172 
174  static const double SAMPLE_SIZE;
175 
177  QgsRasterLayer();
178 
195  QgsRasterLayer( const QString & path,
196  const QString & baseName = QString::null,
197  bool loadDefaultStyleFlag = true );
198 
200  QgsRasterLayer( const QString & uri,
201  const QString & baseName,
202  const QString & providerKey,
203  bool loadDefaultStyleFlag = true );
204 
206  ~QgsRasterLayer();
207 
210  {
215  UserDefinedShader
216  };
217 
220  {
224  ColorLayer
225  };
226 
232  static bool isValidRasterFileName( const QString & theFileNameQString, QString &retError );
233  static bool isValidRasterFileName( const QString & theFileNameQString );
234 
236  static QDateTime lastModified( const QString & name );
237 
239  void setDataProvider( const QString & provider );
240 
242  LayerType rasterType() { return mRasterType; }
243 
245  void setRenderer( QgsRasterRenderer* theRenderer );
246  QgsRasterRenderer* renderer() const { return mPipe.renderer(); }
247 
249  QgsRasterResampleFilter * resampleFilter() const { return mPipe.resampleFilter(); }
250 
251  QgsBrightnessContrastFilter * brightnessFilter() const { return mPipe.brightnessFilter(); }
252  QgsHueSaturationFilter * hueSaturationFilter() const { return mPipe.hueSaturationFilter(); }
253 
255  QgsRasterPipe * pipe() { return &mPipe; }
256 
258  int width() const;
259 
261  int height() const;
262 
264  int bandCount() const;
265 
267  const QString bandName( int theBandNoInt );
268 
270  QgsRasterDataProvider* dataProvider();
271 
275  const QgsRasterDataProvider* dataProvider() const;
276 
278  virtual void reload() override;
279 
283  virtual QgsMapLayerRenderer* createMapRenderer( QgsRenderContext& rendererContext ) override;
284 
286  bool draw( QgsRenderContext& rendererContext ) override;
287 
289  void draw( QPainter * theQPainter,
290  QgsRasterViewPort * myRasterViewPort,
291  const QgsMapToPixel* theQgsMapToPixel = 0 );
292 
294  QgsLegendColorList legendSymbologyItems() const;
295 
297  QString metadata() override;
298 
300  QPixmap paletteAsPixmap( int theBandNumber = 1 );
301 
303  QString providerType() const;
304 
306  double rasterUnitsPerPixelX();
307  double rasterUnitsPerPixelY();
308 
317  void setContrastEnhancement( QgsContrastEnhancement::ContrastEnhancementAlgorithm theAlgorithm,
319  QgsRectangle theExtent = QgsRectangle(),
320  int theSampleSize = SAMPLE_SIZE,
321  bool theGenerateLookupTableFlag = true );
322 
324  void setDefaultContrastEnhancement();
325 
327  void setDrawingStyle( const QString & theDrawingStyleQString );
328 
330  void showProgress( int theValue );
331 
333  virtual QStringList subLayers() const override;
334 
337  Q_DECL_DEPRECATED QPixmap previewAsPixmap( QSize size, QColor bgColor = Qt::white );
338 
341  QImage previewAsImage( QSize size, QColor bgColor = Qt::white,
342  QImage::Format format = QImage::Format_ARGB32_Premultiplied );
343 
350  virtual void setLayerOrder( const QStringList &layers ) override;
351 
355  virtual void setSubLayerVisibility( QString name, bool vis ) override;
356 
358  virtual QDateTime timestamp() const override { return mDataProvider->timestamp() ; }
359 
360  public slots:
361  void showStatusMessage( const QString & theMessage );
362 
364  Q_DECL_DEPRECATED void updateProgress( int, int );
365 
367  void onProgress( int, double, QString );
368 
369  signals:
371  void progressUpdate( int theValue );
372 
376  void dataChanged();
377 
378  protected:
380  bool readSymbology( const QDomNode& node, QString& errorMessage ) override;
381 
383  bool readXml( const QDomNode& layer_node ) override;
384 
386  bool writeSymbology( QDomNode&, QDomDocument& doc, QString& errorMessage ) const override;
387 
389  bool writeXml( QDomNode & layer_node, QDomDocument & doc ) override;
390 
391  private:
393  void init();
394 
396  void closeDataProvider();
397 
399  bool update();
400 
402  void setRendererForDrawingStyle( const QgsRaster::DrawingStyle & theDrawingStyle );
403 
405  const QString QSTRING_NOT_SET;
406  const QString TRSTRING_NOT_SET;
407 
409  QgsRasterDataProvider* mDataProvider;
410 
411  //DrawingStyle mDrawingStyle;
412 
414  QDateTime mLastModified;
415 
416  QgsRasterViewPort mLastViewPort;
417 
419  QString mProviderKey;
420 
421  LayerType mRasterType;
422 
423  QgsRasterPipe mPipe;
424 };
425 
426 #endif
virtual QStringList subLayers() const
Returns the sublayers of this layer (Useful for providers that manage their own layers, such as WMS)
A rectangle specified with double values.
Definition: qgsrectangle.h:35
Base class for all map layer types.
Definition: qgsmaplayer.h:49
Base class for processing modules.
Definition: qgsrasterpipe.h:41
virtual QString metadata()
Obtain Metadata for this layer.
ContrastEnhancementLimits
Contrast enhancement limits.
Definition: qgsraster.h:86
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
QgsRasterPipe * pipe()
Get raster pipe.
virtual bool readSymbology(const QDomNode &node, QString &errorMessage)=0
Read the symbology for the current layer from the Dom node supplied.
virtual void reload()
Synchronises with changes in the datasource.
Definition: qgsmaplayer.h:129
Resample filter pipe for rasters.
static const double SAMPLE_SIZE
Default sample size (number of pixels) for estimated statistics/histogram calculation.
virtual QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext)
Return new instance of QgsMapLayerRenderer that will be used for rendering of given context...
Definition: qgsmaplayer.h:134
virtual bool writeSymbology(QDomNode &node, QDomDocument &doc, QString &errorMessage) const =0
Write the symbology for the layer into the docment provided.
ContrastEnhancementAlgorithm
This enumerator describes the types of contrast enhancement algorithms that can be used...
virtual bool draw(QgsRenderContext &rendererContext)
This is the method that does the actual work of drawing the layer onto a paint device.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:34
ColorShadingAlgorithm
This enumerator describes the types of shading that can be used.
virtual bool writeXml(QDomNode &layer_node, QDomDocument &document)
called by writeLayerXML(), used by children to write state specific to them to project files...
QgsRasterRenderer * renderer() const
static const double CUMULATIVE_CUT_UPPER
Default cumulative cut upper limit.
virtual void setSubLayerVisibility(QString name, bool vis)
Set the visibility of the given sublayer name.
QgsRasterResampleFilter * resampleFilter() const
Set raster resample filter.
LayerType rasterType()
Accessor for raster layer type (which is a read only property)
QList< QPair< QString, QColor > > QgsLegendColorList
Contains information about the context of a rendering operation.
virtual QDateTime timestamp() const override
Time stamp of data source in the moment when data/metadata were loaded by provider.
virtual bool readXml(const QDomNode &layer_node)
called by readLayerXML(), used by children to read state specific to them from project files...
Brightness/contrast filter pipe for rasters.
Color and saturation filter pipe for rasters.
DrawingStyle
This enumerator describes the different kinds of drawing we can do.
Definition: qgsraster.h:95
static const double CUMULATIVE_CUT_LOWER
Default cumulative cut lower limit.
QgsHueSaturationFilter * hueSaturationFilter() const
void dataChanged()
data of layer changed
Base class for utility classes that encapsulate information necessary for rendering of map layers...
This class provides details of the viewable area that a raster will be rendered into.
double size
Definition: qgssvgcache.cpp:77
virtual void setLayerOrder(const QStringList &layers)
Reorders the previously selected sublayers of this layer from bottom to top (Useful for providers tha...
LayerType
This enumerator describes the type of raster layer.
Raster renderer pipe that applies colors to a raster.
QgsBrightnessContrastFilter * brightnessFilter() const
Base class for raster data providers.