QGIS API Documentation  3.6.0-Noosa (5873452)
qgsserverprojectutils.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsserverprojectutils.cpp
3  -------------------------
4  begin : December 19, 2016
5  copyright : (C) 2016 by Paul Blottiere
6  email : paul dot blottiere at oslandia dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "qgsserverprojectutils.h"
19 #include "qgsproject.h"
20 
22 {
23  return project.readBoolEntry( QStringLiteral( "WMSServiceCapabilities" ), QStringLiteral( "/" ), false );
24 }
25 
27 {
28  return project.readEntry( QStringLiteral( "WMSServiceTitle" ), QStringLiteral( "/" ) );
29 }
30 
32 {
33  return project.readEntry( QStringLiteral( "WMSServiceAbstract" ), QStringLiteral( "/" ) );
34 }
35 
37 {
38  QStringList keywordList;
39  QStringList list = project.readListEntry( QStringLiteral( "WMSKeywordList" ), QStringLiteral( "/" ), QStringList() );
40  if ( !list.isEmpty() )
41  {
42  for ( int i = 0; i < list.size(); ++i )
43  {
44  QString keyword = list.at( i );
45  if ( !keyword.isEmpty() )
46  {
47  keywordList.append( keyword );
48  }
49  }
50  }
51  return keywordList;
52 }
53 
55 {
56  return project.readEntry( QStringLiteral( "WMSOnlineResource" ), QStringLiteral( "/" ) );
57 }
58 
60 {
61  return project.readEntry( QStringLiteral( "WMSContactOrganization" ), QStringLiteral( "/" ) );
62 }
63 
65 {
66  return project.readEntry( QStringLiteral( "WMSContactPosition" ), QStringLiteral( "/" ) );
67 }
68 
70 {
71  return project.readEntry( QStringLiteral( "WMSContactPerson" ), QStringLiteral( "/" ) );
72 }
73 
75 {
76  return project.readEntry( QStringLiteral( "WMSContactMail" ), QStringLiteral( "/" ) );
77 }
78 
80 {
81  return project.readEntry( QStringLiteral( "WMSContactPhone" ), QStringLiteral( "/" ) );
82 }
83 
85 {
86  return project.readEntry( QStringLiteral( "WMSFees" ), QStringLiteral( "/" ) );
87 }
88 
90 {
91  return project.readEntry( QStringLiteral( "WMSAccessConstraints" ), QStringLiteral( "/" ) );
92 }
93 
95 {
96  return project.readNumEntry( QStringLiteral( "WMSMaxWidth" ), QStringLiteral( "/" ), -1 );
97 }
98 
100 {
101  return project.readNumEntry( QStringLiteral( "WMSMaxHeight" ), QStringLiteral( "/" ), -1 );
102 }
103 
105 {
106  return project.readBoolEntry( QStringLiteral( "WMSUseLayerIDs" ), QStringLiteral( "/" ), false );
107 }
108 
110 {
111  return project.readNumEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), -1 );
112 }
113 
115 {
116  return project.readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 );
117 }
118 
120 {
121  QString sia2045 = project.readEntry( QStringLiteral( "WMSInfoFormatSIA2045" ), QStringLiteral( "/" ), "" );
122 
123  return sia2045.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
124  || sia2045.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
125 }
126 
128 {
129  QString wktGeom = project.readEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ), "" );
130 
131  return wktGeom.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
132  || wktGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
133 }
134 
136 {
137  QString segmGeom = project.readEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), "" );
138 
139  return segmGeom.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
140  || segmGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
141 }
142 
144 {
145  return project.readNumEntry( QStringLiteral( "WMSPrecision" ), QStringLiteral( "/" ), 6 );
146 }
147 
149 {
150  return project.readEntry( QStringLiteral( "WMSFeatureInfoDocumentElement" ), QStringLiteral( "/" ), "" );
151 }
152 
154 {
155  return project.readEntry( QStringLiteral( "WMSFeatureInfoDocumentElementNS" ), QStringLiteral( "/" ), "" );
156 }
157 
159 {
160  return project.readEntry( QStringLiteral( "WMSFeatureInfoSchema" ), QStringLiteral( "/" ), "" );
161 }
162 
163 QHash<QString, QString> QgsServerProjectUtils::wmsFeatureInfoLayerAliasMap( const QgsProject &project )
164 {
165  QHash<QString, QString> aliasMap;
166 
167  //WMSFeatureInfoAliasLayers
168  QStringList aliasLayerStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoAliasLayers" ), QStringLiteral( "/value" ), QStringList() );
169  if ( aliasLayerStringList.isEmpty() )
170  {
171  return aliasMap;
172  }
173 
174  //WMSFeatureInfoLayerAliases
175  QStringList layerAliasStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoLayerAliases" ), QStringLiteral( "/value" ), QStringList() );
176  if ( layerAliasStringList.isEmpty() )
177  {
178  return aliasMap;
179  }
180 
181  int nMapEntries = std::min( aliasLayerStringList.size(), layerAliasStringList.size() );
182  for ( int i = 0; i < nMapEntries; ++i )
183  {
184  aliasMap.insert( aliasLayerStringList.at( i ), layerAliasStringList.at( i ) );
185  }
186 
187  return aliasMap;
188 }
189 
191 {
192  return project.readBoolEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/activated" ) );
193 }
194 
196 {
197  return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/language" ) );
198 }
199 
201 {
202  return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataUrl" ) );
203 }
204 
206 {
207  return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataUrlType" ) );
208 }
209 
211 {
212  return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/temporalReference" ) );
213 }
214 
216 {
217  return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataDate" ) );
218 }
219 
221 {
222  return project.readListEntry( QStringLiteral( "WMSRestrictedComposers" ), QStringLiteral( "/" ), QStringList() );
223 }
224 
226 {
227  QStringList crsList;
228  QStringList wmsCrsList = project.readListEntry( QStringLiteral( "WMSCrsList" ), QStringLiteral( "/" ), QStringList() );
229  if ( !wmsCrsList.isEmpty() )
230  {
231  for ( int i = 0; i < wmsCrsList.size(); ++i )
232  {
233  QString crs = wmsCrsList.at( i );
234  if ( !crs.isEmpty() )
235  {
236  crsList.append( crs );
237  }
238  }
239  }
240  if ( crsList.isEmpty() )
241  {
242  QStringList valueList = project.readListEntry( QStringLiteral( "WMSEpsgList" ), QStringLiteral( "/" ), QStringList() );
243  bool conversionOk;
244  for ( int i = 0; i < valueList.size(); ++i )
245  {
246  int epsgNr = valueList.at( i ).toInt( &conversionOk );
247  if ( conversionOk )
248  {
249  crsList.append( QStringLiteral( "EPSG:%1" ).arg( epsgNr ) );
250  }
251  }
252  }
253  if ( crsList.isEmpty() )
254  {
255  //no CRS restriction defined in the project. Provide project CRS, wgs84 and pseudo mercator
256  QString projectCrsId = project.crs().authid();
257  crsList.append( projectCrsId );
258  if ( projectCrsId.compare( QLatin1String( "EPSG:4326" ), Qt::CaseInsensitive ) != 0 )
259  {
260  crsList.append( QStringLiteral( "EPSG:%1" ).arg( 4326 ) );
261  }
262  if ( projectCrsId.compare( QLatin1String( "EPSG:3857" ), Qt::CaseInsensitive ) != 0 )
263  {
264  crsList.append( QStringLiteral( "EPSG:%1" ).arg( 3857 ) );
265  }
266  }
267  return crsList;
268 }
269 
271 {
272  return project.readEntry( QStringLiteral( "WMSUrl" ), QStringLiteral( "/" ), "" );
273 }
274 
276 {
277  return project.readEntry( QStringLiteral( "WMSRootName" ), QStringLiteral( "/" ), "" );
278 }
279 
281 {
282  return project.readListEntry( QStringLiteral( "WMSRestrictedLayers" ), QStringLiteral( "/" ), QStringList() );
283 }
284 
286 {
287  bool ok = false;
288  QStringList values = project.readListEntry( QStringLiteral( "WMSExtent" ), QStringLiteral( "/" ), QStringList(), &ok );
289  if ( !ok || values.size() != 4 )
290  {
291  return QgsRectangle();
292  }
293  //order of value elements must be xmin, ymin, xmax, ymax
294  double xmin = values[ 0 ].toDouble();
295  double ymin = values[ 1 ].toDouble();
296  double xmax = values[ 2 ].toDouble();
297  double ymax = values[ 3 ].toDouble();
298  return QgsRectangle( xmin, ymin, xmax, ymax );
299 }
300 
302 {
303  return project.readEntry( QStringLiteral( "WFSUrl" ), QStringLiteral( "/" ), "" );
304 }
305 
306 QStringList QgsServerProjectUtils::wfsLayerIds( const QgsProject &project )
307 {
308  return project.readListEntry( QStringLiteral( "WFSLayers" ), QStringLiteral( "/" ) );
309 }
310 
311 int QgsServerProjectUtils::wfsLayerPrecision( const QgsProject &project, const QString &layerId )
312 {
313  return project.readNumEntry( QStringLiteral( "WFSLayersPrecision" ), "/" + layerId, 6 );
314 }
315 
317 {
318  return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Update" ) );
319 }
320 
322 {
323  return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Insert" ) );
324 }
325 
327 {
328  return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Delete" ) );
329 }
330 
332 {
333  return project.readEntry( QStringLiteral( "WCSUrl" ), QStringLiteral( "/" ), "" );
334 }
335 
336 QStringList QgsServerProjectUtils::wcsLayerIds( const QgsProject &project )
337 {
338  return project.readListEntry( QStringLiteral( "WCSLayers" ), QStringLiteral( "/" ) );
339 }
340 
342 {
343  return project.readEntry( QStringLiteral( "WMTSSUrl" ), QStringLiteral( "/" ), "" );
344 }
SERVER_EXPORT QString wmsInspireMetadataUrl(const QgsProject &project)
Returns the Inspire metadata URL.
SERVER_EXPORT QStringList wmsOutputCrsList(const QgsProject &project)
Returns the WMS output CRS list.
A rectangle specified with double values.
Definition: qgsrectangle.h:41
SERVER_EXPORT QStringList wfstUpdateLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published as WFS-T with update capabilities...
SERVER_EXPORT int wmsMaxWidth(const QgsProject &project)
Returns the maximum width for WMS images defined in a QGIS project.
SERVER_EXPORT bool owsServiceCapabilities(const QgsProject &project)
Returns if owsService capabilities are enabled.
SERVER_EXPORT QString wmsServiceUrl(const QgsProject &project)
Returns the WMS service url defined in a QGIS project.
QString readEntry(const QString &scope, const QString &key, const QString &def=QString(), bool *ok=nullptr) const
bool readBoolEntry(const QString &scope, const QString &key, bool def=false, bool *ok=nullptr) const
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.
SERVER_EXPORT QString owsServiceAbstract(const QgsProject &project)
Returns the owsService abstract defined in project.
SERVER_EXPORT QString wmsFeatureInfoDocumentElement(const QgsProject &project)
Returns the document element name for XML GetFeatureInfo request.
SERVER_EXPORT QHash< QString, QString > wmsFeatureInfoLayerAliasMap(const QgsProject &project)
Returns the mapping between layer name and wms layer name for GetFeatureInfo request.
SERVER_EXPORT bool wmsInfoFormatSia2045(const QgsProject &project)
Returns if the info format is SIA20145.
const QgsCoordinateReferenceSystem & crs
SERVER_EXPORT QString wmsInspireMetadataDate(const QgsProject &project)
Returns the Inspire metadata date.
SERVER_EXPORT QString wmtsServiceUrl(const QgsProject &project)
Returns the WMTS service url defined in a QGIS project.
int readNumEntry(const QString &scope, const QString &key, int def=0, bool *ok=nullptr) const
SERVER_EXPORT bool wmsFeatureInfoAddWktGeometry(const QgsProject &project)
Returns if the geometry is displayed as Well Known Text in GetFeatureInfo request.
SERVER_EXPORT int wmsMaxAtlasFeatures(const QgsProject &project)
Returns the maximum number of atlas features which can be printed in a request.
SERVER_EXPORT QString wmsFeatureInfoDocumentElementNs(const QgsProject &project)
Returns the document element namespace for XML GetFeatureInfo request.
SERVER_EXPORT QStringList wfstDeleteLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published as WFS-T with delete capabilities...
SERVER_EXPORT QStringList wmsRestrictedComposers(const QgsProject &project)
Returns the restricted composer list.
QgsCoordinateReferenceSystem crs
Definition: qgsproject.h:95
SERVER_EXPORT QStringList wcsLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published in WCS.
SERVER_EXPORT bool wmsFeatureInfoSegmentizeWktGeometry(const QgsProject &project)
Returns if the geometry has to be segmentize in GetFeatureInfo request.
SERVER_EXPORT bool wmsInspireActivate(const QgsProject &project)
Returns if Inspire is activated.
SERVER_EXPORT QString wmsInspireTemporalReference(const QgsProject &project)
Returns the Inspire temporal reference.
QStringList readListEntry(const QString &scope, const QString &key, const QStringList &def=QStringList(), bool *ok=nullptr) const
Key value accessors.
Reads and writes project states.
Definition: qgsproject.h:89
SERVER_EXPORT QString wmsInspireLanguage(const QgsProject &project)
Returns the Inspire language.
SERVER_EXPORT QString owsServiceFees(const QgsProject &project)
Returns the owsService fees defined in project.
SERVER_EXPORT QString owsServiceAccessConstraints(const QgsProject &project)
Returns the owsService access constraints defined in project.
SERVER_EXPORT int wfsLayerPrecision(const QgsProject &project, const QString &layerId)
Returns the Layer precision defined in a QGIS project for the WFS GetFeature.
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.
SERVER_EXPORT QString wcsServiceUrl(const QgsProject &project)
Returns the WCS service url defined in a QGIS project.
SERVER_EXPORT int wmsFeatureInfoPrecision(const QgsProject &project)
Returns the geometry precision for GetFeatureInfo request.
SERVER_EXPORT QgsRectangle wmsExtent(const QgsProject &project)
Returns the WMS Extent restriction.
SERVER_EXPORT QStringList wfsLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published in WFS.
SERVER_EXPORT QString wmsInspireMetadataUrlType(const QgsProject &project)
Returns the Inspire metadata URL type.
SERVER_EXPORT QStringList wfstInsertLayerIds(const QgsProject &project)
Returns the Layer ids list defined in a QGIS project as published as WFS-T with insert capabilities...
SERVER_EXPORT QString owsServiceContactMail(const QgsProject &project)
Returns the owsService contact mail defined in project.
SERVER_EXPORT QString wmsFeatureInfoSchema(const QgsProject &project)
Returns the schema URL for XML GetFeatureInfo request.
SERVER_EXPORT QStringList wmsRestrictedLayers(const QgsProject &project)
Returns the restricted layer name list.
SERVER_EXPORT QString wmsRootName(const QgsProject &project)
Returns the WMS root layer name defined in a QGIS project.
SERVER_EXPORT QString wfsServiceUrl(const QgsProject &project)
Returns the WFS service url defined in a QGIS project.
QString authid() const
Returns the authority identifier for the CRS.
SERVER_EXPORT QString owsServiceTitle(const QgsProject &project)
Returns the owsService title defined in project.
SERVER_EXPORT int wmsImageQuality(const QgsProject &project)
Returns the quality for WMS images defined in a QGIS project.
SERVER_EXPORT QString owsServiceContactPhone(const QgsProject &project)
Returns the owsService contact phone defined in project.
SERVER_EXPORT int wmsMaxHeight(const QgsProject &project)
Returns the maximum height for WMS images defined in a QGIS project.
SERVER_EXPORT bool wmsUseLayerIds(const QgsProject &project)
Returns if layer ids are used as name in WMS.