public void WriteGpxFile(GpxDocument doc) { if (doc != null) { string file = String.Format("{0}\\{1}.gpx", SelectedPath, Values.Settings.ProjectOptions.ProjectName); if (File.Exists(file)) File.Delete(file); using (GpxWriter gw = new GpxWriter(file, doc)) { gw.WriteStartDocument(); gw.WriteStartGpx(); gw.WriteGpxDocument(); gw.WriteEndGpx(); gw.WriteEndDocument(); } } }
public GpxDocument CreateGpxDoc(DataAccessLayer DAL) { GpxDocument doc = new GpxDocument("USFS TwoTrails - http://www.fs.fed.us/fmsc/measure/geospatial/twotrails/"); doc.MetaData = new GpxMetadata(); doc.MetaData.Time = DateTime.Now; doc.MetaData.Name = Values.Settings.ProjectOptions.ProjectName; doc.MetaData.Link = "http://www.fs.fed.us/fmsc/measure/geospatial/twotrails/"; #region Create Polygons List<TtPolygon> polys = DAL.GetPolygons(); foreach (TtPolygon poly in polys) { GpxRoute AdjRoute = new GpxRoute(poly.Name + " - Adj Boundary", poly.Description); GpxTrack AdjTrack = new GpxTrack(poly.Name + " - Adj Navigation", poly.Description); GpxRoute UnAdjRoute = new GpxRoute(poly.Name + " - UnAdj Boundary", poly.Description); GpxTrack UnAdjTrack = new GpxTrack(poly.Name + " - UnAdj Navigation", poly.Description); AdjTrack.Segments.Add(new GpxTrackSeg()); UnAdjTrack.Segments.Add(new GpxTrackSeg()); List<TtPoint> points = DAL.GetPointsInPolygon(poly.CN); TtMetaData md = null; if (points.Count > 0) { md = DAL.GetMetaDataByCN(points[0].MetaDefCN); if (md == null) throw new Exception("Meta Data is null. Cant obtain UTM Zone"); } if (points != null && points.Count > 0) { foreach (TtPoint point in points) { double lat, lon; TtUtils.UTMtoLatLon(point.AdjX, point.AdjY, md.Zone, out lat, out lon); GpxPoint adjpoint = new GpxPoint(lat, lon, point.AdjZ); TtUtils.UTMtoLatLon(point.UnAdjX, point.UnAdjY, md.Zone, out lat, out lon); GpxPoint unAdjpoint = new GpxPoint(lat, lon, point.UnAdjZ); adjpoint.Name = point.PID.ToString(); adjpoint.Time = point.Time; adjpoint.Comment = point.Comment; adjpoint.Description = "Point Operation: " + point.op.ToString() + "<br>UtmX:" + point.AdjX + "<br>UtmY: " + point.AdjY; unAdjpoint.Name = point.PID.ToString(); unAdjpoint.Time = point.Time; unAdjpoint.Comment = point.Comment; unAdjpoint.Description = "Point Operation: " + point.op.ToString() + "<br>UtmX:" + point.UnAdjX + "<br>UtmY: " + point.UnAdjY; #region Add points to lists if (point.IsBndPoint()) { AdjRoute.Points.Add(adjpoint); UnAdjRoute.Points.Add(unAdjpoint); } if (point.IsNavPoint()) { AdjTrack.Segments[0].Points.Add(adjpoint); UnAdjTrack.Segments[0].Points.Add(unAdjpoint); } else if (point.op == OpType.Quondam) { QuondamPoint p = (QuondamPoint)point; if (p.IsNavPoint()) { AdjTrack.Segments[0].Points.Add(adjpoint); UnAdjTrack.Segments[0].Points.Add(unAdjpoint); } } if (point.op == OpType.WayPoint) { doc.AddPoint(unAdjpoint); } #endregion } } doc.AddRoute(AdjRoute); doc.AddRoute(UnAdjRoute); doc.AddTrack(AdjTrack); doc.AddTrack(UnAdjTrack); } #endregion return doc; }
public void WriteGpxDocument(GpxDocument doc) { if (_open && doc != null) { if(doc.MetaData != null) WriteGpxMetadata(doc.MetaData); if (doc.Waypoints != null && doc.Waypoints.Count > 0) { foreach (GpxPoint point in doc.Waypoints) { WriteGpxPoint(point, PointType.WayPoint); } } if (doc.Routes != null && doc.Routes.Count > 0) { foreach (GpxRoute route in doc.Routes) { WriteGpxRoute(route); } } if (doc.Tracks != null && doc.Tracks.Count > 0) { foreach (GpxTrack track in doc.Tracks) { WriteGpxTrack(track); } } if (doc.Extensions != null) WriteGpxExtensions(doc.Extensions); } }
private void init(string filename, GpxDocument doc) { Document = doc; _FileName = filename; Formatting = Formatting.Indented; Indentation = 4; }
public GpxWriter(string filename, GpxDocument doc) : base(filename, null) { init(filename, doc); }