35 #ifdef HAVE_SERVER_PYTHON_PLUGINS 39 const QDomDocument *capabilitiesDocument =
nullptr;
41 #ifdef HAVE_SERVER_PYTHON_PLUGINS 43 if ( cacheManager && cacheManager->
getCachedDocument( &doc, project, request, accessControl ) )
45 capabilitiesDocument = &doc;
55 capabilitiesDocument = &doc;
60 response.
setHeader( QStringLiteral(
"Content-Type" ), QStringLiteral(
"text/xml; charset=utf-8" ) );
61 response.
write( capabilitiesDocument->toByteArray() );
73 QDomElement wcsCapabilitiesElement = doc.createElement( QStringLiteral(
"WCS_Capabilities" ) );
74 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"xmlns" ),
WCS_NAMESPACE );
75 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"xmlns:xsi" ), QStringLiteral(
"http://www.w3.org/2001/XMLSchema-instance" ) );
76 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"xsi:schemaLocation" ),
WCS_NAMESPACE +
" http://schemas.opengis.net/wcs/1.0.0/wcsCapabilities.xsd" );
77 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"xmlns:gml" ),
GML_NAMESPACE );
78 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"xmlns:xlink" ), QStringLiteral(
"http://www.w3.org/1999/xlink" ) );
80 wcsCapabilitiesElement.setAttribute( QStringLiteral(
"updateSequence" ), QStringLiteral(
"0" ) );
81 doc.appendChild( wcsCapabilitiesElement );
87 QDomElement capabilityElement = doc.createElement( QStringLiteral(
"Capability" ) );
88 wcsCapabilitiesElement.appendChild( capabilityElement );
91 QDomElement requestElement = doc.createElement( QStringLiteral(
"Request" ) );
92 capabilityElement.appendChild( requestElement );
95 QDomElement getCapabilitiesElement = doc.createElement( QStringLiteral(
"GetCapabilities" ) );
96 requestElement.appendChild( getCapabilitiesElement );
98 QDomElement dcpTypeElement = doc.createElement( QStringLiteral(
"DCPType" ) );
99 getCapabilitiesElement.appendChild( dcpTypeElement );
100 QDomElement httpElement = doc.createElement( QStringLiteral(
"HTTP" ) );
101 dcpTypeElement.appendChild( httpElement );
104 QString hrefString =
serviceUrl( request, project );
106 QDomElement getElement = doc.createElement( QStringLiteral(
"Get" ) );
107 httpElement.appendChild( getElement );
108 QDomElement onlineResourceElement = doc.createElement( QStringLiteral(
"OnlineResource" ) );
109 onlineResourceElement.setAttribute( QStringLiteral(
"xlink:type" ), QStringLiteral(
"simple" ) );
110 onlineResourceElement.setAttribute( QStringLiteral(
"xlink:href" ), hrefString );
111 getElement.appendChild( onlineResourceElement );
113 QDomElement getCapabilitiesDhcTypePostElement = dcpTypeElement.cloneNode().toElement();
114 getCapabilitiesDhcTypePostElement.firstChild().firstChild().toElement().setTagName( QStringLiteral(
"Post" ) );
115 getCapabilitiesElement.appendChild( getCapabilitiesDhcTypePostElement );
117 QDomElement describeCoverageElement = getCapabilitiesElement.cloneNode().toElement();
118 describeCoverageElement.setTagName( QStringLiteral(
"DescribeCoverage" ) );
119 requestElement.appendChild( describeCoverageElement );
121 QDomElement getCoverageElement = getCapabilitiesElement.cloneNode().toElement();
122 getCoverageElement.setTagName( QStringLiteral(
"GetCoverage" ) );
123 requestElement.appendChild( getCoverageElement );
135 QDomElement serviceElem = doc.createElement( QStringLiteral(
"Service" ) );
138 QDomElement nameElem = doc.createElement( QStringLiteral(
"name" ) );
139 QDomText nameText = doc.createTextNode(
"WCS" );
140 nameElem.appendChild( nameText );
141 serviceElem.appendChild( nameElem );
144 if ( !title.isEmpty() )
146 QDomElement titleElem = doc.createElement( QStringLiteral(
"label" ) );
147 QDomText titleText = doc.createTextNode( title );
148 titleElem.appendChild( titleText );
149 serviceElem.appendChild( titleElem );
153 if ( !
abstract.isEmpty() )
155 QDomElement abstractElem = doc.createElement( QStringLiteral(
"description" ) );
156 QDomText abstractText = doc.createCDATASection(
abstract );
157 abstractElem.appendChild( abstractText );
158 serviceElem.appendChild( abstractElem );
162 if ( !keywords.isEmpty() )
164 QDomElement keywordsElem = doc.createElement( QStringLiteral(
"keywords" ) );
165 for (
int i = 0; i < keywords.size(); ++i )
167 QDomElement keywordElem = doc.createElement( QStringLiteral(
"keyword" ) );
168 QDomText keywordText = doc.createTextNode( keywords.at( i ) );
169 keywordElem.appendChild( keywordText );
170 keywordsElem.appendChild( keywordElem );
172 serviceElem.appendChild( keywordsElem );
182 if ( !contactPerson.isEmpty() ||
183 !contactOrganization.isEmpty() ||
184 !contactPosition.isEmpty() ||
185 !contactMail.isEmpty() ||
186 !contactPhone.isEmpty() ||
187 !onlineResource.isEmpty() )
189 QDomElement responsiblePartyElem = doc.createElement( QStringLiteral(
"responsibleParty" ) );
190 if ( !contactPerson.isEmpty() )
192 QDomElement contactPersonElem = doc.createElement( QStringLiteral(
"individualName" ) );
193 QDomText contactPersonText = doc.createTextNode( contactPerson );
194 contactPersonElem.appendChild( contactPersonText );
195 responsiblePartyElem.appendChild( contactPersonElem );
197 if ( !contactOrganization.isEmpty() )
199 QDomElement contactOrganizationElem = doc.createElement( QStringLiteral(
"organisationName" ) );
200 QDomText contactOrganizationText = doc.createTextNode( contactOrganization );
201 contactOrganizationElem.appendChild( contactOrganizationText );
202 responsiblePartyElem.appendChild( contactOrganizationElem );
204 if ( !contactPosition.isEmpty() )
206 QDomElement contactPositionElem = doc.createElement( QStringLiteral(
"positionName" ) );
207 QDomText contactPositionText = doc.createTextNode( contactPosition );
208 contactPositionElem.appendChild( contactPositionText );
209 responsiblePartyElem.appendChild( contactPositionElem );
211 if ( !contactMail.isEmpty() ||
212 !contactPhone.isEmpty() ||
213 !onlineResource.isEmpty() )
215 QDomElement contactInfoElem = doc.createElement( QStringLiteral(
"contactInfo" ) );
216 if ( !contactMail.isEmpty() )
218 QDomElement contactAddressElem = doc.createElement( QStringLiteral(
"address" ) );
219 QDomElement contactAddressMailElem = doc.createElement( QStringLiteral(
"electronicMailAddress" ) );
220 QDomText contactAddressMailText = doc.createTextNode( contactMail );
221 contactAddressMailElem.appendChild( contactAddressMailText );
222 contactAddressElem.appendChild( contactAddressMailElem );
223 contactInfoElem.appendChild( contactAddressElem );
225 if ( !contactPhone.isEmpty() )
227 QDomElement contactPhoneElem = doc.createElement( QStringLiteral(
"phone" ) );
228 QDomElement contactVoiceElem = doc.createElement( QStringLiteral(
"voice" ) );
229 QDomText contactVoiceText = doc.createTextNode( contactPhone );
230 contactVoiceElem.appendChild( contactVoiceText );
231 contactPhoneElem.appendChild( contactVoiceElem );
232 contactInfoElem.appendChild( contactPhoneElem );
234 if ( !onlineResource.isEmpty() )
236 QDomElement onlineResourceElem = doc.createElement( QStringLiteral(
"onlineResource" ) );
237 onlineResourceElem.setAttribute( QStringLiteral(
"xmlns:xlink" ), QStringLiteral(
"http://www.w3.org/1999/xlink" ) );
238 onlineResourceElem.setAttribute( QStringLiteral(
"xlink:type" ), QStringLiteral(
"simple" ) );
239 onlineResourceElem.setAttribute( QStringLiteral(
"xlink:href" ), onlineResource );
240 contactInfoElem.appendChild( onlineResourceElem );
242 responsiblePartyElem.appendChild( contactInfoElem );
244 serviceElem.appendChild( responsiblePartyElem );
247 QDomElement feesElem = doc.createElement( QStringLiteral(
"fees" ) );
248 QDomText feesText = doc.createTextNode( QStringLiteral(
"None" ) );
250 if ( !fees.isEmpty() )
252 feesText = doc.createTextNode( fees );
254 feesElem.appendChild( feesText );
255 serviceElem.appendChild( feesElem );
257 QDomElement accessConstraintsElem = doc.createElement( QStringLiteral(
"accessConstraints" ) );
258 QDomText accessConstraintsText = doc.createTextNode( QStringLiteral(
"None" ) );
260 if ( !accessConstraints.isEmpty() )
262 accessConstraintsText = doc.createTextNode( accessConstraints );
264 accessConstraintsElem.appendChild( accessConstraintsText );
265 serviceElem.appendChild( accessConstraintsElem );
273 #ifdef HAVE_SERVER_PYTHON_PLUGINS 281 QDomElement contentMetadataElement = doc.createElement( QStringLiteral(
"ContentMetadata" ) );
284 for (
int i = 0; i < wcsLayersId.size(); ++i )
295 #ifdef HAVE_SERVER_PYTHON_PLUGINS 303 QDomElement layerElem =
getCoverageOffering( doc, const_cast<QgsRasterLayer *>( rLayer ), project,
true );
305 contentMetadataElement.appendChild( layerElem );
309 return contentMetadataElement;
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.
QgsMapLayerType type() const
Returns the type of the layer.
const QString WCS_NAMESPACE
SERVER_EXPORT QString owsServiceContactPosition(const QgsProject &project)
Returns the owsService contact position defined in project.
SERVER_EXPORT QString owsServiceContactPerson(const QgsProject &project)
Returns the owsService contact person defined in project.
SERVER_EXPORT QStringList owsServiceKeywords(const QgsProject &project)
Returns the owsService keywords defined in project.
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
SERVER_EXPORT QString owsServiceAbstract(const QgsProject &project)
Returns the owsService abstract defined in project.
QString serviceUrl(const QgsServerRequest &request, const QgsProject *project)
Service URL string.
QDomDocument createGetCapabilitiesDocument(QgsServerInterface *serverIface, const QgsProject *project, const QString &version, const QgsServerRequest &request)
Create get capabilities document.
virtual void write(const QString &data)
Write string This is a convenient method that will write directly to the underlying I/O device...
const QString GML_NAMESPACE
SERVER_EXPORT QStringList wcsLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published in WCS.
A helper class that centralizes caches accesses given by all the server cache filter plugins...
Reads and writes project states.
SERVER_EXPORT QString owsServiceFees(const QgsProject &project)
Returns the owsService fees defined in project.
bool getCachedDocument(QDomDocument *doc, const QgsProject *project, const QgsServerRequest &request, QgsAccessControl *accessControl) const
Returns cached document (or 0 if document not in cache) like capabilities.
SERVER_EXPORT QString owsServiceAccessConstraints(const QgsProject &project)
Returns the owsService access constraints defined in project.
SERVER_EXPORT QString owsServiceOnlineResource(const QgsProject &project)
Returns the owsService online resource defined in project.
SERVER_EXPORT QString owsServiceContactOrganization(const QgsProject &project)
Returns the owsService contact organization defined in project.
QgsServerRequest Class defining request interface passed to services QgsService::executeRequest() met...
QDomElement getServiceElement(QDomDocument &doc, const QgsProject *project)
Create Service element for get capabilities document.
QString implementationVersion()
Returns the highest version supported by this implementation.
bool layerReadPermission(const QgsMapLayer *layer) const
Returns the layer read right.
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins...
QDomElement getCoverageOffering(QDomDocument &doc, const QgsRasterLayer *layer, const QgsProject *project, bool brief)
CoverageOffering or CoverageOfferingBrief element.
bool setCachedDocument(const QDomDocument *doc, const QgsProject *project, const QgsServerRequest &request, QgsAccessControl *accessControl) const
Updates or inserts the document in cache like capabilities.
virtual QgsServerCacheManager * cacheManager() const =0
Gets the registered server cache filters.
A helper class that centralizes restrictions given by all the access control filter plugins...
QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
QgsServerResponse Class defining response interface passed to services QgsService::executeRequest() m...
virtual QgsAccessControl * accessControls() const =0
Gets the registered access control filters.
SERVER_EXPORT QString owsServiceContactMail(const QgsProject &project)
Returns the owsService contact mail defined in project.
QDomElement getContentMetadataElement(QDomDocument &doc, QgsServerInterface *serverIface, const QgsProject *project)
Create ContentMetadata element for get capabilities document.
void writeGetCapabilities(QgsServerInterface *serverIface, const QgsProject *project, const QString &version, const QgsServerRequest &request, QgsServerResponse &response)
Output WCS GetCapabilities response.
SERVER_EXPORT QString owsServiceTitle(const QgsProject &project)
Returns the owsService title defined in project.
SERVER_EXPORT QString owsServiceContactPhone(const QgsProject &project)
Returns the owsService contact phone defined in project.