Quantum GIS API Documentation  1.8
Public Types | Signals | Public Member Functions | Protected Attributes | Private Attributes
QgsDataProvider Class Reference

Abstract base class for spatial data provider implementations. More...

#include <qgsdataprovider.h>

Inheritance diagram for QgsDataProvider:
Inheritance graph
[legend]

List of all members.

Public Types

enum  DataCapability {
  NoDataCapabilities = 0, File = 1, Dir = 1 << 1, Database = 1 << 2,
  Net = 1 << 3
}

Signals

void fullExtentCalculated ()
 This is emitted whenever the worker thread has fully calculated the PostGIS extents for this layer, and its event has been received by this provider.
void dataChanged ()
 This is emitted whenever an asynchronous operation has finished and the data should be redrawn.
void dataChanged (int changed)
 This is emitted whenever data or metadata (e.g.

Public Member Functions

 QgsDataProvider (QString const &uri="")
virtual ~QgsDataProvider ()
 We need this so the subclass destructors get called.
virtual
QgsCoordinateReferenceSystem 
crs ()=0
virtual void setDataSourceUri (QString const &uri)
 Set the data source specification.
virtual QString dataSourceUri () const
 Get the data source specification.
virtual QgsRectangle extent ()=0
 Get the extent of the layer.
virtual bool isValid ()=0
 Returns true if this is a valid layer.
virtual void updateExtents ()
 Update the extents of the layer.
virtual bool setSubsetString (QString subset, bool updateFeatureCount=true)
 Set the subset string used to create a subset of features in the layer.
virtual bool supportsSubsetString ()
 provider supports setting of subset strings
virtual QString subsetString ()
 Returns the subset definition string (typically sql) currently in use by the layer and used by the provider to limit the feature set.
virtual QStringList subLayers () const
 Sub-layers handled by this provider, in order from bottom to top.
virtual QStringList subLayerStyles () const
 Sub-layer styles for each sub-layer handled by this provider, in order from bottom to top.
virtual uint subLayerCount () const
 return the number of layers for the current data source
virtual void setLayerOrder (const QStringList &layers)
 Reorder the list of layer names to be rendered by this provider (in order from bottom to top)
virtual void setSubLayerVisibility (const QString &name, bool vis)
 Set the visibility of the given sublayer name.
virtual QString name () const =0
 return a provider name
virtual QString description () const =0
 return description
virtual QString fileVectorFilters () const
 return vector file filter string
virtual QString fileRasterFilters () const
 return raster file filter string
virtual void reloadData ()
 Reloads the data from the the source.
virtual QDateTime timestamp () const
 Time stamp of data source in the moment when data/metadata were loaded by provider.
virtual QDateTime dataTimestamp () const
 Current time stamp of data source.

Protected Attributes

QDateTime mTimestamp
 Timestamp of data in the moment when the data were loaded by provider.

Private Attributes

QString mDataSourceURI
 Universal Resource Identifier for source data.

Detailed Description

Abstract base class for spatial data provider implementations.

Author:
Gary E.Sherman

This object needs to inherit from QObject to enable event processing in the Postgres/PostGIS provider (QgsPostgresProvider). It is called *here* so that this vtable and the vtable for QgsPostgresProvider don't get misaligned - the QgsVectorLayer class factory (which refers to generic QgsVectorDataProvider's) depends on it.

Definition at line 43 of file qgsdataprovider.h.


Member Enumeration Documentation

Enumerator:
NoDataCapabilities 
File 
Dir 
Database 
Net 

Definition at line 51 of file qgsdataprovider.h.


Constructor & Destructor Documentation

QgsDataProvider::QgsDataProvider ( QString const &  uri = "") [inline]

Definition at line 60 of file qgsdataprovider.h.

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

We need this so the subclass destructors get called.

Definition at line 67 of file qgsdataprovider.h.


Member Function Documentation

Get the QgsCoordinateReferenceSystem for this layer

Note:
Must be reimplemented by each provider. If the provider isn't capable of returning its projection an empty srs will be return, ti will return 0

Referenced by QgsRasterLayer::projectionWkt(), QgsVectorLayer::setCoordinateSystem(), and QgsRasterLayer::setDataProvider().

void QgsDataProvider::dataChanged ( ) [signal]

This is emitted whenever an asynchronous operation has finished and the data should be redrawn.

Note:
added in 1.5
void QgsDataProvider::dataChanged ( int  changed) [signal]

This is emitted whenever data or metadata (e.g.

color table, extent) has changed

Parameters:
changedbinary combination of changes
Note:
added in 1.7
virtual QString QgsDataProvider::dataSourceUri ( ) const [inline, virtual]

Get the data source specification.

This may be a path or database connection string

Returns:
data source specification

Definition at line 93 of file qgsdataprovider.h.

Referenced by QgsRasterLayer::setDataProvider(), QgsVectorLayer::setDataProvider(), and QgsVectorLayer::setSubsetString().

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

Current time stamp of data source.

Reimplemented in QgsRasterDataProvider.

Definition at line 291 of file qgsdataprovider.h.

virtual QString QgsDataProvider::description ( ) const [pure virtual]

return description

Return a terse string describing what the provider is.

Note:

Instead of being pure virtual, might be better to generalize this behavior and presume that none of the sub-classes are going to do anything strange with regards to their name or description?

Referenced by QgsRasterLayer::metadata().

virtual QgsRectangle QgsDataProvider::extent ( ) [pure virtual]
virtual QString QgsDataProvider::fileRasterFilters ( ) const [inline, virtual]

return raster file filter string

