6

I have two layers, a point layer and a polygon layer ('Sektorplan'). The polygon layer attribute table has a "Sektor" column ('1','2', ...).

The Goal

I want to add a new column ("Sector") to the attribute table of the point layer to indicate in which sector the point is located.

Tried so far

I used overlay_within('Sektorplan', Sektor) in the field calculator of the point layer.

The Problem

The resulting column only shows NULL. Using a Virtual Field or not does not make any difference. The preview of the field calculator shows up correct (['1']).

Pictures say more than a thousand words

The table of the polygon layer

field calculator

resulting point layer table

Anyone knows what causes this? My search-fu failed me.

2
  • 3
    If you read the QGIS docs, where it says: "Returns whether the current feature is spatially within at least one feature from a target layer, or an array of expression-based results for the features in the target layer that contain the current feature.", so using of the array_to_string() function additionally is required i.e. array_to_string(overlay_within('Sektorplan', Sektor))
    – Taras
    Oct 6, 2021 at 11:49
  • 1
    Yes, I overlooked the array part. Thought as there's only one other layer .... It's always those details.
    – viamonster
    Oct 6, 2021 at 12:05

1 Answer 1

10

overlay_within returns Sektor value of the related polygon feature(s) as a list/array (even if it returns one polygon). You should convert to string.

Set Output field type to Text and use this expression:

array_to_string(overlay_within('Sektorplan', Sektor))

enter image description here

2
  • 1
    Awesome! Thanks so much! Clearly did not understand that it ALWAYS returns an array.
    – viamonster
    Oct 6, 2021 at 12:03
  • 2
    It always returns an array since a point may be within multiple polygons., unlike your case. Oct 6, 2021 at 12:06

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.