示例#1
0
 public static List<Track> ParseGpx(string filename, Stream data)
 {
     var doc = XDocument.Load(data);
     var xn = doc.Root.Name.Namespace;
     List<Track> tracks = new List<Track>();
     // Read 'trk' elements.  Could also read 'wpt' and 'rte'
     foreach (var trk in doc.Root.Elements(xn + "trk"))
     {
         var newDoc = new XDocument(doc);
         newDoc.Declaration = new XDeclaration(doc.Declaration);
         newDoc.Root.ReplaceNodes(new XElement(trk));
         var newTrack = new Track { SourceFile = filename, Data = newDoc.ToString(), Name = trk.Element(xn + "name").Value };
         var points = newTrack.GetPoints();
         if (points.Length > 10)
             tracks.Add(newTrack);
     }
     return tracks;
 }