at the risk of not answering your actual question :-), let me suggest a great application you might not have heard of, that does all that you listed -
it's my one-stop-shop for viewing, editing, and transferring GPX, among other things.
And perhaps more on-topic, maybe checkout the Positioning namespace of dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning
regards, MCRegards.