I'm trying to to join two polygon layers. My joining polygon layer may have one or more polygons touching the target polygon. And the joining polygon layer may have overlapping polygons as well.

I would like my target polygon layer to get attribute data from all the polygons that touch it. I've been trying using Join attributes by location on QGIS. However I only get data from one of the polygons.

The Target dataset is around 140 polygons where the joining is around 900+ (not all necessarily touching the target set)

I've tried too illustrate my point below.

enter image description here

enter image description here

Another issue is that both target and joining polygons touch boundaries several times and with different polygons as illustrated above.

2 Answers 2


What you need is a relationship model (one-to-many).

  1. First create a new attribute on your polygon layer with "att" populate with the ID of target layer (use spatial join for that).

  2. Then in QGIS (don't know with Arcgis), use the relation tab of your project and define target layer as parent table and use the new attribute you have created as the key for joining layers.

  • Thanks, I got as far as 1. myself before I got stumped again. Your answer works, but there is another problem which my zoomed in picture above doesn't illustrate. I've added another picture above showing the issue. Both the target and joining polygons touch boundaries with more than one of each polygon. Commented Oct 17, 2017 at 7:16

Spatial join which I had done a few times before apparently worked if you just keep doing it. Target features was the little red polygons, join features the large ones. Join on to many relationship, keep all target features and intersect with a search radius of 0 did the trick. I had tried this before, but perhaps I had something selected because it did not work before but it does now.

Thank you for your time :)

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.