If your road network has a
name attribute or similar, you should be able to do this by dissolving based on attribute(s).
As an example, consider the following road network layer. The layer has been symbolized to have points at the first and last vertices. You can see that, like your data, mine is split into many, many short segments.
- I run the Dissolve tool and choose
Name as the dissolve field. The results appear similar to before, but by selecting one of the roads, I can see that these are actually multipart, but still distinct features for each road.
- I run the Merge lines tool. The output is what I want: connected parts of each road are merged together, but each road is still a distinct feature.
- With the merged roads layer, I can now run the Line intersections tool.
NOTE: This is where the process laid out in the question breaks down; with a single merged feature, it won't self-intersect anywhere.
Here's the output, with intersections symbolized as Xs. To help illustrate the result, I've included the original network's start and end points, which you can see are no longer included as intersections.
An additional benefit of creating line intersections this way is that the intersection layer can retain the attributes of both intersecting features from the lines layer, since we did not do away with the attributes in that initial dissolve. This may not be useful to your particular purpose, but it may be beneficial to manage the output data. You'd only be a field calculation away from something like "Intersection of Avenue X and Street Y" for each intersection.
Finally, be aware that this method isn't perfect. If an otherwise continuous line changes attributes, you may end up with "intersections", as shown below. The tiny dead end in this picture technically has its own name, so it kept it separate.