To control rendering orders of symbols, you could use the "symbol levels"-feature to give every geometry a own Z-dimension. If you want it dynamically because of complex situation like bridges over bridges you need more control. The "feature rendering order" enables you to give every feature a own Z-dimension using a field or expression. So far so good, but what if I use more then one symbol level per symbol like streets with borders? The screenshot below shows the situation:

enter image description here

The order of the "main-symbol" (color of the road) is correct, but the borders are all on the same level. That is not the expected result. How could I solve that without using the static "symbol level"-feature?

Added: Because I sometimes have to work on several scales in one project, my symbols and symbol-levels become confusing: enter image description here

  • Do you need to have two different layer order for your symbols. If the symbol is the black line with the colour line above it as one it will go above it as a whole. Or if you do need to define symbol levels couldn't you insert the same value for layer 0 and layer 1?
    – B-C B.
    Nov 29, 2018 at 17:16
  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - From Review
    – Vince
    Nov 29, 2018 at 18:36
  • My answer is to give the same symbol level value to each symbol in the same feature. and my question is does it solve your questions.
    – B-C B.
    Nov 29, 2018 at 19:20
  • Please provide answers as statements rather questions. If you need to ask questions to seek clarifications then that should be done using comments.
    – PolyGeo
    Nov 29, 2018 at 21:30

1 Answer 1


edit: after seeing the symbol level screenshot added to the question, my answer appears inadequate although I fear it's the best that can currently be done. If someone proves me wrong, I'll be as happy as MAP.

I don't have an answer that doesn't include symbol levels and it could get complex fast if you have bridges going over bridges, but in case of only two possible Z-levels, you could replace your symbols with 4 new similarly-styled symbologies from these expressions:

"type" = 'motorway' AND "bridge" = 0
"type" = 'motorway' AND "bridge" = 1
"type" = 'motorway_link' AND "bridge" = 0
"type" = 'motorway_link' AND "bridge" = 1

Then in the symbol levels, set the corresponding layers of those two new symbologies assigned to bridges to render on passes 2 and 3. All bridges will get rendered on top, both of their components. To scale this to more Z-levels, you'd just need to have more symbologies taking into account that Z value and corresponding symbol levels to render on top.

It's not perfect, but it should work.

  • yes, this is the same way I was going for years until QGIS3 release with the "feature rendering order" function which - for my opinion - could perfectly be used for complex bridge-situations... could... I'm bored of using symbol levels as you can see in the newly added screenshot :-)
    – MartinMap
    Nov 29, 2018 at 20:33
  • 1
    @MAP The horror! The horror! I'm not that horrified but I understand now why you'd want Define order to work somewhat concurrently with symbol levels. I suspect it's just not possible right now. Feature request material?
    – Gabriel
    Nov 29, 2018 at 21:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.