public GPSData Read(TextReader reader) { reader.ThrowIfNull("reader"); var data = new GPSData(); var gpx = LoadGpx(reader); foreach (var track in gpx.trk) { var way = new Way(); foreach (var trackSegment in track.trkseg) { foreach (var trackPoint in trackSegment.trkpt) { way.Add(new WayPoint { Latitude = trackPoint.lat, Longitude = trackPoint.lon, Elevation = trackPoint.eleSpecified ? (decimal?)trackPoint.ele : null }); } } data.Add(way); } return data; }