mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-26 00:08:20 -04:00
Move creation of datasource uri for external wms layers to QgsWMSParameters
This commit is contained in:
parent
288d2eed29
commit
c99388804a
src/server/services/wms
@ -16,6 +16,7 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "qgswmsparameters.h"
|
#include "qgswmsparameters.h"
|
||||||
|
#include "qgsdatasourceuri.h"
|
||||||
#include "qgsmessagelog.h"
|
#include "qgsmessagelog.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -512,6 +513,16 @@ namespace QgsWms
|
|||||||
raiseError( name );
|
raiseError( name );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else //maybe an external wms parameter?
|
||||||
|
{
|
||||||
|
int separator = key.indexOf( ":" );
|
||||||
|
if ( separator >= 1 )
|
||||||
|
{
|
||||||
|
QString id = key.left( separator );
|
||||||
|
QString param = key.right( key.length() - separator - 1 );
|
||||||
|
mExternalWMSParameters[id].insert( param, parameters[key] );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1874,6 +1885,23 @@ namespace QgsWms
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsWmsParameters::externalWMSUri( const QString &id ) const
|
||||||
|
{
|
||||||
|
if ( !mExternalWMSParameters.contains( id ) )
|
||||||
|
{
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QgsDataSourceUri wmsUri;
|
||||||
|
const QMap<QString, QString> ¶mMap = mExternalWMSParameters[ id ];
|
||||||
|
QMap<QString, QString>::const_iterator paramIt = paramMap.constBegin();
|
||||||
|
for ( ; paramIt != paramMap.constEnd(); ++paramIt )
|
||||||
|
{
|
||||||
|
wmsUri.setParam( paramIt.key().toLower(), paramIt.value() );
|
||||||
|
}
|
||||||
|
return wmsUri.encodedUri();
|
||||||
|
}
|
||||||
|
|
||||||
QString QgsWmsParameters::name( ParameterName name ) const
|
QString QgsWmsParameters::name( ParameterName name ) const
|
||||||
{
|
{
|
||||||
const QMetaEnum metaEnum( QMetaEnum::fromType<ParameterName>() );
|
const QMetaEnum metaEnum( QMetaEnum::fromType<ParameterName>() );
|
||||||
|
@ -909,6 +909,13 @@ namespace QgsWms
|
|||||||
*/
|
*/
|
||||||
QgsWmsParametersComposerMap composerMapParameters( int mapId ) const;
|
QgsWmsParametersComposerMap composerMapParameters( int mapId ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief externalWMSUri
|
||||||
|
* @param id the id of the external wms
|
||||||
|
* @return uri string or an empty string if the external wms id does not exist
|
||||||
|
*/
|
||||||
|
QString externalWMSUri( const QString &id ) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString name( ParameterName name ) const;
|
QString name( ParameterName name ) const;
|
||||||
void raiseError( ParameterName name ) const;
|
void raiseError( ParameterName name ) const;
|
||||||
@ -955,6 +962,7 @@ namespace QgsWms
|
|||||||
QgsServerRequest::Parameters mRequestParameters;
|
QgsServerRequest::Parameters mRequestParameters;
|
||||||
QMap<ParameterName, Parameter> mParameters;
|
QMap<ParameterName, Parameter> mParameters;
|
||||||
QMap<int, QMap<ParameterName, Parameter>> mComposerParameters;
|
QMap<int, QMap<ParameterName, Parameter>> mComposerParameters;
|
||||||
|
QMap<QString, QMap<QString, QString> > mExternalWMSParameters;
|
||||||
QList<QgsProjectVersion> mVersions;
|
QList<QgsProjectVersion> mVersions;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2653,24 +2653,8 @@ namespace QgsWms
|
|||||||
|
|
||||||
QgsMapLayer *QgsRenderer::createExternalWMSLayer( const QString &externalLayerId ) const
|
QgsMapLayer *QgsRenderer::createExternalWMSLayer( const QString &externalLayerId ) const
|
||||||
{
|
{
|
||||||
QgsMapLayer *wmsLayer = 0;
|
QString wmsUri = mWmsParameters.externalWMSUri( externalLayerId.toUpper() );
|
||||||
QgsDataSourceUri wmsUri;
|
QgsMapLayer *wmsLayer = new QgsRasterLayer( wmsUri, externalLayerId, QStringLiteral( "wms" ) );
|
||||||
|
|
||||||
QgsServerRequest::Parameters::const_iterator it = mParameters.lowerBound( externalLayerId.toUpper() + ":" );
|
|
||||||
while ( it != mParameters.constEnd() )
|
|
||||||
{
|
|
||||||
if ( !it.key().startsWith( externalLayerId.toUpper() + ":" ) )
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString paramKey = it.key();
|
|
||||||
paramKey.remove( 0, externalLayerId.size() + 1 );
|
|
||||||
wmsUri.setParam( paramKey.toLower(), it.value() );
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
|
|
||||||
wmsLayer = new QgsRasterLayer( wmsUri.encodedUri(), externalLayerId, QStringLiteral( "wms" ) );
|
|
||||||
if ( !wmsLayer->isValid() )
|
if ( !wmsLayer->isValid() )
|
||||||
{
|
{
|
||||||
delete wmsLayer;
|
delete wmsLayer;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user