コード例 #1
0
ファイル: SkyLine.cs プロジェクト: lukinfx/Horizont_Final
        public SkyLine()
        {
            //od radhoste po ropici

            /*double filterLatMin = 49.5250019;
            *  double filterLonMin = 18.3123825;
            *  double filterLatMax = 49.6626678;
            *  double filterLonMax = 18.5808428;*/

            //odnrejnik smrk a lysa
            double filterLatMin = 49.5248986;
            double filterLonMin = 18.2617339;
            double filterLatMax = 49.5946578;
            double filterLonMax = 18.5352992;

            profileGenerator = new ElevationDataGenerator();
        }
コード例 #2
0
        protected override ElevationProfileData RunInBackground(params GpsLocation[] @params)
        {
            try
            {
                var parts = new List <Part>
                {
                    new Part()
                    {
                        Title = "DownloadTile", TimeComplexity = 50, Count = _elevationTileCollection.GetCountToDownload()
                    },
                    new Part()
                    {
                        Title = "ReadTile", TimeComplexity = 10, Count = _elevationTileCollection.GetCount()
                    },
                    new Part()
                    {
                        Title = "Generate", TimeComplexity = 1, Count = 360
                    },
                    new Part()
                    {
                        Title = "MakeLines", TimeComplexity = 1, Count = 360
                    }
                };

                float totalTimeComplexity = parts.Select(x => x.Count * x.TimeComplexity).Aggregate((sum, part) => sum + part);
                int   totalProgress       = 0;

                var downloadingOk = _elevationTileCollection.Download(progress =>
                {
                    var localProgress = progress * parts[0].TimeComplexity;
                    OnProgressChange?.Invoke((int)((totalProgress + localProgress) / totalTimeComplexity * 100f));
                });
                totalProgress += parts[0].Count * parts[0].TimeComplexity;

                var readingOk = _elevationTileCollection.Read(progress =>
                {
                    var localProgress = progress * parts[1].TimeComplexity;
                    OnProgressChange?.Invoke((int)((totalProgress + localProgress) / totalTimeComplexity * 100f));
                });
                totalProgress += parts[1].Count * parts[1].TimeComplexity;

                ElevationDataGenerator ep = new ElevationDataGenerator();
                ep.Generate(MyLocation, MaxDistance, _elevationTileCollection, progress =>
                {
                    var localProgress = progress * parts[2].TimeComplexity;
                    OnProgressChange?.Invoke((int)((totalProgress + localProgress) / totalTimeComplexity * 100f));
                });
                totalProgress += parts[2].Count * parts[2].TimeComplexity;


                ElevationProfile ep2 = new ElevationProfile();
                ep2.GenerateElevationProfile3(MyLocation, MaxDistance, ep.GetProfile(), progress =>
                {
                    var localProgress = progress * parts[3].TimeComplexity;
                    OnProgressChange?.Invoke((int)((totalProgress + localProgress) / totalTimeComplexity * 100f));
                });
                totalProgress += parts[3].Count * parts[3].TimeComplexity;

                var epd = ep2.GetProfile();

                if (!downloadingOk || !readingOk)
                {
                    epd.ErrorMessage = _elevationTileCollection.GetErrorList();
                }

                return(epd);
            }
            catch (Exception ex)
            {
                return(new ElevationProfileData(ExceptionHelper.Exception2ErrorMessage(ex)));
            }
        }