44 if ( !parameters.contains( QStringLiteral(
"SLD_VERSION" ) ) )
46 throw QgsServiceException( QStringLiteral(
"MissingParameterValue" ), QStringLiteral(
"SLD_VERSION is mandatory for DescribeLayer operation" ), 400 );
48 if ( parameters[QStringLiteral(
"SLD_VERSION" )] != QLatin1String(
"1.1.0" ) )
50 throw QgsServiceException( QStringLiteral(
"InvalidParameterValue" ), QStringLiteral(
"SLD_VERSION = %1 is not supported" ).arg( parameters[QStringLiteral(
"SLD_VERSION" )] ), 400 );
53 if ( !parameters.contains( QStringLiteral(
"LAYERS" ) ) && !parameters.contains( QStringLiteral(
"LAYER" ) ) )
55 throw QgsServiceException( QStringLiteral(
"MissingParameterValue" ), QStringLiteral(
"LAYERS or LAYER is mandatory for DescribeLayer operation" ), 400 );
58 QStringList layersList;
60 if ( parameters.contains( QStringLiteral(
"LAYERS" ) ) )
62 layersList = parameters[QStringLiteral(
"LAYERS" )].split(
',', Qt::SkipEmptyParts );
66 layersList = parameters[QStringLiteral(
"LAYER" )].split(
',', Qt::SkipEmptyParts );
68 if ( layersList.isEmpty() )
70 throw QgsServiceException( QStringLiteral(
"InvalidParameterValue" ), QStringLiteral(
"Layers is empty" ), 400 );
72 QDomDocument myDocument = QDomDocument();
74 const QDomNode header = myDocument.createProcessingInstruction( QStringLiteral(
"xml" ), QStringLiteral(
"version=\"1.0\" encoding=\"UTF-8\"" ) );
75 myDocument.appendChild( header );
78 QDomElement root = myDocument.createElementNS( QStringLiteral(
"http://www.opengis.net/sld" ), QStringLiteral(
"DescribeLayerResponse" ) );
79 root.setAttribute( QStringLiteral(
"xsi:schemaLocation" ), QStringLiteral(
"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/DescribeLayer.xsd" ) );
80 root.setAttribute( QStringLiteral(
"xmlns:ows" ), QStringLiteral(
"http://www.opengis.net/ows" ) );
81 root.setAttribute( QStringLiteral(
"xmlns:se" ), QStringLiteral(
"http://www.opengis.net/se" ) );
82 root.setAttribute( QStringLiteral(
"xmlns:xlink" ), QStringLiteral(
"http://www.w3.org/1999/xlink" ) );
83 root.setAttribute( QStringLiteral(
"xmlns:xsi" ), QStringLiteral(
"http://www.w3.org/2001/XMLSchema-instance" ) );
84 myDocument.appendChild( root );
87 QDomElement versionNode = myDocument.createElement( QStringLiteral(
"Version" ) );
88 versionNode.appendChild( myDocument.createTextNode( QStringLiteral(
"1.1.0" ) ) );
89 root.appendChild( versionNode );
98 if ( wfsHrefString.isEmpty() )
100 wfsHrefString = wmsHrefString;
106 if ( wcsHrefString.isEmpty() )
108 wcsHrefString = wmsHrefString;
112#ifdef HAVE_SERVER_PYTHON_PLUGINS
115 ( void ) serverIface;
128 QString name = layer->name();
131 else if ( !layer->serverProperties()->shortName().isEmpty() )
132 name = layer->serverProperties()->shortName();
134 if ( !layersList.contains( name ) )
140 if ( restrictedLayers.contains( layer->name() ) )
145#ifdef HAVE_SERVER_PYTHON_PLUGINS
153 QDomElement layerNode = myDocument.createElement( QStringLiteral(
"LayerDescription" ) );
154 root.appendChild( layerNode );
157 QDomElement typeNode = myDocument.createElement( QStringLiteral(
"owsType" ) );
159 QDomElement oResNode = myDocument.createElement( QStringLiteral(
"se:OnlineResource" ) );
160 oResNode.setAttribute( QStringLiteral(
"xlink:type" ), QStringLiteral(
"simple" ) );
162 QDomElement nameNode = myDocument.createElement( QStringLiteral(
"TypeName" ) );
163 switch ( layer->type() )
167 typeNode.appendChild( myDocument.createTextNode( QStringLiteral(
"wfs" ) ) );
169 if ( wfsLayerIds.indexOf( layer->id() ) != -1 )
171 oResNode.setAttribute( QStringLiteral(
"xlink:href" ), wfsHrefString );
175 QDomElement typeNameNode = myDocument.createElement( QStringLiteral(
"se:FeatureTypeName" ) );
176 typeNameNode.appendChild( myDocument.createTextNode( name ) );
177 nameNode.appendChild( typeNameNode );
182 typeNode.appendChild( myDocument.createTextNode( QStringLiteral(
"wcs" ) ) );
184 if ( wcsLayerIds.indexOf( layer->id() ) != -1 )
186 oResNode.setAttribute( QStringLiteral(
"xlink:href" ), wcsHrefString );
190 QDomElement typeNameNode = myDocument.createElement( QStringLiteral(
"se:CoverageTypeName" ) );
191 typeNameNode.appendChild( myDocument.createTextNode( name ) );
192 nameNode.appendChild( typeNameNode );
205 layerNode.appendChild( typeNode );
206 layerNode.appendChild( oResNode );
207 layerNode.appendChild( nameNode );