Ejemplo n.º 1
0
        private TrackEditModel InitEditModel(TrackEditData track)
        {
            // prepare edit model
            var model = new TrackEditModel();

            model.File  = new FileInfo(track.Source);
            model.Track = track;

            // build fake trail data
            var topoTrail = new TopoTrailInfo();
            var first     = track.Points.FirstOrDefault();
            var country   = Graffiti.Geo.NearestCountry(first);

            if (country != null)
            {
                topoTrail.Country = country;
                if (country.HasRegions)
                {
                    var region = Graffiti.Geo.NearestRegion(first);
                    if (region != null && topoTrail.Timezone == null)
                    {
                        topoTrail.Timezone = Graffiti.Geo.GuessTimezone(region);
                    }
                    topoTrail.Region = region;
                }
                if (topoTrail.Timezone == null)
                {
                    topoTrail.Timezone = Graffiti.Geo.GuessTimezone(country);
                }
            }
            if (topoTrail.Timezone == null)
            {
                topoTrail.Timezone = GeoTimezoneInfo.UTC;
            }

            // start and finish places
            var topoTrack = new TopoTrackInfo(topoTrail, track);

            topoTrack.StartPlace  = _cartoPlaceService.NearestPlace(topoTrack.StartPoint);
            topoTrack.FinishPlace = _cartoPlaceService.NearestPlace(topoTrack.FinishPoint);
            model.TopoTrack       = topoTrack;

            // discover additional places
            var bounds = GeoPerimeter.FromPoints(track.Points);

            model.NearbyPlaces    = _cartoPlaceService.ListPlacesContainingBounds(bounds);
            model.ContainedPlaces = _cartoPlaceService.ListPlacesContainedInBounds(bounds);

            // default filter values
            var filters = new TrackEditFilter();

            filters.MaximumDilution  = track.Points.Max(x => _trackEditService.GetMaxDOP(x));
            filters.MaximumVelocity  = track.Points.Max(x => x.Speed ?? 0);
            filters.MinimumSatellite = track.Points.Min(x => x.Sats ?? 0);
            model.Filters            = filters;

            return(model);
        }
Ejemplo n.º 2
0
 // ==================================================
 // Helpers
 public DateTime GetTrackDate(TrackEditData edit)
 {
     //TODO: BUG: fix this to use timezone for local time display
     //return edit.Timezone.FromUTC(edit.Points.First().Timestamp.Value);
     return(edit.Points.First().Timestamp.Value);
 }