[Qgis-developer] symbol levels ignored with rule based rendering

Mayeul Kauffmann mayeul.kauffmann at free.fr
Sun Nov 7 09:42:30 EST 2010


Dear list members,

A few tickets related to rule based rendering were closed recently, but
one still needs some thinking: 'symbol levels ignored for rule based
rendering'
I opened it here 6 weeks ago:
http://trac.osgeo.org/qgis/ticket/3039
mhugent said it was addressed in patch #2832
Patch  #2832 was partially applied by wonder, see:
http://trac.osgeo.org/qgis/ticket/2832

Wonder wrote rightfully: "I've kept back the part regarding the symbol
levels. The renderer should be able to apply multiple symbols if there
are more valid rules. We need to give it some more thoughts on how to
deal with the symbol levels."

I've posted the following as an answer to wonder's message, but maybe
it's easier to discuss it here (or should I reopen ticket 3039?):


"Thank you wonder for putting it in the trunk! Here are some thoughts
about how to deal with the symbol levels. IMHO, here are many examples
where symbol levels are needed (and with the only workaround of having
tens of layers). I cannot think of many examples where using several
symbols (hence many matched rules) is absolutely required; even less
examples where multiple matched rules AND symbol levels together are
required ; for those examples (for instance: rule A and B), if we use
the full patch rule_based_renderer.diff, there is the easy workaround of
creating one rule C with (C <=> (A and B)) and putting it before A and
B. Anyway, thinking of how to deal with combining symbol levels and
multiple-matched rules will be easier if we can test rule based
rendering with symbol levels. I am precisely working on this. I have
just made my own build (based on 14481) by completely the patch in
r14404 (including symbol levels). The first obvious needed feature would
be to reorder the rules (change the priority order). Then, next to the
"use symbol levels" check box, a warning should say that if symbol
levels are activated, only the first matched rule will be applied. Then
qgsrulebasedrendererv2.cpp should be modified to return "mCurrentSymbol"
if symbol levels are not activated, and only the first matching rule if
they are. Finally, symbol levels are saved in memory when closing the
dialog box, but they are not saved to the file yet and this would need
to be fixed. I'm working on rendering openstreetmap data in a customized
way with filters based directly on the full-length OSM tags (but I
cannot save my changes because of the above).

Should we have the changes suggested here, users will be able to choose
between multiple matched rules and symbol levels. We will then have use
cases to think about where to go next. What do you think?"

Thanks for your thoughts!
Best regards,
Mayeul






More information about the Qgis-developer mailing list