コード例 #1
0
        private void CalculateDownloadSize(Poi poi)
        {
            string text = "";
            bool   enableDownloadButton = false;

            if (poi?.Id >= (long)PoiId.FIRST_VALID_ID || poi?.Id == (long)PoiId.CURRENT_LOCATION)
            {
                float size;
                var   newDistance = GetDownloadDistance();
                if (_oldDedItem == null || newDistance > _oldDedItem.Distance)
                {
                    var gpsLocation = new GpsLocation(poi.Longitude, poi.Latitude, poi.Altitude);
                    var etc         = new ElevationTileCollection(gpsLocation, newDistance);

                    size = etc.GetSizeToDownload();
                    text = String.Format(Resources.GetText(Resource.String.DownloadED_ExpectedSizeDownload), $"{size:F1}");
                    enableDownloadButton = true;
                }
                else if (newDistance < _oldDedItem.Distance)
                {
                    var location               = new GpsLocation(_oldDedItem.Longitude, _oldDedItem.Latitude, 0);
                    var tilesToBeRemovedAll    = ElevationTileCollection.GetTilesForRemoval(location, _oldDedItem.Distance, newDistance);
                    var tilesToBeRemovedUnique = ElevationTileCollection.GetUniqueTilesForRemoval(_oldDedItem.Id, _allElevationData, tilesToBeRemovedAll);

                    size = tilesToBeRemovedUnique.GetSize() / 1024f / 1024f;
                    text = String.Format(Resources.GetText(Resource.String.DownloadED_ExpectedSizeRemove), $"{size:F1}");
                    enableDownloadButton = true;
                }
            }

            FindViewById <TextView>(Resource.Id.textViewDownloadSize).Text = text;
            FindViewById <Button>(Resource.Id.buttonSave).Enabled          = enableDownloadButton;
        }
コード例 #2
0
        private void DeleteElevationTiles(DownloadedElevationData ded)
        {
            var dedTiles = new ElevationTileCollection(new GpsLocation(ded.Longitude, ded.Latitude, 0), ded.Distance);

            Task.Run(async() =>
            {
                var downloadedElevationData = await AppContext.Database.GetDownloadedElevationDataAsync();
                var tilesToBeRemoved        = ElevationTileCollection.GetUniqueTilesForRemoval(ded.Id, downloadedElevationData, dedTiles);
                tilesToBeRemoved.Remove();
            });
        }
コード例 #3
0
        private void RemoveElevationData(DownloadedElevationData ded, int oldDedDistance)
        {
            var location               = new GpsLocation(ded.Longitude, ded.Latitude, 0);
            var tilesToBeRemovedAll    = ElevationTileCollection.GetTilesForRemoval(location, oldDedDistance, ded.Distance);
            var tilesToBeRemovedUnique = ElevationTileCollection.GetUniqueTilesForRemoval(ded.Id, _allElevationData, tilesToBeRemovedAll);

            tilesToBeRemovedUnique.Remove();

            var edd = new ElevationDataDownload(new GpsLocation(ded.Longitude, ded.Latitude, 0), ded.Distance);

            ded.SizeInBytes = edd.GetSize();
            AppContext.DownloadedElevationDataModel.UpdateItem(ded);
            Finish();
        }
コード例 #4
0
        protected override bool RunInBackground(params string[] @command)
        {
            try
            {
                OnStageChange?.Invoke(Resource.String.Download_Progress_FetchingElevationTilesList, 1);
                var file = GpxFileProvider.GetFile(GpxFileProvider.GetUrl(_source.Url));
                OnProgressChange?.Invoke(1);
                var elevationMap = JsonConvert.DeserializeObject <ElevationMap>(file);

                _elevationTileCollection = new ElevationTileCollection(elevationMap);

                if (@command[0] == COMMAND_DOWNLOAD)
                {
                    OnStageChange?.Invoke(Resource.String.Download_Progress_DownloadingElevationData, _elevationTileCollection.GetCountToDownload());
                    if (!_elevationTileCollection.Download(progress => { OnProgressChange(progress); }))
                    {
                        OnError?.Invoke(_elevationTileCollection.GetErrorList());
                        return(false);
                    }

                    return(true);
                }

                if (@command[0] == COMMAND_REMOVE)
                {
                    OnStageChange?.Invoke(Resource.String.Download_Progress_RemovingElevationData, 1);
                    return(_elevationTileCollection.Remove());
                }

                return(false);
            }
            catch (Exception ex)
            {
                OnError?.Invoke(ExceptionHelper.Exception2ErrorMessage(ex));
                return(false);
            }
        }
コード例 #5
0
ファイル: SkyLine.cs プロジェクト: lukinfx/Horizont_Final
        public void CalculateProfile()
        {
            GpsUtils.BoundingRect(_myLocation, _visibility * 1000, out var min, out var max);

            _data = new List <GpsLocation>();
            string inputFileName = @"c:\Temp\ElevationMap\ALPSMLC30_N049E018_DSM.tif";

            GeoTiffReaderList.ReadTiff(inputFileName, min, max, _myLocation, 3, _data);

            //Calculate old profile

            /*ElevationProfile ep = new ElevationProfile();
             * ep.GenerateElevationProfile(_myLocation, _visibility, _data, progress => { });
             * elevationProfileOld = ep.GetProfile();*/

            //Calucate new profile

            var etc = new ElevationTileCollection(_myLocation, (int)_visibility);
            var d   = etc.GetSizeToDownload();

            etc.Download(progress => { });
            etc.Read(progress => { });
            profileGenerator.Generate(_myLocation, 12, etc, progress => { });

            /*ProfileGeneratorOld ep2 = new ProfileGeneratorOld();
             * //ep2.GenerateElevationProfile3(_myLocation, _visibility, _data, progress => { });
             * ep2.GenerateElevationProfile3(_myLocation, _visibility, elevationPainter3.list, progress => { });
             * elevationProfileNew = ep2.GetProfile();*/

            ElevationProfile ep3 = new ElevationProfile();

            ep3.GenerateElevationProfile3(_myLocation, _visibility, profileGenerator.GetProfile(), progress => { });
            elevationProfileNew = ep3.GetProfile();

            Invalidate();
        }
コード例 #6
0
 public ElevationCalculation(GpsLocation myLocation, int maxDistance)
 {
     MyLocation  = myLocation;
     MaxDistance = maxDistance;
     _elevationTileCollection = new ElevationTileCollection(MyLocation, (int)MaxDistance);
 }
コード例 #7
0
 public ElevationDataDownload(GpsLocation myLocation, int maxDistance)
 {
     MyLocation  = myLocation;
     MaxDistance = maxDistance;
     _elevationTileCollection = new ElevationTileCollection(MyLocation, (int)MaxDistance);
 }