34     QDomDocument doc = 
describeLayer( serverIface, project, version, request );
    35     response.
setHeader( QStringLiteral( 
"Content-Type" ), QStringLiteral( 
"text/xml; charset=utf-8" ) );
    36     response.
write( doc.toByteArray() );
    47     if ( !parameters.contains( QStringLiteral( 
"SLD_VERSION" ) ) )
    50                                  QStringLiteral( 
"SLD_VERSION is mandatory for DescribeLayer operation" ), 400 );
    52     if ( parameters[ QStringLiteral( 
"SLD_VERSION" )] != QLatin1String( 
"1.1.0" ) )
    55                                  QStringLiteral( 
"SLD_VERSION = %1 is not supported" ).arg( parameters[ QStringLiteral( 
"SLD_VERSION" )] ), 400 );
    58     if ( !parameters.contains( QStringLiteral( 
"LAYERS" ) ) )
    61                                  QStringLiteral( 
"LAYERS is mandatory for DescribeLayer operation" ), 400 );
    64     QStringList layersList = parameters[ QStringLiteral( 
"LAYERS" )].split( 
',', QString::SkipEmptyParts );
    65     if ( layersList.isEmpty() )
    67       throw QgsServiceException( QStringLiteral( 
"InvalidParameterValue" ), QStringLiteral( 
"Layers is empty" ), 400 );
    69     QDomDocument myDocument = QDomDocument();
    71     QDomNode header = myDocument.createProcessingInstruction( QStringLiteral( 
"xml" ), QStringLiteral( 
"version=\"1.0\" encoding=\"UTF-8\"" ) );
    72     myDocument.appendChild( header );
    75     QDomElement root = myDocument.createElementNS( QStringLiteral( 
"http://www.opengis.net/sld" ), QStringLiteral( 
"DescribeLayerResponse" ) );
    76     root.setAttribute( QStringLiteral( 
"xsi:schemaLocation" ), QStringLiteral( 
"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/DescribeLayer.xsd" ) );
    77     root.setAttribute( QStringLiteral( 
"xmlns:ows" ), QStringLiteral( 
"http://www.opengis.net/ows" ) );
    78     root.setAttribute( QStringLiteral( 
"xmlns:se" ), QStringLiteral( 
"http://www.opengis.net/se" ) );
    79     root.setAttribute( QStringLiteral( 
"xmlns:xlink" ), QStringLiteral( 
"http://www.w3.org/1999/xlink" ) );
    80     root.setAttribute( QStringLiteral( 
"xmlns:xsi" ), QStringLiteral( 
"http://www.w3.org/2001/XMLSchema-instance" ) );
    81     myDocument.appendChild( root );
    84     QDomElement versionNode = myDocument.createElement( QStringLiteral( 
"Version" ) );
    85     versionNode.appendChild( myDocument.createTextNode( QStringLiteral( 
"1.1.0" ) ) );
    86     root.appendChild( versionNode );
    90     QString wmsHrefString = 
serviceUrl( request, project ).toString();
    95     if ( wfsHrefString.isEmpty() )
    97       wfsHrefString = wmsHrefString;
   103     if ( wcsHrefString.isEmpty() )
   105       wcsHrefString = wmsHrefString;
   109 #ifdef HAVE_SERVER_PYTHON_PLUGINS   123       QString name = layer->name();
   126       else if ( !layer->shortName().isEmpty() )
   127         name = layer->shortName();
   129       if ( !layersList.contains( name ) )
   135       if ( restrictedLayers.contains( layer->name() ) )
   140 #ifdef HAVE_SERVER_PYTHON_PLUGINS   148       QDomElement layerNode = myDocument.createElement( QStringLiteral( 
