Due to the problem that service areas (almost) always contain duplicate line segments, it had to be solved like this as an extended version of BERA's answer:
- "Explode lines" of service area
- "Extract vertices" of the exploded lines
- Create a minimal "Buffer" for the extracted vertices
- "Sum line lengths" of minimal "Buffer" and result from "Explode lines"
- "Join attributes by location" (intersect) of "Extract vertices" and "Sum line lengths" results
- "Extract by expression" (
count=1
) from result of "Join attributes by location"
- "Extract by expression" (
count=2
) from result of "Join attributes by location"
- "Extract specific vertices" from original network layer (
0,-1
for start point end end point of each line segment)
- Add a minimal "Buffer" to the extracted network vertices
- Perform an "Intersection" of the "Extract by expression"
count=2
result from above
- "Merge vector layers" of the intersection result and the result of "Extract by expression"
count=1
result from above.
This is due to the fact that because of overlapping line segments in the calculated service area, all vertices that are corresponding end points and end points in the original network have a count of 2, whereas all service area vertices that have no counterparts in the original network because they area located between its vertices have a count of 1. Thus, the vertices with a count of 2 only have to be kept if they correspond to a start point or an end point of the original network. See the following screenshot (the green count=2 vertices have to be removed).
I can hardly imagine that this is the most performant way to extract all dangles of a service area in QGIS, but so far (and based on the suggestions of others) this is the only working solution that I have found (at least for my specific use case).
Please note: Have a look at
as I reason why I'm not satisfied with my own answer and thus can't accept it at the moment.