Skip to content

Commit 1cce268

Browse files
committed
Update QGIS Server OWS Capabilities
Has OWS capabilities and context validated for metadata
1 parent 4c5c159 commit 1cce268

File tree

1 file changed

+50
-24
lines changed

1 file changed

+50
-24
lines changed

src/mapserver/qgsprojectparser.cpp

+50-24
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,15 @@ void QgsProjectParser::featureTypeList( QDomElement& parentElement, QDomDocument
188188
abstractElem.appendChild( abstractText );
189189
layerElem.appendChild( abstractElem );
190190

191+
//keyword list
192+
if ( !layer->keywordList().isEmpty() )
193+
{
194+
QDomElement keywordsElem = doc.createElement( "Keywords" );
195+
QDomText keywordsText = doc.createTextNode( layer->keywordList() );
196+
keywordsElem.appendChild( keywordsText );
197+
layerElem.appendChild( keywordsElem );
198+
}
199+
191200
//appendExGeographicBoundingBox( layerElem, doc, layer->extent(), layer->crs() );
192201

193202
QDomElement srsElem = doc.createElement( "SRS" );
@@ -234,6 +243,27 @@ void QgsProjectParser::featureTypeList( QDomElement& parentElement, QDomDocument
234243
bBoxElement.setAttribute( "maxy", QString::number( layerExtent.yMaximum() ) );
235244
layerElem.appendChild( bBoxElement );
236245

246+
// layer metadata URL
247+
QString metadataUrl = layer->metadataUrl();
248+
if ( !metadataUrl.isEmpty() )
249+
{
250+
QDomElement metaUrlElem = doc.createElement( "MetadataURL" );
251+
QString metadataUrlType = layer->metadataUrlType();
252+
metaUrlElem.setAttribute( "type", metadataUrlType );
253+
QString metadataUrlFormat = layer->metadataUrlFormat();
254+
if ( metadataUrlFormat == "text/xml" )
255+
{
256+
metaUrlElem.setAttribute( "format", "XML" );
257+
}
258+
else
259+
{
260+
metaUrlElem.setAttribute( "format", "TXT" );
261+
}
262+
QDomText metaUrlText = doc.createTextNode( metadataUrl );
263+
metaUrlElem.appendChild( metaUrlText );
264+
layerElem.appendChild( metaUrlElem );
265+
}
266+
237267
parentElement.appendChild( layerElem );
238268
}
239269
}
@@ -246,8 +276,6 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
246276
// set parentElement id
247277
QFileInfo projectFileInfo( mProjectPath );
248278
parentElement.setAttribute( "id", "ows-context-" + projectFileInfo.baseName() );
249-
// OWSContext General element
250-
QDomElement serviceElem = doc.createElement( "Service" );
251279

252280
QDomElement propertiesElem = mXMLDoc->documentElement().firstChildElement( "properties" );
253281
if ( propertiesElem.isNull() )
@@ -256,6 +284,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
256284
return;
257285
}
258286

287+
// OWSContext General element
259288
QDomElement generalElem = doc.createElement( "General" );
260289

261290
QDomElement windowElem = doc.createElement( "Window" );
@@ -285,7 +314,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
285314

286315
//keyword list
287316
QDomElement keywordListElem = propertiesElem.firstChildElement( "WMSKeywordList" );
288-
if ( !keywordListElem.isNull() )
317+
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
289318
{
290319
bool siaFormat = featureInfoFormatSIA2045();
291320

@@ -305,7 +334,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
305334

306335
if ( keywordList.size() > 0 )
307336
{
308-
serviceElem.appendChild( keywordsElem );
337+
generalElem.appendChild( keywordsElem );
309338
}
310339
}
311340

@@ -346,7 +375,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
346375
QDomText lowerCornerText = doc.createTextNode( QString::number( combinedBBox.xMinimum() ) + " " + QString::number( combinedBBox.yMinimum() ) );
347376
lowerCornerElem.appendChild( lowerCornerText );
348377
bboxElem.appendChild( lowerCornerElem );
349-
QDomElement upperCornerElem = doc.createElement( "ows:upperCorner" );
378+
QDomElement upperCornerElem = doc.createElement( "ows:UpperCorner" );
350379
QDomText upperCornerText = doc.createTextNode( QString::number( combinedBBox.xMaximum() ) + " " + QString::number( combinedBBox.yMaximum() ) );
351380
upperCornerElem.appendChild( upperCornerText );
352381
bboxElem.appendChild( upperCornerElem );
@@ -676,9 +705,9 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
676705
}
677706

