Keep in mind that for the majority of trains in Germany, nobody bought a specific ticket for that journey. We just use the DeutschlandTicket which is a flat subscription of 58€/month, which gives unlimited access to busses, trams, and regional trains (basically everything but high speed trains).
With the deutschalnd ticket, you typically just walk onto a train of your choice and go wherever you want. They dont actually know where all the travellers are going or even how many people there are
You could also select random virtual journeys, I suppose. In arbitrary units you should at least be able to measure whether DB is improving or not. You could even delegate this to an independent organization. Actually, now that I think of it, isn't the API public? I'm reminded of the talk by D. Kriesel about DB data mining.
> A train may be late by 15 minutes, but if that means I'll miss a connecting train, that might delay my journey by an hour or more.
Speaking from experience taking the subway in Shanghai, if a train is 15 minutes late, and it still manages to arrive before the train that was scheduled to follow it, it cannot be true that the network is "very densely packed" or that it has "very frequent trains".
This isn't obvious to me. Here's Deutsche Bahn's map of the system: https://cms.static-bahn.de/wmedia/redaktion/aushaenge/streck...
Here's a map of Shanghai's subway system: https://www.travelchinaguide.com/images/map/shanghai/subway-...
The German intercity rail network certainly identifies more lines, around 57 to Shanghai's 18, but this isn't directly related to the complexity of the topology. For example, line 14 appears to begin in Aachen and dead-end into Berlin, at which point line 95 begins in Berlin and runs out to Poland. As far as the routing is concerned, those could be the same line. But they're given different numbers. When the same thing happens (at a smaller scale) in Shanghai at the west end of line 9, the tail bit of the line going to Songjiang is still called "line 9". Note that if you want to ride out to Songjiang, at some point you're going to have to get off your "line 9" train and walk over to another station where a different "line 9" train will take you the rest of the way.
Discounting that, the two layouts appear to be roughly similar on the fundamentals, if differently scaled.
The most obvious difference is that the routes between major German cities are served by several lines. This is clearly meaningful in some cases; line 29 from Munich to Nuremberg continues north to Hamburg via Berlin while line 41 from Munich to Nuremberg continues northwest to Dortmund via Frankfurt and Cologne. On the other hand, line 8 from Munich to Nuremberg parallels line 29 for the entire length of line 8 (line 8 stops in Berlin, but line 29 doesn't).
My first guess would be that conflicts arise from the fact that the German trains are on the ground, and when their tracks cross, conflict can occur. This isn't true of a subway system; when subway tracks cross, they do it at different altitudes, allowing both tracks to be in use simultaneously.
Your map only shows ICE/IC lines, there are many more other lines which share the same tracks. This shows a more complete picture: https://www.deviantart.com/costamiri/art/Transit-diagram-of-... but it still doesn't show international trains and freight.
Trains inside cities (i.e. trams and subways) are much much more frequent because they have fewer constraints and lower speeds.
Passenger trains from Frankfurt to Cologne are infrequent because there is virtually no demand to move between cities 120 miles apart. Because the trains are infrequent, they aren't dense on the tracks.
But that's the opposite of saying that they are frequent and densely packed.