[QGIS-Developer] Problems with adopting scaled representation from QGIS

Otto Dassau dassau at gbd-consult.de
Tue Mar 16 22:46:37 PDT 2021


Dear Developers,

i would like to describe a problem using QGIS WMS with defined scale visibility for layers. We already spent quite some time on it and for us it seems to be a wrong scale calculation in QGIS. But since we are not sure we would like to ask, if someone, deeper in the code, can have a look and, if it is the case, can provide a (payed) fix.

To better describe the problem we provide a sample web project under https://gws-dev.gbd-consult.de/project/scales_qgis/@753753,6661615,100000

The "Bank" layer has a scale-dependent representation defined in QGIS between 100000 - 80000, but is not rendered by QGIS at the scale 100000.

QGIS server is called with these parameters:

http://localhost:4000?
layers=Bank%20100000-80000
&map=%2Fdata%2Fshared%2Fpoi_scaled.qgs
&transparent=True
&bbox=748163.2561805135,6646683.920240255,767707.2561805135,6679247.920240255
&width=698
&height=1163
&srs=EPSG%3A3857
&format=image%2Fpng
&request=GetMap
&version=1.1.1
&service=WMS
&styles=

The resolution (meter per pixel) results from bbox and width

(767707.2561805135 - 748163.2561805135) / 698 = 28

According to OGC specifications, 1px = 0.28 mm x 0.28 mm, i.e. the scale here must be exactly 100000. But QGIS calculates it differently (excerpt from the debug log): 

src/core/geometry/qgsrectangle.cpp:152 : (toString) [0ms] Extents : 748163.2561805135337636,6646683.9202402550727129 : 767707.2561805135337636,6679247.9202402550727129
src/core/qgsmapsettings.cpp:222 : (updateDerived) [0ms] 748163.2561805135337636,6646683.9202402550727129 : 767707.2561805135337636,6679247.9202402550727129
src/core/qgsmapsettings.cpp:223 : (updateDerived) [1ms] Adjusted map units per pixel (x,y) : 28, 28
src/core/qgsmapsettings.cpp:224 : (updateDerived) [0ms] Recalced pixmap dimensions (x,y) : 698, 1163
src/core/qgsmapsettings.cpp:225 : (updateDerived) [0ms] Scale (assuming meters as map units) = 1:100314.96052759999292903

The scale (with the same bbox / width) is calculated as "1: 100314", and because that is greater than 100,000, the layer is not rendered by QGIS. 

We assume that there is a rounding error somewhere. As said we would be happy if a QGIS dev could have a look. The project file and data are in https://gitlab.gbd-consult.de/gws/gws-dev/tree/master/data/shared (poi_scaled.qgs and poi / subfolder).

Thanks a lot!
Otto

-- 
Geoinformatikbüro Dassau GmbH 
Rethelstrasse 153
D - 40237 Düsseldorf
Tel: +49-211-69937750
Mobil:  +49-171-4687540
https://www.gbd-consult.de

Registergericht: Amtsgericht Düsseldorf, HR B 74022
Geschäftsführer: Otto Dassau


More information about the QGIS-Developer mailing list