We have multiple very high quality road networks available from multiple sources (Open Street Map, TomTom...). These sources contain way more information than we need, effectively blocking our calculations. Filtering out secondary roads is easy. Our main problems are the representation of highways (two roads in opposite directions), complicated highway crossings (various exit roads, junctions are not points). For our purposes, a more "topological" style road network would be ideal.
Highly detailed data source:
The ideal simplified network:
Are there any algorithms that would help us extract the simplified road network? If there is even implementation available in .NET, that would be a real winner.
UPDATE:
The original data is represented as polylines with some limited metadata attached. The metadata tells the identity of the road (name or number), the 'rank' of the road (highway, primary, secondary, etc.), and some more details like speed limit, whether the line section is a bridge or tunnel. The quality of the data is very good, we can easily group together the polyline segments that together form a road based on the road identity. Similarly, it is very easy to ignore the secondary roads. Acceleration/deceleration lanes at highway exit are also marked clearly in their rank, so they are also easily filterable.
We see two main problems:
1) Highways: Replace the two (or more) oneway roads with a single road
2) Highway junctions: Identify the center point of the junctions, and make sure that our simplified highways are connected to that.
UPDATE 2: Data is stored in EZRI Shape files. Using SharpMap library, they are is relatively easy to parse, or do geospatial search. Source data is segmented by country, one country is one shape file (if the country is too big like US, Germany), it is further divided to smaller regions. And yes, this division brings up a further problem. How to make sure that the simplified highways on the border of France and Germany meet each other?
Thanx for the attention