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 WriteGpxPoint(GpxPoint point) { WriteGpxPoint(point, PointType.WayPoint); }
public void WriteGpxPoint(GpxPoint point, PointType type) { if (point != null) { switch (type) { case PointType.RoutePoint: WriteStartElement("rtept"); break; case PointType.TrackPoint: WriteStartElement("trkpt"); break; case PointType.WayPoint: default: WriteStartElement("wpt"); break; } WriteAttributeString("lat", point.Latitude.ToString()); WriteAttributeString("lon", point.Longitude.ToString()); if (point.Altitude != null) WriteElementString("ele", point.Altitude.ToString()); if (point.Time != null) WriteElementString("time", point.Time.ToString()); if (point.MagVar != null) WriteElementString("magvar", point.MagVar.ToString()); if (point.GeoidHeight != null) WriteElementString("geoidheight", point.GeoidHeight.ToString()); if (point.Name != null && point.Name != "") WriteElementString("name", point.Name); if (point.Comment != null && point.Comment != "") WriteElementString("cmt", point.Comment); if (point.Description != null && point.Description != "") WriteElementString("desc", point.Description); if (point.Source != null && point.Source != "") WriteElementString("src", point.Source); if (point.Link != null && point.Link != "") WriteElementString("link", point.Link); if (point.Symmetry != null && point.Symmetry != "") WriteElementString("sym", point.Symmetry); if (point.Fix != null) WriteElementString("fix", point.Fix.ToString()); if (point.SatteliteNum != null) WriteElementString("sat", point.SatteliteNum.ToString()); if (point.HDOP != null) WriteElementString("hdop", point.HDOP.ToString()); if (point.VDOP != null) WriteElementString("vdop", point.VDOP.ToString()); if (point.PDOP != null) WriteElementString("pdop", point.PDOP.ToString()); if (point.AgeOfData != null) WriteElementString("ageofdata", point.AgeOfData.ToString()); if (point.DGpsId != null && point.DGpsId != "") WriteElementString("dgpsid", point.DGpsId); WriteGpxExtensions(point.Extensions); WriteEndElement(); } }
public void AddPoint(GpxPoint point) { if(point != null) _Waypoints.Add(point); }