예제 #1
0
        public Tracks FromRaw(IReadOnlyList <IndexedLocation> indexedLocations, GpsTrackFilterOptions filterOptions)
        {
            var rawGeoJson = indexedLocations.ToGeoJson();
            var rawSummary = indexedLocations.ToTrackSummary();

            var directedLocations = indexedLocations.FixGpsTimestamp()
                                    .SmoothTimestamp()
                                    .ToDirectedLocations();

            var filter = new GpsTrackFilter
            {
                ModelPrecision  = filterOptions.ModelPrecision,
                OutlineSpeed    = filterOptions.OutlineSpeed,
                SensorPrecision = filterOptions.SensorPrecision,
                ZeroSpeedDrift  = filterOptions.ZeroSpeedDrift
            };

            var filteredLocations = filter.Filter(directedLocations).ToDeviceLocations();
            var filteredSummary   = filteredLocations.ToTrackSummary();
            var filteredGeoJson   = filteredLocations.ToGeoJson();

            return(new Tracks
            {
                Raw = rawGeoJson,
                RawSummary = rawSummary,
                Filtered = filteredGeoJson,
                FilteredSummary = filteredSummary
            });
        }
예제 #2
0
        public TrackService()
        {
            var filter = new GpsTrackFilter();

            DefaultFilterOptions = new GpsTrackFilterOptions
            {
                ModelPrecision  = filter.ModelPrecision,
                OutlineSpeed    = filter.OutlineSpeed,
                SensorPrecision = filter.SensorPrecision,
                ZeroSpeedDrift  = filter.ZeroSpeedDrift
            };
        }