Skip to content

Commit 0a38003

Browse files
committedNov 16, 2017
Keep name and add metadata and keywordlist for root layer
1 parent f52300d commit 0a38003

File tree

1 file changed

+58
-30
lines changed

1 file changed

+58
-30
lines changed
 

‎src/server/services/wms/qgswmsgetcapabilities.cpp

Lines changed: 58 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ namespace QgsWms
8484
const QgsLayerTreeGroup *layerTreeGroup,
8585
bool projectSettings );
8686

87+
void addKeywordListElement( const QgsProject *project, QDomDocument &doc, QDomElement &parent );
8788
}
8889

8990
void writeGetCapabilities( QgsServerInterface *serverIface, const QgsProject *project,
@@ -225,8 +226,6 @@ namespace QgsWms
225226
QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version,
226227
const QgsServerRequest &request )
227228
{
228-
bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045( *project );
229-
230229
//Service element
231230
QDomElement serviceElem = doc.createElement( QStringLiteral( "Service" ) );
232231

@@ -254,34 +253,7 @@ namespace QgsWms
254253
serviceElem.appendChild( abstractElem );
255254
}
256255

257-
QDomElement keywordsElem = doc.createElement( QStringLiteral( "KeywordList" ) );
258-
//add default keyword
259-
QDomElement keywordElem = doc.createElement( QStringLiteral( "Keyword" ) );
260-
keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "ISO" ) );
261-
QDomText keywordText = doc.createTextNode( QStringLiteral( "infoMapAccessService" ) );
262-
keywordElem.appendChild( keywordText );
263-
keywordsElem.appendChild( keywordElem );
264-
serviceElem.appendChild( keywordsElem );
265-
QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project );
266-
if ( !keywords.isEmpty() )
267-
{
268-
for ( int i = 0; i < keywords.size(); ++i )
269-
{
270-
QString keyword = keywords.at( i );
271-
if ( !keyword.isEmpty() )
272-
{
273-
keywordElem = doc.createElement( QStringLiteral( "Keyword" ) );
274-
keywordText = doc.createTextNode( keyword );
275-
keywordElem.appendChild( keywordText );
276-
if ( sia2045 )
277-
{
278-
keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) );
279-
}
280-
keywordsElem.appendChild( keywordElem );
281-
}
282-
}
283-
serviceElem.appendChild( keywordsElem );
284-
}
256+
addKeywordListElement( project, doc, serviceElem );
285257

286258
QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource( *project );
287259
if ( onlineResource.isEmpty() )
@@ -782,6 +754,28 @@ namespace QgsWms
782754
layerParentAbstElem.appendChild( layerParentAbstText );
783755
layerParentElem.appendChild( layerParentAbstElem );
784756

757+
// Root Layer name
758+
QDomElement layerParentNameElem = doc.createElement( QStringLiteral( "Name" ) );
759+
QString rootName = QgsServerProjectUtils::wmsRootName( *project );
760+
if ( rootName.isEmpty() )
761+
{
762+
QDomText layerParentNameText = doc.createTextNode( project->title() );
763+
layerParentNameElem.appendChild( layerParentNameText );
764+
}
765+
else
766+
{
767+
QDomText layerParentNameText = doc.createTextNode( rootName );
768+
layerParentNameElem.appendChild( layerParentNameText );
769+
}
770+
layerParentElem.appendChild( layerParentNameElem );
771+
772+
// Keyword list
773+
addKeywordListElement( project, doc, layerParentElem );
774+
775+
// Metadata (empty but needed for OGC tests RECOMMENDATIONS)
776+
QDomElement metaUrlElem = doc.createElement( QStringLiteral( "MetadataURL" ) );
777+
layerParentElem.appendChild( metaUrlElem );
778+
785779
// Root Layer tree name
786780
if ( projectSettings )
787781
{
@@ -1725,6 +1719,40 @@ namespace QgsWms
17251719
}
17261720
}
17271721

1722+
void addKeywordListElement( const QgsProject *project, QDomDocument &doc, QDomElement &parent )
1723+
{
1724+
bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045( *project );
1725+
1726+
QDomElement keywordsElem = doc.createElement( QStringLiteral( "KeywordList" ) );
1727+
//add default keyword
1728+
QDomElement keywordElem = doc.createElement( QStringLiteral( "Keyword" ) );
1729+
keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "ISO" ) );
1730+
QDomText keywordText = doc.createTextNode( QStringLiteral( "infoMapAccessService" ) );
1731+
keywordElem.appendChild( keywordText );
1732+
keywordsElem.appendChild( keywordElem );
1733+
parent.appendChild( keywordsElem );
1734+
QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project );
1735+
if ( !keywords.isEmpty() )
1736+
{
1737+
for ( int i = 0; i < keywords.size(); ++i )
1738+
{
1739+
QString keyword = keywords.at( i );
1740+
if ( !keyword.isEmpty() )
1741+
{
1742+
keywordElem = doc.createElement( QStringLiteral( "Keyword" ) );
1743+
keywordText = doc.createTextNode( keyword );
1744+
keywordElem.appendChild( keywordText );
1745+
if ( sia2045 )
1746+
{
1747+
keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) );
1748+
}
1749+
keywordsElem.appendChild( keywordElem );
1750+
}
1751+
}
1752+
1753+
parent.appendChild( keywordsElem );
1754+
}
1755+
}
17281756
}
17291757

17301758

0 commit comments

Comments
 (0)
Please sign in to comment.