32     return QStringLiteral( 
"1.0.0" );
    37     QDomElement layerElem;
    39       layerElem = doc.createElement( QStringLiteral( 
"CoverageOfferingBrief" ) );
    41       layerElem = doc.createElement( QStringLiteral( 
"CoverageOffering" ) );
    44     QDomElement nameElem = doc.createElement( QStringLiteral( 
"name" ) );
    45     QString name = layer->
name();
    48     name = name.replace( 
' ', 
'_' );
    49     QDomText nameText = doc.createTextNode( name );
    50     nameElem.appendChild( nameText );
    51     layerElem.appendChild( nameElem );
    54     QDomElement labelElem = doc.createElement( QStringLiteral( 
"label" ) );
    55     QString title = layer->
title();
    56     if ( title.isEmpty() )
    58       title = layer->
name();
    60     QDomText labelText = doc.createTextNode( title );
    61     labelElem.appendChild( labelText );
    62     layerElem.appendChild( labelElem );
    65     QString 
abstract = layer->
abstract();
    66     if ( !
abstract.isEmpty() )
    68       QDomElement descriptionElem = doc.createElement( QStringLiteral( 
"description" ) );
    69       QDomText descriptionText = doc.createTextNode( 
abstract );
    70       descriptionElem.appendChild( descriptionText );
    71       layerElem.appendChild( descriptionElem );
    85       QgsDebugMsg( QStringLiteral( 
"Transform error caught: %1. Using original layer extent." ).arg( e.
what() ) );
    88     QDomElement lonLatElem = doc.createElement( QStringLiteral( 
"lonLatEnvelope" ) );
    89     lonLatElem.setAttribute( QStringLiteral( 
"srsName" ), QStringLiteral( 
"urn:ogc:def:crs:OGC:1.3:CRS84" ) );
    90     QDomElement lowerPosElem = doc.createElement( QStringLiteral( 
"gml:pos" ) );
    91     QDomText lowerPosText = doc.createTextNode( QString::number( BBox.
xMinimum() ) + 
" " +  QString::number( BBox.
yMinimum() ) );
    92     lowerPosElem.appendChild( lowerPosText );
    93     lonLatElem.appendChild( lowerPosElem );
    94     QDomElement upperPosElem = doc.createElement( QStringLiteral( 
"gml:pos" ) );
    95     QDomText upperPosText = doc.createTextNode( QString::number( BBox.
xMaximum() ) + 
" " +  QString::number( BBox.
yMaximum() ) );
    96     upperPosElem.appendChild( upperPosText );
    97     lonLatElem.appendChild( upperPosElem );
    98     layerElem.appendChild( lonLatElem );
   106     QDomElement domainSetElem = doc.createElement( QStringLiteral( 
"domainSet" ) );
   107     layerElem.appendChild( domainSetElem );
   109     QDomElement spatialDomainElem = doc.createElement( QStringLiteral( 
"spatialDomain" ) );
   110     domainSetElem.appendChild( spatialDomainElem );
   113     QDomElement envelopeElem = doc.createElement( QStringLiteral( 
"gml:Envelope" ) );
   114     envelopeElem.setAttribute( QStringLiteral( 
"srsName" ), layerCrs.
authid() );
   115     QDomElement lowerCornerElem = doc.createElement( QStringLiteral( 
"gml:pos" ) );
   116     QDomText lowerCornerText = doc.createTextNode( QString::number( layerBBox.
xMinimum() ) + 
" " +  QString::number( layerBBox.
yMinimum() ) );
   117     lowerCornerElem.appendChild( lowerCornerText );
   118     envelopeElem.appendChild( lowerCornerElem );
   119     QDomElement upperCornerElem = doc.createElement( QStringLiteral( 
"gml:pos" ) );
   120     QDomText upperCornerText = doc.createTextNode( QString::number( layerBBox.
xMaximum() ) + 
" " +  QString::number( layerBBox.
yMaximum() ) );
   121     upperCornerElem.appendChild( upperCornerText );
   122     envelopeElem.appendChild( upperCornerElem );
   123     spatialDomainElem.appendChild( envelopeElem );
   125     QDomElement rectGridElem = doc.createElement( QStringLiteral( 
"gml:RectifiedGrid" ) );
   126     rectGridElem.setAttribute( QStringLiteral( 
"dimension" ), 2 );
   127     QDomElement limitsElem = doc.createElement( QStringLiteral( 
"gml:limits" ) );
   128     rectGridElem.appendChild( limitsElem );
   129     QDomElement gridEnvElem = doc.createElement( QStringLiteral( 
"gml:GridEnvelope" ) );
   130     limitsElem.appendChild( gridEnvElem );
   131     QDomElement lowElem = doc.createElement( QStringLiteral( 
"gml:low" ) );
   132     QDomText lowText = doc.createTextNode( QStringLiteral( 
"0 0" ) );
   133     lowElem.appendChild( lowText );
   134     gridEnvElem.appendChild( lowElem );
   135     QDomElement highElem = doc.createElement( QStringLiteral( 
"gml:high" ) );
   136     QDomText highText = doc.createTextNode( QString::number( layer->
width() ) + 
" " + QString::number( layer->
height() ) );
   137     highElem.appendChild( highText );
   138     gridEnvElem.appendChild( highElem );
   139     spatialDomainElem.appendChild( rectGridElem );
   141     QDomElement xAxisElem = doc.createElement( QStringLiteral( 
"gml:axisName" ) );
   142     QDomText xAxisText = doc.createTextNode( QStringLiteral( 
"x" ) );
   143     xAxisElem.appendChild( xAxisText );
   144     spatialDomainElem.appendChild( xAxisElem );
   146     QDomElement yAxisElem = doc.createElement( QStringLiteral( 
"gml:axisName" ) );
   147     QDomText yAxisText = doc.createTextNode( QStringLiteral( 
"y" ) );
   148     yAxisElem.appendChild( yAxisText );
   149     spatialDomainElem.appendChild( yAxisElem );
   151     QDomElement originElem = doc.createElement( QStringLiteral( 
"gml:origin" ) );
   152     QDomElement originPosElem = doc.createElement( QStringLiteral( 
"gml:pos" ) );
   153     QDomText originPosText = doc.createTextNode( QString::number( layerBBox.
xMinimum() ) + 
" " +  QString::number( layerBBox.
yMaximum() ) );
   154     originPosElem.appendChild( originPosText );
   155     spatialDomainElem.appendChild( originElem );
   157     QDomElement xOffsetElem = doc.createElement( QStringLiteral( 
"gml:offsetVector" ) );
   158     QDomText xOffsetText = doc.createTextNode( QString::number( layer->
rasterUnitsPerPixelX() ) + 
" 0" );
   159     xOffsetElem.appendChild( xOffsetText );
   160     spatialDomainElem.appendChild( xOffsetElem );
   162     QDomElement yOffsetElem = doc.createElement( QStringLiteral( 
"gml:offsetVector" ) );
   163     QDomText yOffsetText = doc.createTextNode( 
"0 " + QString::number( layer->
rasterUnitsPerPixelY() ) );
   164     yOffsetElem.appendChild( yOffsetText );
   165     spatialDomainElem.appendChild( yOffsetElem );
   168     QDomElement rangeSetElem = doc.createElement( QStringLiteral( 
"rangeSet" ) );
   169     layerElem.appendChild( rangeSetElem );
   178     QDomElement RangeSetElem = doc.createElement( QStringLiteral( 
"RangeSet" ) );
   179     rangeSetElem.appendChild( RangeSetElem );
   181     QDomElement rsNameElem = doc.createElement( QStringLiteral( 
"name" ) );
   182     QDomText rsNameText = doc.createTextNode( QStringLiteral( 
"Bands" ) );
   183     rsNameElem.appendChild( rsNameText );
   184     RangeSetElem.appendChild( rsNameElem );
   186     QDomElement axisDescElem = doc.createElement( QStringLiteral( 
"axisDescription" ) );
   187     RangeSetElem.appendChild( axisDescElem );
   189     QDomElement AxisDescElem = doc.createElement( QStringLiteral( 
"AxisDescription" ) );
   190     axisDescElem.appendChild( AxisDescElem );
   192     QDomElement adNameElem = doc.createElement( QStringLiteral( 
"name" ) );
   193     QDomText adNameText = doc.createTextNode( QStringLiteral( 
"bands" ) );
   194     adNameElem.appendChild( adNameText );
   195     AxisDescElem.appendChild( adNameElem );
   197     QDomElement adValuesElem = doc.createElement( QStringLiteral( 
"values" ) );
   198     for ( 
int idx = 0; idx < layer->
bandCount(); ++idx )
   200       QDomElement adValueElem = doc.createElement( QStringLiteral( 
"value" ) );
   201       QDomText adValueText = doc.createTextNode( QString::number( idx + 1 ) );
   202       adValueElem.appendChild( adValueText );
   203       adValuesElem.appendChild( adValueElem );
   205     AxisDescElem.appendChild( adValuesElem );
   209     QDomElement sCRSElem = doc.createElement( QStringLiteral( 
"supportedCRSs" ) );
   210     QDomElement rCRSElem = doc.createElement( QStringLiteral( 
"requestResponseCRSs" ) );
   211     QDomText rCRSText = doc.createTextNode( layerCrs.
authid() );
   212     rCRSElem.appendChild( rCRSText );
   213     sCRSElem.appendChild( rCRSElem );
   214     QDomElement nCRSElem = doc.createElement( QStringLiteral( 
"nativeCRSs" ) );
   215     QDomText nCRSText = doc.createTextNode( layerCrs.
authid() );
   216     nCRSElem.appendChild( nCRSText );
   217     sCRSElem.appendChild( nCRSElem );
   218     layerElem.appendChild( sCRSElem );
   222     QDomElement sFormatsElem = doc.createElement( QStringLiteral( 
"supportedFormats" ) );
   223     sFormatsElem.setAttribute( QStringLiteral( 
"nativeFormat" ), QStringLiteral( 
"raw binary" ) );
   224     QDomElement formatsElem = doc.createElement( QStringLiteral( 
"formats" ) );
   225     QDomText formatsText = doc.createTextNode( QStringLiteral( 
"GeoTIFF" ) );
   226     formatsElem.appendChild( formatsText );
   227     sFormatsElem.appendChild( formatsElem );
   228     layerElem.appendChild( sFormatsElem );
   236     static QSet< QString > sFilter
   238       QStringLiteral( 
"REQUEST" ),
   239       QStringLiteral( 
"VERSION" ),
   240       QStringLiteral( 
"SERVICE" ),
   241       QStringLiteral( 
"_DC" )
   251     if ( href.isEmpty() )
   256       for ( 
auto param : q.queryItems() )
   258         if ( sFilter.contains( param.first.toUpper() ) )
   259           q.removeAllQueryItems( param.first );
   263       href = url.toString();
   272     QStringList lst = bboxStr.split( 
',' );
   273     if ( lst.count() != 4 )
   278     for ( 
int i = 0; i < 4; i++ )
   280       lst[i].replace( 
' ', 
'+' );
   281       d[i] = lst[i].toDouble( &ok );
 
