I would like to find all polygons, which intersect another polygon within the same layer. I thought the geometry checker could do the job, but it doesn't.

enter image description here

All polygons are intersecting except one, but I get no geometry errors. What I am doing wrong? (QGIS 3.8)

  • do you mean intersects? Or just overlaps? Because adjecent polygons with common borders will be selected too if you use the intersects-predicate. – PieterB Oct 22 '19 at 17:44
  • A geometry error occurs when rings overlap each other within a single geometry. You appear to want to validate topology with respect to all other shapes, so your selection of the answer is at odds with your stated goal. – Vince Oct 22 '19 at 22:39

I think self-intersections here only refers to intersections within features (with "edge overlappings" if i may say so ...) not between features ... There's a nice tool in SAGA toolbox called Polygon self intersections (... that should be its right name ...) which is doing exactly what u seem to be expecting ....


It is better to use Topology Checker tool not Check Geometries. Topology Checker is located under Vector -> Topology Checker, then click on configure button and define a new rule Must not overlap.

Here is an example:

This is a polygon shapefile which has overlap polygons as well as separate polygons.

enter image description here

Go to Configure in the Topology Checker tool.

enter image description here

  1. Current Rule: select the polygon layer
  2. Must not Overlap
  3. Add Rule
  4. Click OK

enter image description here

Click on Validate Extent or Validate All as you like

enter image description here

Then the overlap area will be highlighted.

enter image description here

  • Yes, this is working fine to highlight the errors, but unfortunately you can not select them to solve the problems (like geometry checker does) – MAP Oct 22 '19 at 20:02
  • @MAP Yes I agree. Anyway, I am glad you find a solution for your problem. – ahmadhanb Oct 22 '19 at 20:04

you can do it with virtual layer and sql.

Assuming that your layer has an id called "id". you can do following query

select a.* 
from your_layer as a, your_layer as b
where st_intersects(a.geometry, b.geometry) and a.id <> b.id

or you can just use 'topology checker'. If you do not see it, just activate it in the plugins

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.