private GpxRoutePoint ReadGpxRoutePoint() { string elementName = reader.Name; bool isEmptyElement = reader.IsEmptyElement; GpxRoutePoint routePoint = new GpxRoutePoint(); GetPointLocation(routePoint); if (isEmptyElement) { return(routePoint); } while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "extensions": ReadRoutePointExtensions(routePoint); break; default: if (!ProcessPointField(routePoint)) { reader.SkipElement(); } break; } break; case XmlNodeType.EndElement: if (reader.Name != elementName) { throw new FormatException(reader.Name); } return(routePoint); } } throw new FormatException(elementName); }
private void ReadRoutePointExtensions(GpxRoutePoint routePoint) { if (reader.IsEmptyElement) { return; } string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (reader.NamespaceURI == GpxNamespaces.GARMIN_EXTENSIONS_NAMESPACE) { switch (reader.LocalName) { case "RoutePointExtension": ReadGarminRoutePointExtensions(routePoint); break; default: reader.SkipElement(); break; } break; } reader.SkipElement(); break; case XmlNodeType.EndElement: if (reader.Name != elementName) { throw new FormatException(reader.Name); } return; } } throw new FormatException(elementName); }
private void WriteRoutePoint(string elementName, GpxRoutePoint routePoint) { Writer_.WriteStartElement(elementName); WritePoint(routePoint); if (routePoint.HasExtensions) { Writer_.WriteStartElement("extensions"); Writer_.WriteStartElement("RoutePointExtension", GpxNamespaces.GARMIN_EXTENSIONS_NAMESPACE); foreach (GpxPoint point in routePoint.RoutePoints) { WriteSubPoint(point); } Writer_.WriteEndElement(); Writer_.WriteEndElement(); } Writer_.WriteEndElement(); }
private void ReadGarminRoutePointExtensions(GpxRoutePoint routePoint) { if (reader.IsEmptyElement) { return; } string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.LocalName) { case "rpt": routePoint.RoutePoints.Add(ReadGarminAutoRoutePoint()); break; default: reader.SkipElement(); break; } break; case XmlNodeType.EndElement: if (reader.Name != elementName) { throw new FormatException(reader.Name); } return; } } throw new FormatException(elementName); }
private GpxRoutePoint ReadGpxRoutePoint(XmlReader reader) { GpxRoutePoint wayPoint = new GpxRoutePoint(); string elementName = reader.Name; bool isEmptyElement = reader.IsEmptyElement; while (reader.MoveToNextAttribute()) { switch (reader.Name) { case "lat": wayPoint.Latitude = double.Parse(reader.Value, CultureInfo.InvariantCulture.NumberFormat); break; case "lon": wayPoint.Longitude = double.Parse(reader.Value, CultureInfo.InvariantCulture.NumberFormat); break; } } if (isEmptyElement) return wayPoint; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "ele": wayPoint.Elevation = ReadContentAsDouble(reader); break; case "time": wayPoint.Time = ReadContentAsDateTime(reader); break; case "name": wayPoint.Name = ReadContentAsString(reader); break; case "cmt": wayPoint.Comment = ReadContentAsString(reader); break; case "desc": wayPoint.Description = ReadContentAsString(reader); break; case "src": wayPoint.Source = ReadContentAsString(reader); break; case "link": wayPoint.Links.Add(ReadGpxLink(reader)); break; case "sym": wayPoint.Symbol = ReadContentAsString(reader); break; case "type": wayPoint.Type = ReadContentAsString(reader); break; case "extensions": ReadRoutePointExtensions(reader, wayPoint); break; case "magvar": case "geoidheight": case "fix": case "sat": case "hdop": case "vdop": case "pdop": case "ageofdgpsdata": case "dgpsid": SkipElement(reader); break; default: throw new FormatException(reader.Name); } break; case XmlNodeType.EndElement: if (reader.Name != elementName) throw new FormatException(reader.Name); return wayPoint; } } throw new FormatException(elementName); }
private void ReadGarminRoutePointExtensions(XmlReader reader, GpxRoutePoint routePoint) { if (reader.IsEmptyElement) return; string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.LocalName) { case "rpt": routePoint.RoutePoints.Add(ReadGarminAutoRoutePoint(reader)); break; case "Subclass": case "Extensions": SkipElement(reader); break; default: throw new FormatException(reader.Name); } break; case XmlNodeType.EndElement: if (reader.Name != elementName) throw new FormatException(reader.Name); return; } } throw new FormatException(elementName); }
private void ReadRoutePointExtensions(XmlReader reader, GpxRoutePoint routePoint) { if (reader.IsEmptyElement) return; string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (reader.NamespaceURI == GARMIN_EXTENSIONS) { switch (reader.LocalName) { case "WaypointExtension": ReadGarminWayPointExtensions(reader, routePoint); break; case "RoutePointExtension": ReadGarminRoutePointExtensions(reader, routePoint); break; default: throw new FormatException(reader.Name); } break; } SkipElement(reader); break; case XmlNodeType.EndElement: if (reader.Name != elementName) throw new FormatException(reader.Name); return; } } throw new FormatException(elementName); }
private void ReadGarminRoutePointExtensions(GpxRoutePoint routePoint) { if (Reader_.IsEmptyElement) return; string elementName = Reader_.Name; while (Reader_.Read()) { switch (Reader_.NodeType) { case XmlNodeType.Element: switch (Reader_.LocalName) { case "rpt": routePoint.RoutePoints.Add(ReadGarminAutoRoutePoint()); break; default: SkipElement(); break; } break; case XmlNodeType.EndElement: if (Reader_.Name != elementName) throw new FormatException(Reader_.Name); return; } } throw new FormatException(elementName); }
private void ReadRoutePointExtensions(GpxRoutePoint routePoint) { if (Reader_.IsEmptyElement) return; string elementName = Reader_.Name; while (Reader_.Read()) { switch (Reader_.NodeType) { case XmlNodeType.Element: if (Reader_.NamespaceURI == GpxNamespaces.GARMIN_EXTENSIONS_NAMESPACE) { switch (Reader_.LocalName) { case "RoutePointExtension": ReadGarminRoutePointExtensions(routePoint); break; default: SkipElement(); break; } break; } SkipElement(); break; case XmlNodeType.EndElement: if (Reader_.Name != elementName) throw new FormatException(Reader_.Name); return; } } throw new FormatException(elementName); }
private GpxRoutePoint ReadGpxRoutePoint() { string elementName = Reader_.Name; bool isEmptyElement = Reader_.IsEmptyElement; GpxRoutePoint routePoint = new GpxRoutePoint(); GetPointLocation(routePoint); if (isEmptyElement) return routePoint; while (Reader_.Read()) { switch (Reader_.NodeType) { case XmlNodeType.Element: switch (Reader_.Name) { case "extensions": ReadRoutePointExtensions(routePoint); break; default: if (!ProcessPointField(routePoint)) SkipElement(); break; } break; case XmlNodeType.EndElement: if (Reader_.Name != elementName) throw new FormatException(Reader_.Name); return routePoint; } } throw new FormatException(elementName); }
private void WriteRoutePoint(string elementName, GpxRoutePoint routePoint) { Writer_.WriteStartElement(elementName); WriteWayOrRoutePoint(routePoint); if (routePoint.HasWayPointExtensions || routePoint.HasRoutePointExtensions) { Writer_.WriteStartElement("extensions"); if (routePoint.HasWayPointExtensions) { Writer_.WriteStartElement("WaypointExtension", GARMIN_EXTENSIONS_NAMESPACE); if (routePoint.Address != null) WriteAddress("Address", routePoint.Address); foreach (GpxPhone phone in routePoint.Phones) { WritePhone("PhoneNumber", phone); } Writer_.WriteEndElement(); } if (routePoint.HasRoutePointExtensions) { Writer_.WriteStartElement("RoutePointExtension", GARMIN_EXTENSIONS_NAMESPACE); foreach (GpxPoint point in routePoint.RoutePoints) { WriteSubPoint("rpt", point); } Writer_.WriteEndElement(); } Writer_.WriteEndElement(); } Writer_.WriteEndElement(); }
public static GeoPoint ToGeoPoint(this GpxRoutePoint pt) { return(new GeoPoint(pt.Latitude, pt.Longitude, pt.Elevation)); }
private void WriteRoutePoint(string elementName, GpxRoutePoint routePoint) { Writer_.WriteStartElement(elementName); WritePoint(routePoint); if (routePoint.HasExtensions) { Writer_.WriteStartElement("extensions"); Writer_.WriteStartElement("RoutePointExtension", GpxNamespaces.GARMIN_EXTENSIONS_NAMESPACE); foreach (GpxPoint point in routePoint.RoutePoints) { WriteSubPoint(point); } Writer_.WriteEndElement(); Writer_.WriteEndElement(); } Writer_.WriteEndElement(); }