Skip to main content
1 of 2
MrXsquared
  • 35.6k
  • 22
  • 71
  • 121

First make sure your Buildings have a unique id (which does not contain a | character, you will see why below). You can add it for example via field calculator by adding a new field with the expression $id if they do not have one already.

Then run "Polygon Self-Intersection" from SAGA Processing tools and choose this ID as Identifier:

enter image description here

Which will create a new layer, where the overlapping Parts become their own polygons.

enter image description here

This new layer will contain a new ID field, containing the IDs of their original buildings splitted by a | sign.

Now open the field calculator of this new layer and calulate a new field with this expression:

if(regexp_match("ID",'\\|') > 0,regexp_substr("ID",'[^|]*'),"ID") to get the second ID as mergeID or if(regexp_match("ID",'\\|') > 0,regexp_substr("ID",'(?<=\\|).*'),"ID") to get the first ID as mergeID:

This expression looks up in your "ID" field, wheter it contains a | character. If so, it chooses the ID before or after the | character. If it does not contain this character, it will just copy over the ID to the mergeID.

enter image description here

Then run "Dissolve" from processing toolbox and choose this mergeID as dissolve field:

enter image description here

Your final result:

enter image description here

MrXsquared
  • 35.6k
  • 22
  • 71
  • 121