I have a project with multiple layers. The purple dots are from a pointfile with the symbology-expression: z($geometry)> '14.5'. (so it only displays a purple dot when the Z-value is more than 14.5m).

I have a second layer with polygons, visible as the partly-transparent arc-area in red.

The next step i want to make in my project is to: have the purple dots appear only if: z($geometry)>'14.5' AND the x-y of that spot is within the geographical extent of the polygon from the second layer

What step do i have to take to get this done.

example without last step


Your question is very similar to what I've done here recently.

I used expression:


In your case step 1: filter data table by

z($geometry)> '14.5'

step 2: paste expression in point symbology layer (see gif to find where)


You can use the same expression for labels but must change 1 and 0 values to "label_field_name" and to null.

That's it.

enter image description here

| improve this answer | |
  • Good answer! Would it work to drop the if-part completely and just use within(...)? – Matthias Kuhn Mar 2 '19 at 23:41
  • Nope it wouldn't. – Vitruvius Mar 3 '19 at 5:28
  • That's surprising... Did you try? – Matthias Kuhn Mar 3 '19 at 7:04
  • Is it possible that this doesn' t work in rule-based symbology? I can get it work in a test environment, but not in my project. I used if( within($geometry,geometry(get_feature('bronpolygonen_4a087198_dafa_4185_a358_d410ed1a980e','TYPECTRL','MONITOR HOOFD VERLICHT'))), 1, 0 ) – CaptainAhab Mar 4 '19 at 16:54
  • Or is it possible that my dataset is just to big (626000 features)? – CaptainAhab Mar 4 '19 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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