From 2e7bf12ee181219b1be96e8b382b1609c2287725 Mon Sep 17 00:00:00 2001 From: Marco Hugentobler Date: Sat, 5 Jan 2019 13:26:38 +0100 Subject: [PATCH] Possibility to restrict number of atlas features (default: 1) --- .../qgsserverprojectutils.sip.in | 2 + src/app/qgsprojectproperties.cpp | 5 + src/server/qgsserverprojectutils.cpp | 5 + src/server/qgsserverprojectutils.h | 2 + src/server/services/wms/qgswmsrenderer.cpp | 5 + src/ui/qgsprojectpropertiesbase.ui | 432 +++++++++--------- 6 files changed, 244 insertions(+), 207 deletions(-) diff --git a/python/server/auto_generated/qgsserverprojectutils.sip.in b/python/server/auto_generated/qgsserverprojectutils.sip.in index 4a811f2bdf9..be242ec89d1 100644 --- a/python/server/auto_generated/qgsserverprojectutils.sip.in +++ b/python/server/auto_generated/qgsserverprojectutils.sip.in @@ -154,6 +154,8 @@ Returns the quality for WMS images defined in a QGIS project. :return: quality if defined in project, -1 otherwise. %End + int wmsMaxAtlasFeatures( const QgsProject &project ); + bool wmsUseLayerIds( const QgsProject &project ); %Docstring Returns if layer ids are used as name in WMS. diff --git a/src/app/qgsprojectproperties.cpp b/src/app/qgsprojectproperties.cpp index 922b3b48ffc..6a6611886a8 100644 --- a/src/app/qgsprojectproperties.cpp +++ b/src/app/qgsprojectproperties.cpp @@ -637,6 +637,8 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa mWMSImageQualitySpinBox->setValue( imageQuality ); } + mWMSMaxAtlasFeaturesSpinBox->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 ) ); + mWMTSUrlLineEdit->setText( QgsProject::instance()->readEntry( QStringLiteral( "WMTSUrl" ), QStringLiteral( "/" ), QString() ) ); mWMTSMinScaleLineEdit->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMTSMinScale" ), QStringLiteral( "/" ), 5000 ) ); @@ -1260,6 +1262,9 @@ void QgsProjectProperties::apply() QgsProject::instance()->writeEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), imageQualityValue ); } + int maxAtlasFeatures = mWMSMaxAtlasFeaturesSpinBox->value(); + QgsProject::instance()->writeEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), maxAtlasFeatures ); + QgsProject::instance()->writeEntry( QStringLiteral( "WMTSUrl" ), QStringLiteral( "/" ), mWMTSUrlLineEdit->text() ); QgsProject::instance()->writeEntry( QStringLiteral( "WMTSMinScale" ), QStringLiteral( "/" ), mWMTSMinScaleLineEdit->value() ); bool wmtsProject = false; diff --git a/src/server/qgsserverprojectutils.cpp b/src/server/qgsserverprojectutils.cpp index a8c332cd20b..b816c716a79 100644 --- a/src/server/qgsserverprojectutils.cpp +++ b/src/server/qgsserverprojectutils.cpp @@ -111,6 +111,11 @@ 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( "/" ), "" ); diff --git a/src/server/qgsserverprojectutils.h b/src/server/qgsserverprojectutils.h index 001b2cd3074..8b5d7f2c25c 100644 --- a/src/server/qgsserverprojectutils.h +++ b/src/server/qgsserverprojectutils.h @@ -147,6 +147,8 @@ namespace QgsServerProjectUtils */ SERVER_EXPORT int wmsImageQuality( const QgsProject &project ); + SERVER_EXPORT int wmsMaxAtlasFeatures( const QgsProject &project ); + /** * Returns if layer ids are used as name in WMS. * \param project the QGIS project diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index 38b5cf06a06..878a6e3890a 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -415,8 +415,13 @@ namespace QgsWms QStringLiteral( "Wrong number of ATLAS_PK parameters" ) ); } + //number of atlas features might be restricted + int maxAtlasFeatures = QgsServerProjectUtils::wmsMaxAtlasFeatures( *mProject ); + nAtlasFeatures = std::min( nAtlasFeatures, maxAtlasFeatures ); + QString filterString; int currentAtlasPk = 0; + for ( int i = 0; i < nAtlasFeatures; ++i ) { if ( i > 0 ) diff --git a/src/ui/qgsprojectpropertiesbase.ui b/src/ui/qgsprojectpropertiesbase.ui index 87442aff998..f5fae1b3c62 100644 --- a/src/ui/qgsprojectpropertiesbase.ui +++ b/src/ui/qgsprojectpropertiesbase.ui @@ -294,7 +294,7 @@ - Project home + &Project home titleEdit @@ -310,7 +310,7 @@ - Save paths + Sa&ve paths cbxAbsolutePath @@ -394,7 +394,7 @@ - Project file + Pro&ject file titleEdit @@ -454,7 +454,7 @@ - Background color + Back&ground color pbnCanvasColor @@ -645,7 +645,7 @@ Automatically sets the number of decimal places to use when displaying coordinates - Automatic + A&utomatic true @@ -1528,7 +1528,7 @@ - Python Macros + &Python Macros true @@ -1638,7 +1638,7 @@ - Person + &Person mWMSContactPerson @@ -1755,7 +1755,7 @@ - Organization + Or&ganization mWMSContactOrganization @@ -1845,10 +1845,10 @@ projowsserver - + - Advertised extent + Ad&vertised extent true @@ -1866,7 +1866,7 @@ - Min. X + Min. &X mWMSExtMinX @@ -1883,7 +1883,7 @@ - Min. Y + Min. &Y mWMSExtMinY @@ -1954,10 +1954,66 @@ - + + + + CRS restrictions + + + true + + + false + + + false + + + true + + + + + + Add new CRS + + + + :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg + + + + + + + + + + Fetch all CRS's from layers + + + Used + + + + + + + Remove selected CRS + + + + :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg + + + + + + + - Exclude layouts + Excl&ude layouts true @@ -2019,7 +2075,7 @@ - + Exclude layers @@ -2084,189 +2140,7 @@ - - - - CRS restrictions - - - true - - - false - - - false - - - true - - - - - - Add new CRS - - - - :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg - - - - - - - - - - Fetch all CRS's from layers - - - Used - - - - - - - Remove selected CRS - - - - :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg - - - - - - - - - - Use layer ids as names - - - - - - - - - Quality for JPEG images ( 10 : smaller image - 100 : best quality ) - - - - - - - 10 - - - 100 - - - 5 - - - 90 - - - - - - - - - Add geometry to feature response - - - - - - - - - Width - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 6 - 20 - - - - - - - - - - - - - - Height - - - - - - - Maximums for GetMap request - - - - - - - - - - - GetFeatureInfo geometry precision (decimal places) - - - - - - - 1 - - - 17 - - - 8 - - - - - - - - - - - Advertised URL - - - - - - - - - + INSPIRE (European directive) @@ -2298,7 +2172,7 @@ - Scenario 2 - INSPIRE related fields using embedded service metadata + Scenario &2 - INSPIRE related fields using embedded service metadata true @@ -2347,7 +2221,7 @@ - Scenario 1 - INSPIRE related fields using referenced external service metadata + Scenario &1 - INSPIRE related fields using referenced external service metadata true @@ -2398,19 +2272,163 @@ - + + + + Use layer ids as names + + + + + + + Add geometry to feature response + + + + + + + Allow defining datasources in server requests + + + + Segmentize feature info geometry - - - - Allow defining datasources in server requests - - + + + + + + GetFeatureInfo geometry precision (decimal places) + + + + + + + 1 + + + 17 + + + 8 + + + + + + + + + + + Advertised URL + + + + + + + + + + + + + + Width + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 6 + 20 + + + + + + + + + + + + + + Height + + + + + + + Maximums for GetMap request + + + + + + + + + + + Quality for JPEG images ( 10 : smaller image - 100 : best quality ) + + + + + + + 10 + + + 100 + + + 5 + + + 90 + + + + + + + + + + + Maximum features for Atlas print requests + + + + + + + 1 + + + +