"LayerDescription" ) );
   149       root.appendChild( layerNode );
   152       QDomElement typeNode = myDocument.createElement( QStringLiteral( 
"owsType" ) );
   154       QDomElement oResNode = myDocument.createElement( QStringLiteral( 
"se:OnlineResource" ) );
   155       oResNode.setAttribute( QStringLiteral( 
"xlink:type" ), QStringLiteral( 
"simple" ) );
   157       QDomElement nameNode = myDocument.createElement( QStringLiteral( 
"TypeName" ) );
   158       switch ( layer->type() )
   162           typeNode.appendChild( myDocument.createTextNode( QStringLiteral( 
"wfs" ) ) );
   164           if ( wfsLayerIds.indexOf( layer->id() ) != -1 )
   166             oResNode.setAttribute( QStringLiteral( 
"xlink:href" ), wfsHrefString );
   170           QDomElement typeNameNode = myDocument.createElement( QStringLiteral( 
"se:FeatureTypeName" ) );
   171           typeNameNode.appendChild( myDocument.createTextNode( name ) );
   172           nameNode.appendChild( typeNameNode );
   177           typeNode.appendChild( myDocument.createTextNode( QStringLiteral( 
"wcs" ) ) );
   179           if ( wcsLayerIds.indexOf( layer->id() ) != -1 )
   181             oResNode.setAttribute( QStringLiteral( 
"xlink:href" ), wcsHrefString );
   185           QDomElement typeNameNode = myDocument.createElement( QStringLiteral( 
"se:CoverageTypeName" ) );
   186           typeNameNode.appendChild( myDocument.createTextNode( name ) );
   187           nameNode.appendChild( typeNameNode );
   195       layerNode.appendChild( typeNode );
   196       layerNode.appendChild( oResNode );
   197       layerNode.appendChild( nameNode );
 virtual void setHeader(const QString &key, const QString &value)=0
Set Header entry Add Header entry to the response Note that it is usually an error to set Header afte...
 
Base class for all map layer types. 
 
virtual void write(const QString &data)
Write string This is a convenient method that will write directly to the underlying I/O device...
 
Exception class for WMS service exceptions. 
 
QgsServerRequest::Parameters parameters() const
Returns a map of query parameters with keys converted to uppercase. 
 
SERVER_EXPORT QStringList wcsLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published in WCS. 
 
Reads and writes project states. 
 
QMap< QString, QgsMapLayer * > mapLayers(const bool validOnly=false) const
Returns a map of all registered layers by layer ID. 
 
Median cut implementation. 
 
QgsServerRequest Class defining request interface passed to services QgsService::executeRequest() met...
 
bool layerReadPermission(const QgsMapLayer *layer) const
Returns the layer read right. 
 
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins...
 
SERVER_EXPORT QString wcsServiceUrl(const QgsProject &project)
Returns the WCS service url defined in a QGIS project. 
 
Exception thrown when data access violates access controls. 
 
SERVER_EXPORT QStringList wfsLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published in WFS. 
 
QUrl serviceUrl(const QgsServerRequest &request, const QgsProject *project)
Returns WMS service URL. 
 
A helper class that centralizes restrictions given by all the access control filter plugins...
 
QDomDocument describeLayer(QgsServerInterface *serverIface, const QgsProject *project, const QString &version, const QgsServerRequest &request)
DescribeLayer is defined for WMS1.1.1/SLD1.0 and in WMS 1.3.0 SLD Extension. 
 
QgsServerResponse Class defining response interface passed to services QgsService::executeRequest() m...
 
virtual QgsAccessControl * accessControls() const =0
Gets the registered access control filters. 
 
void writeDescribeLayer(QgsServerInterface *serverIface, const QgsProject *project, const QString &version, const QgsServerRequest &request, QgsServerResponse &response)
Output GetMap response in DXF format. 
 
SERVER_EXPORT QStringList wmsRestrictedLayers(const QgsProject &project)
Returns the restricted layer name list. 
 
SERVER_EXPORT QString wfsServiceUrl(const QgsProject &project)
Returns the WFS service url defined in a QGIS project. 
 
QMap< QString, QString > Parameters
 
SERVER_EXPORT bool wmsUseLayerIds(const QgsProject &project)
Returns if layer ids are used as name in WMS.