Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
 public static GeoPoint ToGeoPoint(this GpxRoutePoint pt)
 {
     return(new GeoPoint(pt.Latitude, pt.Longitude, pt.Elevation));
 }
Exemplo n.º 13
0
        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();
        }