Returns a string suitable for a QFileDialog of raster file formats supported by the data provider. Naturally this will be an empty string for those data providers that do not deal with plain files, such as databases and servers.

Note:

It'd be nice to eventually be raster/vector neutral.

Definition at line 278 of file qgsdataprovider.h.

virtual QString QgsDataProvider::fileVectorFilters ( ) const [inline, virtual]

return vector file filter string

Returns a string suitable for a QFileDialog of vector file formats supported by the data provider. Naturally this will be an empty string for those data providers that do not deal with plain files, such as databases and servers.

Note:

It'd be nice to eventually be raster/vector neutral.

Definition at line 261 of file qgsdataprovider.h.

This is emitted whenever the worker thread has fully calculated the PostGIS extents for this layer, and its event has been received by this provider.

virtual bool QgsDataProvider::isValid ( ) [pure virtual]

Returns true if this is a valid layer.

It is up to individual providers to determine what constitutes a valid layer

Referenced by QgsProviderRegistry::provider(), QgsVectorLayerImport::QgsVectorLayerImport(), QgsRasterLayer::setDataProvider(), and QgsVectorLayer::setDataProvider().

virtual QString QgsDataProvider::name ( ) const [pure virtual]

return a provider name

Essentially just returns the provider key. Should be used to build file dialogs so that providers can be shown with their supported types. Thus if more than one provider supports a given format, the user is able to select a specific provider to open that file.

Note:

Instead of being pure virtual, might be better to generalize this behavior and presume that none of the sub-classes are going to do anything strange with regards to their name or description?

Referenced by QgsComposerMap::containsWMSLayer(), and QgsProviderRegistry::provider().

virtual void QgsDataProvider::reloadData ( ) [inline, virtual]

Reloads the data from the the source.

Needs to be implemented by providers with data caches to synchronize with changes in the data source

Definition at line 285 of file qgsdataprovider.h.

Referenced by QgsRasterLayer::reload(), and QgsVectorLayer::reload().

virtual void QgsDataProvider::setDataSourceUri ( QString const &  uri) [inline, virtual]

Set the data source specification.

This may be a path or database connection string

Parameters:
urisource specification

Definition at line 83 of file qgsdataprovider.h.

virtual void QgsDataProvider::setLayerOrder ( const QStringList &  layers) [inline, virtual]

Reorder the list of layer names to be rendered by this provider (in order from bottom to top)

Note:
layers must have been previously added.

Definition at line 194 of file qgsdataprovider.h.

Referenced by QgsRasterLayer::setLayerOrder().

virtual void QgsDataProvider::setSubLayerVisibility ( const QString &  name,
bool  vis 
) [inline, virtual]

Set the visibility of the given sublayer name.

Definition at line 208 of file qgsdataprovider.h.

Referenced by QgsRasterLayer::setSubLayerVisibility().

virtual bool QgsDataProvider::setSubsetString ( QString  subset,
bool  updateFeatureCount = true 
) [inline, virtual]

Set the subset string used to create a subset of features in the layer.

This may be a sql where clause or any other string that can be used by the data provider to create a subset. Must be implemented in the dataprovider.

Definition at line 128 of file qgsdataprovider.h.

Referenced by QgsVectorLayerJoinBuffer::addJoinedFeatureAttributes(), QgsVectorLayer::addJoinedFeatureAttributes(), and QgsVectorLayer::setSubsetString().

virtual uint QgsDataProvider::subLayerCount ( ) const [inline, virtual]

return the number of layers for the current data source

Definition at line 183 of file qgsdataprovider.h.

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

Sub-layers handled by this provider, in order from bottom to top.

Sub-layers are used when the provider's source can combine layers it knows about in some way before it hands them off to the provider.

Reimplemented in QgsRasterDataProvider.

Definition at line 161 of file qgsdataprovider.h.

virtual QStringList QgsDataProvider::subLayerStyles ( ) const [inline, virtual]

Sub-layer styles for each sub-layer handled by this provider, in order from bottom to top.

Sub-layer styles are used to abstract the way the provider's source can symbolise layers in some way at the server, before it serves them to the provider.

Definition at line 174 of file qgsdataprovider.h.

Referenced by QgsRasterLayer::writeSymbology().

virtual QString QgsDataProvider::subsetString ( ) [inline, virtual]

Returns the subset definition string (typically sql) currently in use by the layer and used by the provider to limit the feature set.

Must be overridden in the dataprovider, otherwise returns a null QString.

Definition at line 149 of file qgsdataprovider.h.

Referenced by QgsVectorLayerJoinBuffer::addJoinedFeatureAttributes(), QgsVectorLayer::addJoinedFeatureAttributes(), and QgsVectorLayer::subsetString().

virtual bool QgsDataProvider::supportsSubsetString ( ) [inline, virtual]

provider supports setting of subset strings

Note:
added in 1.4

Definition at line 141 of file qgsdataprovider.h.

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

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

Reimplemented in QgsRasterDataProvider.

Definition at line 288 of file qgsdataprovider.h.

virtual void QgsDataProvider::updateExtents ( ) [inline, virtual]

Update the extents of the layer.

Not implemented by default

Definition at line 116 of file qgsdataprovider.h.

Referenced by QgsVectorLayer::commitChanges(), and QgsVectorLayer::updateExtents().


Member Data Documentation

Universal Resource Identifier for source data.

This could be a file, database, or server address.

Definition at line 327 of file qgsdataprovider.h.

QDateTime QgsDataProvider::mTimestamp [protected]

Timestamp of data in the moment when the data were loaded by provider.

Definition at line 320 of file qgsdataprovider.h.

Referenced by QgsRasterDataProvider::timestamp().


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