mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-31 00:03:42 -04:00
345 lines
12 KiB
C++
345 lines
12 KiB
C++
/***************************************************************************
|
|
qgsserverprojectutils.cpp
|
|
-------------------------
|
|
begin : December 19, 2016
|
|
copyright : (C) 2016 by Paul Blottiere
|
|
email : paul dot blottiere at oslandia dot com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "qgsserverprojectutils.h"
|
|
#include "qgsproject.h"
|
|
|
|
bool QgsServerProjectUtils::owsServiceCapabilities( const QgsProject &project )
|
|
{
|
|
return project.readBoolEntry( QStringLiteral( "WMSServiceCapabilities" ), QStringLiteral( "/" ), false );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceTitle( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSServiceTitle" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceAbstract( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSServiceAbstract" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::owsServiceKeywords( const QgsProject &project )
|
|
{
|
|
QStringList keywordList;
|
|
QStringList list = project.readListEntry( QStringLiteral( "WMSKeywordList" ), QStringLiteral( "/" ), QStringList() );
|
|
if ( !list.isEmpty() )
|
|
{
|
|
for ( int i = 0; i < list.size(); ++i )
|
|
{
|
|
QString keyword = list.at( i );
|
|
if ( !keyword.isEmpty() )
|
|
{
|
|
keywordList.append( keyword );
|
|
}
|
|
}
|
|
}
|
|
return keywordList;
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceOnlineResource( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSOnlineResource" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceContactOrganization( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSContactOrganization" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceContactPosition( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSContactPosition" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceContactPerson( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSContactPerson" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceContactMail( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSContactMail" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceContactPhone( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSContactPhone" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceFees( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSFees" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::owsServiceAccessConstraints( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSAccessConstraints" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
int QgsServerProjectUtils::wmsMaxWidth( const QgsProject &project )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WMSMaxWidth" ), QStringLiteral( "/" ), -1 );
|
|
}
|
|
|
|
int QgsServerProjectUtils::wmsMaxHeight( const QgsProject &project )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WMSMaxHeight" ), QStringLiteral( "/" ), -1 );
|
|
}
|
|
|
|
bool QgsServerProjectUtils::wmsUseLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readBoolEntry( QStringLiteral( "WMSUseLayerIDs" ), QStringLiteral( "/" ), false );
|
|
}
|
|
|
|
int QgsServerProjectUtils::wmsImageQuality( const QgsProject &project )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), -1 );
|
|
}
|
|
|
|
int QgsServerProjectUtils::wmsMaxAtlasFeatures( const QgsProject &project )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 );
|
|
}
|
|
|
|
bool QgsServerProjectUtils::wmsInfoFormatSia2045( const QgsProject &project )
|
|
{
|
|
QString sia2045 = project.readEntry( QStringLiteral( "WMSInfoFormatSIA2045" ), QStringLiteral( "/" ), "" );
|
|
|
|
return sia2045.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
|
|
|| sia2045.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
|
|
}
|
|
|
|
bool QgsServerProjectUtils::wmsFeatureInfoAddWktGeometry( const QgsProject &project )
|
|
{
|
|
QString wktGeom = project.readEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ), "" );
|
|
|
|
return wktGeom.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
|
|
|| wktGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
|
|
}
|
|
|
|
bool QgsServerProjectUtils::wmsFeatureInfoSegmentizeWktGeometry( const QgsProject &project )
|
|
{
|
|
QString segmGeom = project.readEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), "" );
|
|
|
|
return segmGeom.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
|
|
|| segmGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
|
|
}
|
|
|
|
int QgsServerProjectUtils::wmsFeatureInfoPrecision( const QgsProject &project )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WMSPrecision" ), QStringLiteral( "/" ), 6 );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsFeatureInfoDocumentElement( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSFeatureInfoDocumentElement" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsFeatureInfoDocumentElementNs( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSFeatureInfoDocumentElementNS" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsFeatureInfoSchema( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSFeatureInfoSchema" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QHash<QString, QString> QgsServerProjectUtils::wmsFeatureInfoLayerAliasMap( const QgsProject &project )
|
|
{
|
|
QHash<QString, QString> aliasMap;
|
|
|
|
//WMSFeatureInfoAliasLayers
|
|
QStringList aliasLayerStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoAliasLayers" ), QStringLiteral( "/value" ), QStringList() );
|
|
if ( aliasLayerStringList.isEmpty() )
|
|
{
|
|
return aliasMap;
|
|
}
|
|
|
|
//WMSFeatureInfoLayerAliases
|
|
QStringList layerAliasStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoLayerAliases" ), QStringLiteral( "/value" ), QStringList() );
|
|
if ( layerAliasStringList.isEmpty() )
|
|
{
|
|
return aliasMap;
|
|
}
|
|
|
|
int nMapEntries = std::min( aliasLayerStringList.size(), layerAliasStringList.size() );
|
|
for ( int i = 0; i < nMapEntries; ++i )
|
|
{
|
|
aliasMap.insert( aliasLayerStringList.at( i ), layerAliasStringList.at( i ) );
|
|
}
|
|
|
|
return aliasMap;
|
|
}
|
|
|
|
bool QgsServerProjectUtils::wmsInspireActivate( const QgsProject &project )
|
|
{
|
|
return project.readBoolEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/activated" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsInspireLanguage( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/language" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsInspireMetadataUrl( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataUrl" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsInspireMetadataUrlType( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataUrlType" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsInspireTemporalReference( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/temporalReference" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsInspireMetadataDate( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSInspire" ), QStringLiteral( "/metadataDate" ) );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wmsRestrictedComposers( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WMSRestrictedComposers" ), QStringLiteral( "/" ), QStringList() );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wmsOutputCrsList( const QgsProject &project )
|
|
{
|
|
QStringList crsList;
|
|
QStringList wmsCrsList = project.readListEntry( QStringLiteral( "WMSCrsList" ), QStringLiteral( "/" ), QStringList() );
|
|
if ( !wmsCrsList.isEmpty() )
|
|
{
|
|
for ( int i = 0; i < wmsCrsList.size(); ++i )
|
|
{
|
|
QString crs = wmsCrsList.at( i );
|
|
if ( !crs.isEmpty() )
|
|
{
|
|
crsList.append( crs );
|
|
}
|
|
}
|
|
}
|
|
if ( crsList.isEmpty() )
|
|
{
|
|
QStringList valueList = project.readListEntry( QStringLiteral( "WMSEpsgList" ), QStringLiteral( "/" ), QStringList() );
|
|
bool conversionOk;
|
|
for ( int i = 0; i < valueList.size(); ++i )
|
|
{
|
|
int epsgNr = valueList.at( i ).toInt( &conversionOk );
|
|
if ( conversionOk )
|
|
{
|
|
crsList.append( QStringLiteral( "EPSG:%1" ).arg( epsgNr ) );
|
|
}
|
|
}
|
|
}
|
|
if ( crsList.isEmpty() )
|
|
{
|
|
//no CRS restriction defined in the project. Provide project CRS, wgs84 and pseudo mercator
|
|
QString projectCrsId = project.crs().authid();
|
|
crsList.append( projectCrsId );
|
|
if ( projectCrsId.compare( QLatin1String( "EPSG:4326" ), Qt::CaseInsensitive ) != 0 )
|
|
{
|
|
crsList.append( QStringLiteral( "EPSG:%1" ).arg( 4326 ) );
|
|
}
|
|
if ( projectCrsId.compare( QLatin1String( "EPSG:3857" ), Qt::CaseInsensitive ) != 0 )
|
|
{
|
|
crsList.append( QStringLiteral( "EPSG:%1" ).arg( 3857 ) );
|
|
}
|
|
}
|
|
return crsList;
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsServiceUrl( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSUrl" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmsRootName( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMSRootName" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wmsRestrictedLayers( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WMSRestrictedLayers" ), QStringLiteral( "/" ), QStringList() );
|
|
}
|
|
|
|
QgsRectangle QgsServerProjectUtils::wmsExtent( const QgsProject &project )
|
|
{
|
|
bool ok = false;
|
|
QStringList values = project.readListEntry( QStringLiteral( "WMSExtent" ), QStringLiteral( "/" ), QStringList(), &ok );
|
|
if ( !ok || values.size() != 4 )
|
|
{
|
|
return QgsRectangle();
|
|
}
|
|
//order of value elements must be xmin, ymin, xmax, ymax
|
|
double xmin = values[ 0 ].toDouble();
|
|
double ymin = values[ 1 ].toDouble();
|
|
double xmax = values[ 2 ].toDouble();
|
|
double ymax = values[ 3 ].toDouble();
|
|
return QgsRectangle( xmin, ymin, xmax, ymax );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wfsServiceUrl( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WFSUrl" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wfsLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WFSLayers" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
int QgsServerProjectUtils::wfsLayerPrecision( const QgsProject &project, const QString &layerId )
|
|
{
|
|
return project.readNumEntry( QStringLiteral( "WFSLayersPrecision" ), "/" + layerId, 6 );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wfstUpdateLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Update" ) );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wfstInsertLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Insert" ) );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wfstDeleteLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Delete" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wcsServiceUrl( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WCSUrl" ), QStringLiteral( "/" ), "" );
|
|
}
|
|
|
|
QStringList QgsServerProjectUtils::wcsLayerIds( const QgsProject &project )
|
|
{
|
|
return project.readListEntry( QStringLiteral( "WCSLayers" ), QStringLiteral( "/" ) );
|
|
}
|
|
|
|
QString QgsServerProjectUtils::wmtsServiceUrl( const QgsProject &project )
|
|
{
|
|
return project.readEntry( QStringLiteral( "WMTSSUrl" ), QStringLiteral( "/" ), "" );
|
|
}
|