[GIS] many to one join in QGIS

attribute-joinsmergepostgisqgisquery

Having looked at many duplicates I still can't seem to get a concensus especially with regards to using QGIS.
I've read Creating duplicate features – many to one – in qgis and several others.

My data format is:

A) Point Shapefile Layer
B) Polygon Shapefile Layer

I want to:

Grab all the "non-geometry" attributes of the point data, and merge them with the "geometry" of the polygon parcels it falls within.

Using MMQGIS, Layer->Join Attributes by Location, Spatial Query, etc all yield the same results. I can only get the "first matched" feature.

What I want is for the polygon to have an array where the addresses are shown within it. I have somewhat achieved this using POSTGIS but am suprised that there is no solution in QGIS.

Am I correct?

Best Answer

If the polygon layer has an id field (unique for each polygon), you can try to do it the other way around, that is:

Join the point layer to the polygon layer using for instance the NNJoin plugin. This will attach the attributes (including the id) of the closest polygon to each point in the point layer.

Remove all points that are not contained in a polygon (distance greater than 0).

The points can now be joined to the polygon layer using the polygon id (a non-spatial join). In QGIS you can do this using "Relations" in the Project properties (see for instance https://docs.qgis.org/2.18/en/docs/user_manual/working_with_vector/attribute_table.html#creating-one-or-many-to-many-relations).

Related Question