I have a road network (black line) and I want to identify all segments that are completely cut off by my flood polygon (blue polygon).

I have clipped the road network to get all roads within the road network and I have been able to identify some road segments that are cut off by the flood zone polygon (green lines and pink lines), but not all of them. I did this through a combination of the 'intersection' tool and the 'Spatial Query' plugin.

I'm using QGIS for this.

Identifying roads cut off by flood zone polygon

I used the 'Topology Checker' tool to identify all 'dangles' but it highlights road segments that are, for example, just dead ends but are connected to the wider road network. I guess I'm looking for 'double dangles'?

I'm basically looking for road segments that are completely disconnected from the larger road network but they can be connected to one another. 'Dangle islands'?

If an agent is placed on a 'dangle island' and is not able to access the full network, then that road network is a 'dangle island'!

Some of these 'dangles' do connect to the wider road network

  • Is this road network a geometric network?
    – Barbarossa
    Commented Apr 27, 2018 at 19:08
  • @Barbarossa: yes, it is a geometric network. At least I think it is! I've been using it for routing. It is an OS MasterMap® Integrated Transport Network downloaded from Ordnance Survey.
    – KJGarbutt
    Commented Apr 27, 2018 at 19:12
  • It is more than line geometry, such as a shapefile. A geometric network will be comprised of nodes, lines, and connectivity rules used to model their behavior. it's hard to determine from the ITN website whether it is or not. Can you verify?
    – Barbarossa
    Commented Apr 27, 2018 at 19:23
  • how about a concave hull on the flood polygon then selection? or fill the flood polygon holes and then perform the selection with roads? If I understand correctly you need to get rid of the gaps. desktop.arcgis.com/en/arcmap/latest/tools/3d-analyst-toolbox/… desktop.arcgis.com/en/arcmap/latest/extensions/…
    – user92055
    Commented Apr 27, 2018 at 20:32
  • mh I can think of a few multi-step, unintuitive or workaround options...the issue is there's no trivial way to declare some part of your network(s) the main network. are you willing to go PostGIS by any chance?
    – geozelot
    Commented Apr 27, 2018 at 20:50

1 Answer 1


I add a quick solution using Virtual Layers to get all roads split by the flood polygon that are within the convex hull of the same.

Load your layers in QGIS, open a new Virtual Layer via Layer -> Add Layer -> Add/Edit Virtual Layer, select both layers via Import and run

SELECT <column1>,
       ST_Difference(a.geometry, b.geometry) AS geometry
FROM <road_layer> AS a
JOIN <flood_layer> AS b
  ON ST_Within(a.geometry, ST_ConvexHull(b.geometry));

The resulting set of (split) roads should represent those that are isolated by the flood polygons inner rings.
They wil not have an 'island' reference, i.e. they are not grouped by their individual connectivities into small networks.

Also, the join on ST_Within excludes road segments that are not fully within the polygons outer boundary and thus might lead to missing segments on border cases. If that is of concern, you can get the ST_Intersection of the roads with the convex hull in a subquery first.

Another caveat might be the convex hull itself by not following an inward curved boundary. Try with ST_ConcaveHull if you find any of those cases significant.
More precision can be achieved with ST_ExteriorRing and polygonizing the resulting LineString.
It depends on your polygon how to best proceed with getting rid of the inner rings.

Hope that helps. Get back with any errors, I can't test right now.

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.