Exemplo n.º 1
0
        private TrackPointItem GetLocData(string trkptXml)
        {
            string lon = string.Empty;
            string lat = string.Empty;
            string sEle = string.Empty;
            string sTime = string.Empty;
            string sSpeed = string.Empty;

            using (System.Xml.XmlReader xr = System.Xml.XmlReader.Create(new System.IO.StringReader(trkptXml)))
            {
                while (xr.Read())
                {
                    switch (xr.NodeType)
                    {
                        case System.Xml.XmlNodeType.Element:
                            if (0 == string.Compare(xr.Name, "ele", true))
                            {
                                sEle = xr.ReadString();
                            }
                            else if (0 == string.Compare(xr.Name, "time", true))
                            {
                                sTime = xr.ReadString();
                            }
                            else if (0 == string.Compare(xr.Name, "speed", true))
                            {
                                sSpeed = xr.ReadString();
                            }
                            else if (0 == string.Compare(xr.Name, "trkpt", true))
                            {
                                lon = xr.GetAttribute("lon");
                                lat = xr.GetAttribute("lat");

                            }
                            break;
                    }
                }
            }

            TrackPointItem trkPt = new TrackPointItem(lon, lat, DateTime.Parse(sTime));
            trkPt.Speed = sSpeed;
            trkPt.Ele = sEle;

            return trkPt;
        }
Exemplo n.º 2
0
        /// <summary>
        /// GPXファイルの読み込み
        /// </summary>
        /// <param name="filePath">GPXファイルのパス</param>
        /// <returns>PGXから読み込んだ座標情報リスト</returns>
        private static List<TrackPointItem> LoadGpxFile(string filePath)
        {
            List<TrackPointItem> trkPtList = new List<TrackPointItem>();

            using (System.Xml.XmlReader xr = System.Xml.XmlReader.Create(new System.IO.StreamReader(filePath)))
            {
                while (xr.Read())
                {
                    switch (xr.NodeType)
                    {
                        case System.Xml.XmlNodeType.Element:
                            if (0 == string.Compare(xr.Name, "trkpt", true))
                            {
                                if (!xr.IsEmptyElement)
                                {
                                    string lon = xr.GetAttribute("lon");
                                    string lat = xr.GetAttribute("lat");

                                    string sEle = string.Empty;
                                    string sTime = string.Empty;
                                    string sSpeed = string.Empty;

                                    while( xr.Read())
                                    {
                                        switch( xr.NodeType)
                                        {
                                            case System.Xml.XmlNodeType.Element:
                                                if (0 == string.Compare(xr.Name, "ele", true))
                                                {
                                                    sEle = xr.ReadString();
                                                }
                                                else if (0 == string.Compare(xr.Name, "time", true))
                                                {
                                                    sTime = xr.ReadString();
                                                }
                                                else if (0 == string.Compare(xr.Name, "speed", true))
                                                {
                                                    sSpeed = xr.ReadString();
                                                }
                                                else
                                                {
                                                    if( !xr.IsEmptyElement)
                                                    {
                                                        while (xr.Read())
                                                            if (xr.NodeType == System.Xml.XmlNodeType.EndElement) break;
                                                    }
                                                }
                                                continue;

                                            case System.Xml.XmlNodeType.EndElement:
                                                break;

                                            default:
                                                continue;
                                        }
                                        break;
                                    }

                                    DateTime dt;
                                    if (DateTime.TryParse(sTime, out dt))
                                    {
                                        TrackPointItem item = new TrackPointItem(lon, lat, dt);
                                        item.Speed = sSpeed;
                                        item.Ele = sEle;
                                        trkPtList.Add(item);
                                    }
                                }
                            }
                            break;
                    }
                }
            }

            return trkPtList;
        }