[Qgis-user] data defined style with $scale

Andreas Neumann a.neumann at carto.net
Tue Nov 19 05:14:39 PST 2013


Hi,

If a line-width with "0" is rendered than it is a rendering issue and 
not a logical issue.

The CASE WHEN ELSE END statement always returns a value. That's what I 
meant that it seems logical to me.

I don't think that QGIS does suppress the rendering of lines with zero 
width. It just passes it on to the render with a line-width value of 
zero. If the renderer still draws the line it is a bug in the renderer.

Of course could check if the line-width is zero and suppress the line. 
But I don't know much about the renderer internals to know how QGIS is 
handling it.

Andreas

Am 2013-11-19 13:16, schrieb Ziegler Stefan:
> Hi Andreas
> 
> for me it seems unlogical. The CASE-WHEN-ELSE statement is returning
> zero for scales larger than 1000. So I don't see any reason why QGIS
> draws a line with an unpredictable line-width.
> 
> I do not have access at the very moment to QGIS. But what happens when
> you just enter 0.0 as data defined line-width?
> 
> regards
> Stefan
> 
> Von meinem iPad gesendet
> 
>> Am 19.11.2013 um 11:59 schrieb "Andreas Neumann" 
>> <a.neumann at carto.net>:
>> 
>> Hi Stefan,
>> 
>> This seems logical to me. The data-defined styling only changes a 
>> graphical property. It does not control whether a feature is drawn or 
>> not. You could set it to fully transparent, but this would still fetch 
>> features and draw them (though invisible).
>> 
>> If you want to suprress features above a certain level you may do that 
>> on the layer level in the "General settings" (or something similar).
>> 
>> The labels individually allow to suppress labels based on a column or 
>> expression, but the data-defined symbology does not allow that so far. 
>> It would be a new feature to ask for.
>> 
>> Andreas
>> 
>> Am 2013-11-19 07:50, schrieb Ziegler Stefan:
>>> Hi
>>> I have a question regarding data defined styling. I'm using the 
>>> $scale
>>> parameter to define the line width:
>>> CASE
>>> WHEN $scale <= 500.0 THEN 1
>>> WHEN ($scale > 500 AND $scale <= 1000) THEN 0.5
>>> END
>>> I would expect that the line is not drawn with a scale larger than
>>> 1000. But it seems the line is still drawn. It even draws the line
>>> with an ELSE-statement:
>>> CASE
>>> WHEN $scale <= 500.0 THEN 1
>>> WHEN ($scale > 500 AND $scale <= 1000) THEN 0.5
>>> ELSE 0.0
>>> END
>>> It seems that I get my expected result when I use an ELSE value near
>>> zero (e.g. 0.0000001).
>>> Is this on purpose? Or is there an error in my statement?
>>> regards
>>> Stefan
>>> Freundliche Grüsse
>>> Stefan Ziegler
>>> Kantonsgeometer
>>> Amt für Geoinformation
>>> Amtliche Vermessung
>>> Rötistrasse 4
>>> 4500 Solothurn
>>> Telefon +41 32 627 75 96
>>> Telefax +41 32 627 75 98
>>> stefan.ziegler at bd.so.ch
>>> http://www.so.ch
>>> _______________________________________________
>>> Qgis-user mailing list
>>> Qgis-user at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/qgis-user
>> _______________________________________________
>> Qgis-user mailing list
>> Qgis-user at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-user



More information about the Qgis-user mailing list