int width() const
Returns the width of the (unclipped) raster. 
 
A rectangle specified with double values. 
 
QgsRectangle parseBbox(const QString &bboxStr)
Parse bounding box. 
 
int bandCount() const
Returns the number of bands in this layer. 
 
QString shortName() const
Returns the short name of the layer used by QGIS Server to identify the layer. 
 
This class provides qgis with the ability to render raster datasets onto the mapcanvas. 
 
double rasterUnitsPerPixelX() const
Returns the number of raster units per each raster pixel in X axis. 
 
QString abstract() const
Returns the abstract of the layer used by QGIS Server in GetCapabilities request. ...
 
QString serviceUrl(const QgsServerRequest &request, const QgsProject *project)
Service URL string. 
 
double rasterUnitsPerPixelY() const
Returns the number of raster units per each raster pixel in Y axis. 
 
int height() const
Returns the height of the (unclipped) raster. 
 
QUrl originalUrl() const
Returns the request url as seen by the web server, by default this is equal to the url seen by QGIS s...
 
virtual QgsRectangle extent() const
Returns the extent of the layer. 
 
Reads and writes project states. 
 
QString title() const
Returns the title of the layer used by QGIS Server in GetCapabilities request. 
 
double yMinimum() const
Returns the y minimum value (bottom side of rectangle). 
 
double xMaximum() const
Returns the x maximum value (right side of rectangle). 
 
QgsServerRequest Class defining request interface passed to services QgsService::executeRequest() met...
 
QString implementationVersion()
Returns the highest version supported by this implementation. 
 
QDomElement getCoverageOffering(QDomDocument &doc, const QgsRasterLayer *layer, const QgsProject *project, bool brief)
CoverageOffering or CoverageOfferingBrief element. 
 
SERVER_EXPORT QString wcsServiceUrl(const QgsProject &project)
Returns the WCS service url defined in a QGIS project. 
 
This class represents a coordinate reference system (CRS). 
 
double xMinimum() const
Returns the x minimum value (left side of rectangle). 
 
double yMaximum() const
Returns the y maximum value (top side of rectangle). 
 
Custom exception class for Coordinate Reference System related exceptions. 
 
QString authid() const
Returns the authority identifier for the CRS. 
 
QgsCoordinateReferenceSystem crs