0

The polygon highlighted in red is a single polygon that has slivers directly attached to it.

I used the Difference tool on two polygon layers which lead to slivers / fuzzy polygon parts (see picture). I saw Deleting sliver polygons after difference operation in QGIS? and got rid of the sliver polygons that are not connected to bigger polygons (black lines and the small polgon on the house). However, I want to get rid of the sliver that is connected to "proper" polygons as well. The red lines that branch out from the one bigger polygon are an example of that. Since I work on datasets that cover an entire county, I need a solution that can be done in a reasonable amount of time.

Is there a way to get rid of these connected sliver polygons?

Example of fuzzy polygons

Some more background information: Layer A contains areas that I want to exclude from layer B. I tried both, extract by location ("touch" and "disjoint") which excluded many polygons as they were slightly overlapping. Couldn't find a good solution for that. Then I tried the method described above and got said problem.

5
  • Why don't you try Topology, or merging the slivers to adjacent features? There are a few help documentation that can be referred to: Removing slivers or gaps between polygons Struggling to delete very fine sliver-like polygons Aug 24, 2021 at 13:02
  • 1
    Select those with an area and roundness above some values: gis.stackexchange.com/questions/374053/…
    – BERA
    Aug 24, 2021 at 13:25
  • Thanks, I will look at it first thing tomorrow. Buffering the "Difference" feature just slightly (10cm) also gets rid of most of the slivers and thus improved the precision of the area quite a lot, as it seems.
    – Homerun_
    Aug 24, 2021 at 13:40
  • Hi, thanks for the suggestion! If I see it correctly, topology does not allow to check for a single polygon that has slivers directly connected to it and then remove the slivers but not the "main polygon".
    – Homerun_
    Aug 25, 2021 at 8:04
  • Prior to running the difference tool you might try to snap one layer to the other, trying out different tolerances to avoid as many "slivers" as possible when you do run the difference tool without changing your acceptable shapes.
    – John
    Aug 25, 2021 at 12:50

2 Answers 2

1

Add a check for polygons with an area below... let's say 30 sqm to your workflow (select by expression using area($geometry) < 30). Maybe 10 sqm, depends on your dataset. Select those, delete those.

1
  • Good idea, but I already did this to get rid of the "stand alone" slivers. If the sliver is connected to a big polygon this won't work.
    – Homerun_
    Aug 24, 2021 at 13:41
1

No real solution has been found yet, but I got a workaround that worked quite nicely.

  1. I got rid of slivers around polygons in QGIS after a Difference tool by first buffering the feature by 5cm. For my case a slight inaccuracy in area was less important than getting rid of the "Difference slivers".
  2. The Difference tool also created some unwanted small polygons, some of them slivers but not all. I used the "Multipart to single parts" tool to separate the small polygons as good as easily possible and then calculated their roundness and recalculate their area. Also calculating the number of inner rings (holes) helps filtering out bigger polygons that have a high roundness value (num_interior_rings($geometry)). Lastly the "Extract by expression" tool allowed me to filter out polygons under 50sqm with a roundness of 50 or more (1 = perfect circle; the bigger the less round the polygons are).

That way I didn't get rid of slivers that were attached to polygons that were wanted, but I eliminated as much of them as plausibly possible, I think.

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.