How to find dead-ends in road network using ArcGIS for Desktop or GRASS?

I had to do this just recently. Using ArcGIS 10:

If you only want to symbolise the dead ends you can just set up a Topology on the roads featureclass and set the rule "Must not have dangles". this will put a marker on every feature that has a dead end.

Alternatively, run the "Feature Vertices to Points" Tool (Located in Data Management Tools --> Features) and select "Dangle" as the point type. You can then use "Select by location" to pick up all lines that touch those dangle points.

Voila, all dead-end streets are selected.


A general way of solving this problem is to find all polylines having a node whose valence = 1.

A valence table may be created either in memory or on disk, using a key that is the hash of the x&y of each end point of each polyline. You may wish to truncate x and y may be truncated if polylines are not snapped.

enter image description here

Each node is labeled by its degree (or valence).


In ArcGIS Standard or Advanced, you can put your road network into a Feature Dataset in a Geodatabase. You can then set up a topology on the network and create a topology rule which identifies "dangles". This will identify all roads which do not connect to something at one or both ends. Note, this will also identify potential errors in your network which have dangles and are not cul-de-sacs. They'll need to be fixed first.

To select the dangling features, open the Error Inspector, highlight the errors, right click and choose "select features". This will create a normal selection on your feature class and you can then select those features from that selection which are less than 100m.

Hope this is what you're after.


EDIT:

Just saw this ESRI blog post about a new feature in ArcGIS 10.1 which allows you to export topology errors as feature classes. This might be useful for some.