678707
//keyword list
679-
QStringList keywordStringList = currentLayer->keywordList().split( "," );
680-
if ( keywordStringList.size() > 0 )
708+
if ( !currentLayer->keywordList().isEmpty() )
681709
{
710+
QStringList keywordStringList = currentLayer->keywordList().split( "," );
682711
bool siaFormat = featureInfoFormatSIA2045();
683712

684713
QDomElement keywordListElem = doc.createElement( "KeywordList" );
@@ -768,10 +797,18 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
768797
{
769798
QDomElement metaUrlElem = doc.createElement( "MetadataURL" );
770799
QString metadataUrlType = currentLayer->metadataUrlType();
771-
if ( !metadataUrlType.isEmpty() )
800+
if ( version == "1.1.1" )
772801
{
773802
metaUrlElem.setAttribute( "type", metadataUrlType );
774803
}
804+
else if ( metadataUrlType == "FGDC" )
805+
{
806+
metaUrlElem.setAttribute( "type", "FGDC:1998" );
807+
}
808+
else if ( metadataUrlType == "TC211" )
809+
{
810+
metaUrlElem.setAttribute( "type", "ISO19115:2003" );
811+
}
775812
QString metadataUrlFormat = currentLayer->metadataUrlFormat();
776813
if ( !metadataUrlFormat.isEmpty() )
777814
{
@@ -1067,9 +1104,9 @@ void QgsProjectParser::addOWSLayers( QDomDocument &doc,
10671104
layerElem.appendChild( styleListElem );
10681105

10691106
//keyword list
1070-
QStringList keywordStringList = currentLayer->keywordList().split( "," );
1071-
if ( keywordStringList.size() > 0 )
1107+
if ( !currentLayer->keywordList().isEmpty() )
10721108
{
1109+
QStringList keywordStringList = currentLayer->keywordList().split( "," );
10731110
bool siaFormat = featureInfoFormatSIA2045();
10741111

10751112
QDomElement keywordsElem = doc.createElement( "ows:Keywords" );
@@ -1092,19 +1129,8 @@ void QgsProjectParser::addOWSLayers( QDomDocument &doc,
10921129
if ( !metadataUrl.isEmpty() )
10931130
{
10941131
QDomElement metaUrlElem = doc.createElement( "MetadataURL" );
1095-
QString metadataUrlType = currentLayer->metadataUrlType();
1096-
if ( !metadataUrlType.isEmpty() )
1097-
{
1098-
metaUrlElem.setAttribute( "type", metadataUrlType );
1099-
}
11001132
QString metadataUrlFormat = currentLayer->metadataUrlFormat();
1101-
if ( !metadataUrlFormat.isEmpty() )
1102-
{
1103-
QDomElement metaUrlFormatElem = doc.createElement( "Format" );
1104-
QDomText metaUrlFormatText = doc.createTextNode( metadataUrlFormat );
1105-
metaUrlFormatElem.appendChild( metaUrlFormatText );
1106-
metaUrlElem.appendChild( metaUrlFormatElem );
1107-
}
1133+
metaUrlElem.setAttribute( "format", metadataUrlFormat );
11081134
QDomElement metaUrlORElem = doc.createElement( "OnlineResource" );
11091135
metaUrlORElem.setAttribute( "xmlns:xlink", "http://www.w3.org/1999/xlink" );
11101136
metaUrlORElem.setAttribute( "xlink:type", "simple" );
@@ -2355,7 +2381,7 @@ void QgsProjectParser::serviceCapabilities( QDomElement& parentElement, QDomDocu
23552381

23562382
//keyword list
23572383
QDomElement keywordListElem = propertiesElem.firstChildElement( "WMSKeywordList" );
2358-
if ( !keywordListElem.isNull() )
2384+
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
23592385
{
23602386
bool siaFormat = featureInfoFormatSIA2045();
23612387

@@ -2534,7 +2560,7 @@ void QgsProjectParser::serviceWFSCapabilities( QDomElement& parentElement, QDomD
25342560

25352561
//keyword list
25362562
QDomElement keywordListElem = propertiesElem.firstChildElement( "WMSKeywordList" );
2537-
if ( !keywordListElem.isNull() )
2563+
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
25382564
{
25392565
bool siaFormat = featureInfoFormatSIA2045();
25402566

0 commit comments

Comments
 (0)