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
+
+
+
+