I have created a river network as polyline shapefile for training purposes. No I wanted to integrate undershoots/overshoots that needs to be detected and corrected from the participants.

I have used the snapping option to generate the polyline shapefile. I used as rule within the Topology Checker Plugin: "must not have dangles". The QGIS User Guide is saying (QGIS User Guide) that this rule is "show the overshoots in the line layer". Actually all end- and strating points are detected as error, even if they share a vertex and are connected to each other.


I think dangles are per definition something else. Have a look to the definition of GIS-Lounge, dangles are: "Dangles or dangling nodes are lines that are not connected but should be. With dangling nodes, gaps occur in the linework where the two lines should be connected. Dangling nodes also occur when a digitized polygon doesn’t connect back to itself, leaving a gap where the two end nodes should have connected, creating what is called an open polygon."

Am I right, that Topology Checker Plugin is not able to detect undershoots/overshoots? If yes, is there any other possibility how to easily to it within the QGIS environment?

  • I'm not sure what you mean by undershoots/overshoots. Have you tried GRASS v.clean? Especially the snap function?
    – Victor
    Oct 7, 2016 at 20:45
  • By undershoot/overshoot I mean those errors that are normally occuring if you do not use the snapping option provided by QGIS: you want to connect a new feature line to a segment or a vertex of another already existing line but you miss them both, so your new line shows a gap or a crossing to the other line. I know the options from GRASS to clean (almost) automatically topological errors, but I just wanted to start smoothly in my course using topology checking tools to identify generated errors within the QGIS environment. An my impression is, that Topology Checker is not working in that case?
    – Charlodde
    Oct 8, 2016 at 12:39

2 Answers 2


I think this is correct behavior. In logical (network) topology all lines must end (or start) at the end (or start) of another line. You have to physically split lines at the location (vertex) where other line touches. You can visualize this as water pipes. If you need to create T join on existing pipe, you have to split that pipe first, then add fitting and then connect another pipe to fitting. I hope that sound clear.

This behavior led to another problem - one logical entity divided to multiple pieces. So you ends up with many features with same attributes, which is not good for maintenance. Imagine you need to change river name... Now you have to change it for each corresponding segment. Often this is not big deal.

But if you want to solve this elegantly, you can model rivers as two separate tables (feature classes). One with attributes only and one with geometries. Attribute table will hold unique list of all rivers. Geometry table will hold river segments and one extra attribute(say id_river) with relation to river attribute table. In this setup one river can have multiple geometry segments, but you maintain only one river record.

  • This was very helpful. Your explanation helped me to understand what excactly dangles are. When I start digitizing the river network in that manner you were proposing no "dangle error" were detected anymore. Nevertheless, the QGIS UserGuide (2016) is then giving a wrong definition for the rule "Must not have dangles", by saying: "This will show the overshoots in the line layer"!? That was confusing me the most. Is digitizing a river network without dangles important to run standard network algorithms?
    – Charlodde
    Oct 9, 2016 at 1:25
  • Yes, i agree that description in User Guide is confusing... but this is very common behavior across all GIS SW. And yes, creating clean topology (without dangles) is always a good practice. You have to consult your SW documentation to met specific topology requirements. And one more thing .. clean topology is not only about dangling errors. It is also about lines orientation. You should always create line from source to sink (first vertex on source, last on sink). This is important especially in directed networks, which water streams are.
    – DavidP
    Oct 9, 2016 at 16:56

I find the plugin disconnect islands very efficient for this precise case. It will group all connected lines within 1 group and then use symbology to show the different groups created:
Disconnected islands

You need to install networkx for python to use it.

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.