This is a very unorganised rant on what I would like what my topo software to
do. Maybe some day I'll get round to writing something that does this.

I own a copy of National Geographic's TOPO! for California. It's nice to have
all the topo maps accessible, to draw routes on it, to get elevation profiles,
and to have it talk to my GPS. But the user interface is awful. The main thing
that it just can't do is deal well with multiple routes that contain the same
segment. For instance all my bike routes start out at my house, and the first
bit is always the same. Similarly many hikes start out for a mile along the
same trail. There are other quirks too, but that's my main beef with the
program.

What I want is a hierarchy of things that build on each other. At the lowest
level you have a segment, which is drawn straight on the map. This could be a
stretch of road, a sequence of trails, the way from my house to the beach,
etc. Then routes are built up out of segments. Maybe it would be nice to
expand on this building legs out of routes, and trips out of legs.

Example: My beach runs. I make a few segments: home to beach, beach to
creek, creek to bridge, and creek to spit, spit to tar rocks on
the beach, and spit to tar rocks on the bluffs. Once I've got these made I
can trivially build up the 3 routes I commonly run. 2 miles: home to beach,
beach to creek, creek to bridge. 3 miles low tide: home to beach, beach to
creek, creek to spit, spit to tar rocks on the beach. 3 miles high tide: home
to beach, beach to creek, creek to spit, spit to tar rocks on the bluffs.

On the map the program should, by default, show all the segments. Right click
on a segment to get a pop-up menu of all the routes that use that segment.
Select a route to get it highlighted, change it etc. You can split segments at
any point. The program will update any routes as necessary. When a route is
selected, each segment that is part of that route is somehow highlighted, and
has an arrow at the destination end, so you can see what direction the route
goes and whether a given segment is traversed both ways or not.

You could save off segments separately. The obvious segment database is just a
road map. But more interestingly, you could have a db of hiking trails. Or
roads that are bike-friendly. Once you have enough segments it might be cool
to have some route-planning capability.