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:
Which will create a new layer, where the overlapping Parts become their own polygons.
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
.
Then run "Dissolve" from processing toolbox and choose this mergeID as dissolve field:
Your final result: