Example #1
0
        private static List <GpxTrackSegment> readGpx(string filename)
        {
            var result = new List <GpxTrackSegment>();

            using (var input = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read))
            {
                using (GpxReader reader = new GpxReader(input))
                {
                    while (reader.Read())
                    {
                        switch (reader.ObjectType)
                        {
                        case GpxObjectType.Metadata:
                            break;

                        case GpxObjectType.WayPoint:
                            break;

                        case GpxObjectType.Route:
                            break;

                        case GpxObjectType.Track:
                            result.AddRange(reader.Track.Segments);
                            break;
                        }
                    }
                }
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Read gpx file segments as enumerable GeoPoints
        /// </summary>
        /// <param name="gpxFileStream">GPX file stream</param>
        /// <returns></returns>
        public static IEnumerable <IEnumerable <T> > ReadGPX_Segments <T>(Stream gpxFileStream
                                                                          , Func <GpxTrackPoint, T> conversionFunc
                                                                          , Func <GpxRoutePoint, T> routeConversionFunc)
        {
            IEnumerable <IEnumerable <T> > segments = Enumerable.Empty <IEnumerable <T> >();

            using (GpxReader reader = new GpxReader(gpxFileStream))
            {
                while (reader.Read())
                {
                    switch (reader.ObjectType)
                    {
                    case GpxObjectType.Track:
                        GpxTrack track = reader.Track;
                        segments = segments.Concat(ConvertTrack(track, conversionFunc));
                        break;

                    case GpxObjectType.Route:
                        GpxRoute route = reader.Route;
                        segments = segments.Concat(ConvertRoute(route, routeConversionFunc));
                        break;
                    }
                }
            }
            return(segments);
        }
Example #3
0
        public static List <GpxReader.Trk> GetGpxTracks()
        {
            var xmlString = File.ReadAllText(Logic._client.Settings.GPXFile);
            var readgpx   = new GpxReader(xmlString);

            return(readgpx.Tracks);
        }
Example #4
0
        public void Read_ReadsAllEntitiesFromRealGpxFile()
        {
            MemoryStream        data   = new MemoryStream(GpxTestData.gpx_real_file);
            List <IGpxGeometry> parsed = new List <IGpxGeometry>();

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = true
            });

            IGpxGeometry geometry = null;

            while ((geometry = target.Read()) != null)
            {
                parsed.Add(geometry);
            }

            // waypoints
            Assert.Equal(3, parsed.Where(g => g.GeometryType == GpxGeometryType.Waypoint).Count());

            // routes
            Assert.Equal(2, parsed.Where(g => g.GeometryType == GpxGeometryType.Route).Count());

            // tracks
            Assert.Equal(1, parsed.Where(g => g.GeometryType == GpxGeometryType.Track).Count());
        }
Example #5
0
        private static List <GpxReader.Trk> GetGpxTracks(ISession session)
        {
            var xmlString = File.ReadAllText(session.LogicSettings.GpxFile);
            var readgpx   = new GpxReader(xmlString, session);

            return(readgpx.Tracks);
        }
Example #6
0
        /*
         * private async Task LoadAndDisplayGpxFile()
         * {
         *  var xmlString = File.ReadAllText(_clientSettings.GPXFile);
         *  var readgpx = new GpxReader(xmlString);
         *  foreach (var trk in readgpx.Tracks)
         *  {
         *      foreach (var trkseg in trk.Segments)
         *      {
         *          foreach (var trpkt in trkseg.TrackPoints)
         *          {
         *              Console.WriteLine(trpkt.ToString());
         *          }
         *      }
         *  }
         *  await Task.Delay(0);
         * }
         */

        /*
         * private GPXReader.trk GetGPXTrack(string gpxFile)
         * {
         *  string xmlString = File.ReadAllText(_clientSettings.GPXFile);
         *  GPXReader Readgpx = new GPXReader(xmlString);
         *  return Readgpx.Tracks.ElementAt(0);
         * }
         */

        private List <GpxReader.Trk> GetGpxTracks()
        {
            var xmlString = File.ReadAllText(_clientSettings.GPXFile);
            var readgpx   = new GpxReader(xmlString);

            return(readgpx.Tracks);
        }
        private void newGpxFile(string Name, string Path)
        {
            FileStream readFile  = File.Open(Path, FileMode.Open);
            FileStream writeFile = File.OpenWrite("../../Files/" + Name);

            GpxReader reader = new GpxReader(readFile);
            GpxWriter writer = new GpxWriter(writeFile);

            while (reader.Read())
            {
                switch (reader.ObjectType)
                {
                case GpxObjectType.Metadata:
                    writer.WriteMetadata(reader.Metadata);
                    break;

                case GpxObjectType.WayPoint:
                    writer.WriteWayPoint(reader.WayPoint);
                    break;

                case GpxObjectType.Route:
                    writer.WriteRoute(reader.Route);
                    break;

                case GpxObjectType.Track:
                    writer.WriteTrack(reader.Track);
                    break;
                }
            }
            readFile.Close();
            writeFile.Close();
        }
Example #8
0
        public void Read_ReadsWaypointUnsortedMetadataAndExtension()
        {
            var data = TestDataReader.Open("gpx-waypoint-with-metadata.gpx");

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = true
            });
            var result = target.Read() as GpxPoint;

            Assert.Equal(0.98, result.Metadata.MagVar);
            Assert.Equal(12.5, result.Metadata.GeoidHeight);
            Assert.Equal(GpsFix.Fix3D, result.Metadata.Fix);
            Assert.Equal(8, result.Metadata.SatellitesCount);
            Assert.Equal(5.1, result.Metadata.Hdop);
            Assert.Equal(8.1, result.Metadata.Vdop);
            Assert.Equal(10.8, result.Metadata.Pdop);
            Assert.Equal(45, result.Metadata.AgeOfDgpsData);
            Assert.Equal(124, result.Metadata.DgpsId);

            Assert.Equal("WPT Comment", result.Metadata.Comment);
            Assert.Equal("WPT Description", result.Metadata.Description);
            Assert.Equal("WPT Name", result.Metadata.Name);
            Assert.Equal("WPT Source", result.Metadata.Source);

            Assert.Equal(1, result.Metadata.Links.Count);
            GpxLink link = result.Metadata.Links.Single();

            Assert.Equal("http://www.topografix.com", link.Url.OriginalString);
            Assert.Equal("Link text", link.Text);
            Assert.Equal("plain/text", link.Type);
        }
Example #9
0
        public void Read_ReadsAllEntitiesFromRealGpxFile()
        {
            var data = TestDataReader.Open("gpx-real-file.gpx");
            List <IGpxGeometry> parsed = new List <IGpxGeometry>();

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = true
            });

            IGpxGeometry geometry = null;

            while ((geometry = target.Read()) != null)
            {
                parsed.Add(geometry);
            }

            // waypoints
            Assert.Equal(3, parsed.Where(g => g.GeometryType == GpxGeometryType.Waypoint).Count());

            // routes
            Assert.Equal(2, parsed.Where(g => g.GeometryType == GpxGeometryType.Route).Count());

            // tracks
            Assert.Single(parsed.Where(g => g.GeometryType == GpxGeometryType.Track));
        }
Example #10
0
        public static void ReadGPX(string fileName)
        {
            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            {
                using (GpxReader reader = new GpxReader(fs))
                {
                    while (reader.Read())
                    {
                        switch (reader.ObjectType)
                        {
                        case GpxObjectType.Metadata:
                            GpxMetadata metadata = reader.Metadata;
                            Logger.Info("Metadata");
                            break;

                        case GpxObjectType.WayPoint:
                            GpxWayPoint waypoint = reader.WayPoint;
                            Logger.Info("WayPoint");
                            break;

                        case GpxObjectType.Route:
                            GpxRoute route = reader.Route;
                            Logger.Info("Route");
                            break;

                        case GpxObjectType.Track:
                            GpxTrack track = reader.Track;
                            Logger.Info("Track");
                            break;
                        }
                    }
                }
            }
        }
    public void Load(Stream stream)
    {
        for (int i = 0; i < 10; i++)
        {
            activitySummary[i] = new List <XmlTimeline.Activity>();
        }

        // Loop
        timelineItems.Clear();
        GpxReader gpxReader = new GpxReader(stream);

        while (gpxReader.Read())
        {
            switch (gpxReader.ObjectType)
            {
            case GpxObjectType.Metadata:
                //gpxReader.Metadata;
                break;

            case GpxObjectType.WayPoint:
                GetPlace(gpxReader.WayPoint);
                break;

            case GpxObjectType.Track:
                GetMove(gpxReader.Track);
                break;
            }
        }
        SetStartEnd();
        SetSummary();
        SetXmlDate();

        //Display();
    }
Example #12
0
        public async Task<PlayerUpdateResponse> HumanPathWalking(GpxReader.Trkpt trk,
            double walkingSpeedInKilometersPerHour, Func<Task> functionExecutedWhileWalking)
        {
            //PlayerUpdateResponse result = null;

            var targetLocation = new GeoCoordinate(Convert.ToDouble(trk.Lat), Convert.ToDouble(trk.Lon));

            var speedInMetersPerSecond = walkingSpeedInKilometersPerHour/3.6;

            var sourceLocation = new GeoCoordinate(_client.CurrentLat, _client.CurrentLng);
            var distanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);
            // Logger.Write($"Distance to target location: {distanceToTarget:0.##} meters. Will take {distanceToTarget/speedInMetersPerSecond:0.##} seconds!", LogLevel.Info);

            var nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
            var nextWaypointDistance = speedInMetersPerSecond;
            var waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing,
                Convert.ToDouble(trk.Ele));

            //Initial walking

            var requestSendDateTime = DateTime.Now;
            var result =
                await
                    _client.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude, waypoint.Altitude);

            do
            {
                var millisecondsUntilGetUpdatePlayerLocationResponse =
                    (DateTime.Now - requestSendDateTime).TotalMilliseconds;

                sourceLocation = new GeoCoordinate(_client.CurrentLat, _client.CurrentLng);
                var currentDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);

                //if (currentDistanceToTarget < 40)
                //{
                //    if (speedInMetersPerSecond > SpeedDownTo)
                //    {
                //        //Logger.Write("We are within 40 meters of the target. Speeding down to 10 km/h to not pass the target.", LogLevel.Info);
                //        speedInMetersPerSecond = SpeedDownTo;
                //    }
                //}

                nextWaypointDistance = Math.Min(currentDistanceToTarget,
                    millisecondsUntilGetUpdatePlayerLocationResponse/1000*speedInMetersPerSecond);
                nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
                waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing);

                requestSendDateTime = DateTime.Now;
                result =
                    await
                        _client.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
                            waypoint.Altitude);
                if (functionExecutedWhileWalking != null)
                    await functionExecutedWhileWalking(); // look for pokemon
                await Task.Delay(Math.Min((int) (distanceToTarget/speedInMetersPerSecond*1000), 3000));
            } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation) >= 30);

            return result;
        }
Example #13
0
        public void Read_ThrowsExceptionIfWaypointHasntLon()
        {
            GpxReader target = new GpxReader(TestDataReader.Open("gpx-waypoint-without-lon.gpx"), new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            Assert.Throws <InvalidDataException>(() => target.Read());
        }
Example #14
0
        private static void Main(string[] args)
        {
            IGpxReader gpxReader = new GpxReader();
            IKmlWriter kmlWriter = new KmlWriter();
            ICommandLineParserService commandLineParserService = new CommandLineParserService();
            IGpxToKmlConverter        gpxToKmlConverter        = new GpxToKmlConverter(commandLineParserService, gpxReader, kmlWriter);

            gpxToKmlConverter.Run(args);
        }
Example #15
0
        public void Read_ThrowsExceptionIfWaypointHasntLon()
        {
            GpxReader target = new GpxReader(new MemoryStream(GpxTestData.gpx_waypoint_without_lon), new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            Assert.Throws <InvalidDataException>(() => target.Read());
        }
Example #16
0
        public void Read_ParsesEmptyRoute()
        {
            var       data   = TestDataReader.Open("gpx-route-empty.gpx");
            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Empty(result.Points);
        }
Example #17
0
        public void Constructor_StreamSettings_SetsSettingsAndMakesItReadOnly()
        {
            var settings = new GpxReaderSettings()
            {
                ReadMetadata = false
            };

            using (var target = new GpxReader(TestDataReader.Open("gpx-real-file.gpx"), settings)) {
                Assert.Same(settings, target.Settings);
                Assert.True(settings.IsReadOnly);
            }
        }
Example #18
0
        public void Read_ParsesEmptyTrack()
        {
            var data = TestDataReader.Open("gpx-track-empty.gpx");

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });
            var result = target.Read() as GpxTrack;

            Assert.Empty(result.Geometries);
        }
Example #19
0
        public void Read_ParsesSingleRouteWithExtensions()
        {
            MemoryStream data   = new MemoryStream(GpxTestData.gpx_route_with_metadata_and_extensions);
            GpxReader    target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Equal(3, result.Points.Count);
        }
Example #20
0
        public void Read_SetsRouteMetadataToNullIfReadMetadataIsFalse()
        {
            var       data   = TestDataReader.Open("gpx-route-with-metadata.gpx");
            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Null(result.Metadata);
        }
Example #21
0
        public void Read_ParsesEmptyTrack()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_empty);

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });
            var result = target.Read() as GpxTrack;

            Assert.Equal(0, result.Geometries.Count);
        }
Example #22
0
        public void Read_SetsRouteMetadataToNullIfReadMetadataIsFalse()
        {
            MemoryStream data   = new MemoryStream(GpxTestData.gpx_route_with_metadata);
            GpxReader    target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Null(result.Metadata);
        }
Example #23
0
        public void Constructor_StreamSettings_SetsSettingsAndMakesItReadOnly()
        {
            var settings = new GpxReaderSettings()
            {
                ReadMetadata = false
            };

            using (var target = new GpxReader(new MemoryStream(GpxTestData.gpx_real_file), settings)) {
                Assert.Same(settings, target.Settings);
                Assert.True(settings.IsReadOnly);
            }
        }
Example #24
0
        public void Read_ParsesSingleRouteWithExtensions()
        {
            var       data   = TestDataReader.Open("gpx-route-with-metadata-and-extensions.gpx");
            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Equal(3, result.Points.Count);
        }
Example #25
0
        public void Read_ParsesEmptyRoute()
        {
            MemoryStream data   = new MemoryStream(GpxTestData.gpx_route_empty);
            GpxReader    target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            var result = target.Read() as GpxRoute;

            Assert.Equal(0, result.Points.Count);
        }
Example #26
0
        public void Read_ParsesTrackWithEmptySegment()
        {
            var data = TestDataReader.Open("gpx-track-empty-track-segment.gpx");

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });
            var result = target.Read() as GpxTrack;

            Assert.Single(result.Geometries);
            Assert.Empty(result.Geometries[0].Points);
        }
Example #27
0
        public void Read_DoesntSetMetadataIfReadMetadataIsFalse()
        {
            var data = TestDataReader.Open("gpx-waypoint-with-metadata.gpx");
            var expectedCoordinate = new Coordinate(-71.119277, 42.438878);

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = false
            });
            var result = target.Read() as GpxPoint;

            Assert.Null(result.Metadata);
        }
Example #28
0
        public void Dispose_ClosesOutputStreamIfWritingToStream()
        {
            var stream = new MemoryStream(GpxTestData.gpx_real_file);

            var target = new GpxReader(stream, new GpxReaderSettings()
            {
                ReadMetadata = false
            });

            target.Dispose();

            Assert.False(stream.CanRead);
        }
Example #29
0
        /// <summary>
        /// Loads Gpx data from a file.
        /// </summary>
        /// <param name="path">Path to the GPX file.</param>
        /// <returns>GpxDocument instance with data from GPX file</returns>
        public static GpxDocument Load(string path)
        {
            GpxDocument result = new GpxDocument();

            using (GpxReader reader = new GpxReader(path, new GpxReaderSettings()
            {
                ReadMetadata = true
            })) {
                result.LoadFromReader(reader);
            }

            return(result);
        }
Example #30
0
        public void Constructor_StringSettings_SetsSettingsAndMakesItReadOnly()
        {
            string path     = "../../../Data/Gpx/gpx-real-file.gpx";
            var    settings = new GpxReaderSettings()
            {
                ReadMetadata = false
            };

            using (var target = new GpxReader(path, settings)) {
                Assert.Same(settings, target.Settings);
                Assert.True(settings.IsReadOnly);
            }
        }
Example #31
0
        public void Read_SetsMetadataIfReadMetadataIsTrue()
        {
            var data = TestDataReader.Open("gpx-waypoint-simple.gpx");
            var expectedCoordinate = new Coordinate(-71.119277, 42.438878);

            GpxReader target = new GpxReader(data, new GpxReaderSettings()
            {
                ReadMetadata = true
            });
            var result = target.Read() as GpxPoint;

            Assert.NotNull(result.Metadata);
        }
Example #32
0
 private static List<GpxReader.Trk> GetGpxTracks(ISession session)
 {
     var xmlString = File.ReadAllText(session.LogicSettings.GpxFile);
     var readgpx = new GpxReader(xmlString, session);
     return readgpx.Tracks;
 }
 private static List<GpxReader.Trk> GetGpxTracks(Context ctx)
 {
     var xmlString = File.ReadAllText(ctx.LogicSettings.GpxFile);
     var readgpx = new GpxReader(xmlString, ctx);
     return readgpx.Tracks;
 }
Example #34
0
        public async Task<PlayerUpdateResponse> HumanPathWalking(GpxReader.Trkpt trk,
            double walkingSpeedInKilometersPerHour, Action functionExecutedWhileWalking)
        {
            //PlayerUpdateResponse result = null;

            var targetLocation = new GeoCoordinate(Convert.ToDouble(trk.Lat, CultureInfo.InvariantCulture), Convert.ToDouble(trk.Lon, CultureInfo.InvariantCulture));

            var speedInMetersPerSecond = walkingSpeedInKilometersPerHour / 3.6;

            var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
            var distanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);
            // Logger.Write($"Distance to target location: {distanceToTarget:0.##} meters. Will take {distanceToTarget/speedInMetersPerSecond:0.##} seconds!", LogLevel.Info);

            var nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
            var nextWaypointDistance = speedInMetersPerSecond;
            var waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing,
                Convert.ToDouble(trk.Ele, CultureInfo.InvariantCulture));

            //Initial walking

            var requestSendDateTime = DateTime.Now;
            PlayerUpdateResponse result;
            await _player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude, waypoint.Altitude);

            do
            {
                var millisecondsUntilGetUpdatePlayerLocationResponse =
                    (DateTime.Now - requestSendDateTime).TotalMilliseconds;

                sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
                var currentDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);

                nextWaypointDistance = Math.Min(currentDistanceToTarget,
                    millisecondsUntilGetUpdatePlayerLocationResponse / 1000 * speedInMetersPerSecond);
                nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
                waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing);

                requestSendDateTime = DateTime.Now;
                result =
                    await
                        _player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
                            waypoint.Altitude);

                functionExecutedWhileWalking?.Invoke(); // look for pokemon & hit stops

                await Task.Delay(Math.Min((int)(distanceToTarget / speedInMetersPerSecond * 1000), 3000));
            } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation) >= 30);

            return result;
        }
Example #35
0
        /*
        private async Task LoadAndDisplayGpxFile()
        {
            var xmlString = File.ReadAllText(_clientSettings.GPXFile);
            var readgpx = new GpxReader(xmlString);
            foreach (var trk in readgpx.Tracks)
            {
                foreach (var trkseg in trk.Segments)
                {
                    foreach (var trpkt in trkseg.TrackPoints)
                    {
                        Console.WriteLine(trpkt.ToString());
                    }
                }
            }
            await Task.Delay(0);
        }
        */

        /*
        private GPXReader.trk GetGPXTrack(string gpxFile)
        {
            string xmlString = File.ReadAllText(_clientSettings.GPXFile);
            GPXReader Readgpx = new GPXReader(xmlString);
            return Readgpx.Tracks.ElementAt(0);
        }
        */

        private List<GpxReader.Trk> GetGpxTracks()
        {
            var xmlString = File.ReadAllText(_clientSettings.GPXFile);
            var readgpx = new GpxReader(xmlString);
            return readgpx.Tracks;
        }