Ejemplo n.º 1
0
        static Corrida ImportaGPX(FileInfo arquivo)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(arquivo.FullName);
            XmlNode Root    = doc.DocumentElement;
            XmlNode Meta    = Root["metadata"];
            Corrida corrida = new Corrida();

            corrida.Tracks = new List <Track>();
            corrida.Inicio = DateTime.Parse(Meta["time"].InnerText);
            XmlNodeList trks = doc.GetElementsByTagName("trkpt");
            int         ct   = 0;

            foreach (XmlNode ponto in trks)
            {
                ct++;
                Track track = new Track();
                track.Id            = ct;
                track.lat           = float.Parse(ponto.Attributes["lat"].Value);
                track.lon           = float.Parse(ponto.Attributes["lon"].Value);
                track.Elevacao      = float.Parse(ponto["ele"].InnerText);
                track.Hora          = DateTime.Parse(ponto["time"].InnerText);
                track.Batimento     = int.Parse(ponto["extensions"]["ns3:TrackPointExtension"]["ns3:hr"].InnerText);
                track.CadenciaPasso = int.Parse(ponto["extensions"]["ns3:TrackPointExtension"]["ns3:cad"].InnerText);
                corrida.Tracks.Add(track);
            }

            return(corrida);
        }
Ejemplo n.º 2
0
        static Corrida ImportaTCX(FileInfo arquivo)
        {
            Corrida corrida = new Corrida();

            corrida.Tracks = new List <Track>();
            XmlDocument doc = new XmlDocument();

            doc.Load(arquivo.FullName);
            XmlNode Root = doc.DocumentElement;

            corrida.Inicio = DateTime.Parse(Root["Activities"]["Activity"]["Id"].InnerText);
            XmlNodeList trks = doc.GetElementsByTagName("Trackpoint");
            int         ct   = 0;

            foreach (XmlNode ponto in trks)
            {
                ct++;
                Track track = new Track();
                track.Id = ct;
                if (ponto["Position"] != null)
                {
                    if (float.TryParse(ponto["Position"]["LatitudeDegrees"].InnerText, NumberStyles.Any, new CultureInfo("en-US"), out float lat))
                    {
                        track.lat = lat;
                    }

                    if (float.TryParse(ponto["Position"]["LongitudeDegrees"].InnerText, NumberStyles.Any, new CultureInfo("en-US"), out float lon))
                    {
                        track.lon = lon;
                    }
                }
                if (ponto["AltitudeMeters"] != null)
                {
                    if (float.TryParse(ponto["AltitudeMeters"].InnerText, NumberStyles.Any, new CultureInfo("en-US"), out float altidute))
                    {
                        track.Elevacao = altidute;
                    }
                }

                track.Hora          = DateTime.Parse(ponto["Time"].InnerText);
                track.Batimento     = int.Parse(ponto["HeartRateBpm"]["Value"].InnerText);
                track.CadenciaPasso = int.Parse(ponto["Extensions"]["ns3:TPX"]["ns3:RunCadence"].InnerText);
                //track.Distancia = decimal.Parse(ponto["DistanceMeters"].InnerText);
                if (decimal.TryParse(ponto["DistanceMeters"].InnerText, NumberStyles.Any, new CultureInfo("en-US"), out decimal distancia))
                {
                    track.Distancia = distancia;
                }
                corrida.Tracks.Add(track);
            }


            return(corrida);
        }
Ejemplo n.º 3
0
        static void Grava(Corrida corrida)
        {
            using (var db = new DB())
            {
                if (db.Corrida.Where(predicate => predicate.Inicio == corrida.Inicio).Count() == 0)
                {
                    corrida.Tracks = corrida.Tracks.OrderBy(p => p.Hora).ToList();
                    db.Add(corrida);

                    // db.Entry(corrida).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                    // db.SaveChanges();
                    // foreach (Track track in corrida.Tracks)
                    // {
                    //     track.IdCorrida = corrida.Id;
                    //     db.Entry(track).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                    // }
                    db.SaveChanges();
                }
                else
                {
                    Console.WriteLine("Arquivo já importado");
                }
            }
        }