First make sure your Buildings have a unique id"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"the "Polygon Self-Intersection" from SAGA Processing tools and choose this ID"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"id"
field, containing the IDs"id"
s of their original buildings splittedsplit by a |
sign.
Now open the field calculator of this new layer and calulatecalculate a new field with this expression:
if(regexp_match("ID",'\\|') > 0, regexp_substr("ID",'[^|]*'), "ID")
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")
as "mergeID"
or
if(regexp_match("ID",'\\|') > 0, regexp_substr("ID",'(?<=\\|).*'), "ID")
to get the first ID"ID"
as mergeID"mergeID"
:
This expression looks up in your "ID"
field, wheterwhether 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"mergeID"
.
Then run "Dissolve"the "Dissolve" from processing toolbox and choose this mergeID"mergeID"
as dissolve field:
Your final result: