QGIS API Documentation  2.3.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups 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 
167 class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
168 {
169  Q_OBJECT
170  public:
172  static const double CUMULATIVE_CUT_LOWER;
173 
175  static const double CUMULATIVE_CUT_UPPER;
176 
178  static const double SAMPLE_SIZE;
179 
181  QgsRasterLayer();
182 
199  QgsRasterLayer( const QString & path,
200  const QString & baseName = QString::null,
201  bool loadDefaultStyleFlag = true );
202 
204  QgsRasterLayer( const QString & uri,
205  const QString & baseName,
206  const QString & providerKey,
207  bool loadDefaultStyleFlag = true );
208 
210  ~QgsRasterLayer();
211 
214  {
219  UserDefinedShader
220  };
221 
224  {
228  ColorLayer
229  };
230 
236  static bool isValidRasterFileName( const QString & theFileNameQString, QString &retError );
237  static bool isValidRasterFileName( const QString & theFileNameQString );
238 
240  static QDateTime lastModified( const QString & name );
241 
243  void setDataProvider( const QString & provider );
244 
246  LayerType rasterType() { return mRasterType; }
247 
249  void setRenderer( QgsRasterRenderer* theRenderer );
250  QgsRasterRenderer* renderer() const { return mPipe.renderer(); }
251 
253  QgsRasterResampleFilter * resampleFilter() const { return mPipe.resampleFilter(); }
254 
255  QgsBrightnessContrastFilter * brightnessFilter() const { return mPipe.brightnessFilter(); }
256  QgsHueSaturationFilter * hueSaturationFilter() const { return mPipe.hueSaturationFilter(); }
257 
259  QgsRasterPipe * pipe() { return &mPipe; }
260 
262  int width() const;
263 
265  int height() const;
266 
268  int bandCount() const;
269 
271  const QString bandName( int theBandNoInt );
272 
274  QgsRasterDataProvider* dataProvider();
275 
279  const QgsRasterDataProvider* dataProvider() const;
280 
283  virtual void reload();
284 
288  virtual QgsMapLayerRenderer* createMapRenderer( QgsRenderContext& rendererContext );
289 
291  bool draw( QgsRenderContext& rendererContext );
292 
294  void draw( QPainter * theQPainter,
295  QgsRasterViewPort * myRasterViewPort,
296  const QgsMapToPixel* theQgsMapToPixel = 0 );
297 
300  QList< QPair< QString, QColor > > legendSymbologyItems() const;
301 
303  QString metadata();
304 
306  QPixmap paletteAsPixmap( int theBandNumber = 1 );
307 
311  QString providerType() const;
312 
314  double rasterUnitsPerPixelX();
315  double rasterUnitsPerPixelY();
316 
325  void setContrastEnhancement( QgsContrastEnhancement::ContrastEnhancementAlgorithm theAlgorithm,
327  QgsRectangle theExtent = QgsRectangle(),
328  int theSampleSize = SAMPLE_SIZE,
329  bool theGenerateLookupTableFlag = true );
330 
332  void setDefaultContrastEnhancement();
333 
335  void setDrawingStyle( const QString & theDrawingStyleQString );
336 
338  void showProgress( int theValue );
339 
341  virtual QStringList subLayers() const;
342 
345  Q_DECL_DEPRECATED QPixmap previewAsPixmap( QSize size, QColor bgColor = Qt::white );
346 
349  QImage previewAsImage( QSize size, QColor bgColor = Qt::white,
350  QImage::Format format = QImage::Format_ARGB32_Premultiplied );
351 
353  void triggerRepaint();
354 
361  virtual void setLayerOrder( const QStringList &layers );
362 
366  virtual void setSubLayerVisibility( QString name, bool vis );
367 
369  virtual QDateTime timestamp() const { return mDataProvider->timestamp() ; }
370 
371  public slots:
372  void showStatusMessage( const QString & theMessage );
373 
375  Q_DECL_DEPRECATED void updateProgress( int, int );
376 
378  void onProgress( int, double, QString );
379 
380  signals:
382  void progressUpdate( int theValue );
383 
388  void dataChanged();
389 
391  void rendererChanged();
392 
393  protected:
395  bool readSymbology( const QDomNode& node, QString& errorMessage );
396 
398  bool readXml( const QDomNode& layer_node );
399 
401  bool writeSymbology( QDomNode&, QDomDocument& doc, QString& errorMessage ) const;
402 
404  bool writeXml( QDomNode & layer_node, QDomDocument & doc );
405 
406  private:
408  void init();
409 
411  void closeDataProvider();
412 
414  bool update();
415 
417  void setRendererForDrawingStyle( const QgsRaster::DrawingStyle & theDrawingStyle );
418 
420  const QString QSTRING_NOT_SET;
421  const QString TRSTRING_NOT_SET;
422 
425 
426  //DrawingStyle mDrawingStyle;
427 
429  QDateTime mLastModified;
430 
432 
434  QString mProviderKey;
435 
437 
439 };
440 
441 #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:47
Base class for processing modules.
Definition: qgsrasterpipe.h:41
virtual QString metadata()
Obtain Metadata for this layer.
DrawingStyle
This enumerator describes the different kinds of drawing we can do.
Definition: qgsraster.h:95
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:131
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:136
virtual bool writeSymbology(QDomNode &node, QDomDocument &doc, QString &errorMessage) const =0
Write the symbology for the layer into the docment provided.
virtual bool draw(QgsRenderContext &rendererContext)
This is the method that does the actual work of drawing the layer onto a paint device.
ColorShadingAlgorithm
This enumerator describes the types of shading that can be used.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:33
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
QgsRasterViewPort mLastViewPort
static const double CUMULATIVE_CUT_UPPER
Default cumulative cut upper limit.
ContrastEnhancementLimits
Contrast enhancement limits.
Definition: qgsraster.h:86
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)
QgsRasterDataProvider * mDataProvider
Pointer to data provider.
LayerType mRasterType
ContrastEnhancementAlgorithm
This enumerator describes the types of contrast enhancement algorithms that can be used...
QString mProviderKey
[ data provider interface ] Data provider key
Contains information about the context of a rendering operation.
QDateTime mLastModified
[ data provider interface ] Timestamp, the last modified time of the data source when the layer was c...
virtual QDateTime timestamp() const
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.
static const double CUMULATIVE_CUT_LOWER
Default cumulative cut lower limit.
QgsHueSaturationFilter * hueSaturationFilter() const
const QString QSTRING_NOT_SET
Constant defining flag for XML and a constant that signals property not used.
void dataChanged()
data of layer changed added in 1.5
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.
LayerType
This enumerator describes the type of raster layer.
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...
QgsRasterPipe mPipe
Raster renderer pipe that applies colors to a raster.
const QString TRSTRING_NOT_SET
QgsBrightnessContrastFilter * brightnessFilter() const
Base class for raster data providers.