Skip to content

Commit a9d61ff

Browse files
authored
Merge pull request #6285 from tudorbarascu/dpi
fix server issue for double devicePixelRatio leading to DPI requests with decimals
2 parents 6096e5c + fbc6e4d commit a9d61ff

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

src/server/services/wms/qgswmsparameters.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -685,9 +685,9 @@ namespace QgsWms
685685
return value( ParameterName::DPI ).toString();
686686
}
687687

688-
int QgsWmsParameters::dpiAsInt() const
688+
double QgsWmsParameters::dpiAsDouble() const
689689
{
690-
return toInt( ParameterName::DPI );
690+
return toDouble( ParameterName::DPI );
691691
}
692692

693693
QString QgsWmsParameters::version() const

src/server/services/wms/qgswmsparameters.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -892,7 +892,7 @@ namespace QgsWms
892892
* \returns dpi parameter
893893
* \throws QgsBadRequestException
894894
*/
895-
int dpiAsInt() const;
895+
double dpiAsDouble() const;
896896

897897
/**
898898
* Returns TEMPLATE parameter or an empty string if not defined.

src/server/services/wms/qgswmsrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ namespace QgsWms
10461046
double OGC_PX_M = 0.00028; // OGC reference pixel size in meter, also used by qgis
10471047
int dpm = 1 / OGC_PX_M;
10481048
if ( !mWmsParameters.dpi().isEmpty() )
1049-
dpm = mWmsParameters.dpiAsInt() / 0.0254;
1049+
dpm = mWmsParameters.dpiAsDouble() / 0.0254;
10501050

10511051
image->setDotsPerMeterX( dpm );
10521052
image->setDotsPerMeterY( dpm );

tests/src/python/test_qgsserver_wms_getmap.py

+19
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,25 @@ def test_wms_getmap_basic(self):
184184
r, h = self._result(self._execute_request(qs))
185185
self._img_diff_error(r, h, "WMS_GetMap_Basic4")
186186

187+
def test_wms_getmap_dpi(self):
188+
qs = "?" + "&".join(["%s=%s" % i for i in list({
189+
"MAP": urllib.parse.quote(self.projectPath),
190+
"SERVICE": "WMS",
191+
"VERSION": "1.1.1",
192+
"REQUEST": "GetMap",
193+
"LAYERS": "Country",
194+
"STYLES": "",
195+
"FORMAT": "image/png",
196+
"BBOX": "-16817707,-4710778,5696513,14587125",
197+
"HEIGHT": "500",
198+
"WIDTH": "500",
199+
"CRS": "EPSG:3857",
200+
"DPI": "112.5"
201+
}.items())])
202+
203+
r, h = self._result(self._execute_request(qs))
204+
self._img_diff_error(r, h, "WMS_GetMap_Basic5")
205+
187206
def test_wms_getmap_invalid_parameters(self):
188207
# height should be an int
189208
qs = "?" + "&".join(["%s=%s" % i for i in list({
Loading

0 commit comments

Comments
 (0)