コード例 #1
0
        public async Task GenerateTmsTilesByCropping()
        {
            DirectoryInfo examplesDirectoryInfo = Helpers.TestHelper.GetExamplesDirectoryInfo();

            DirectoryInfo tempDirectoryInfo =
                new DirectoryInfo(Path.Combine(Helpers.TestHelper.GetExamplesDirectoryInfo().FullName,
                                               Enums.FileSystemEntries.Temp,
                                               DateTime.Now.ToString(Core.Enums.DateTimePatterns.LongWithMs)));

            string inputFilePath = Path.Combine(examplesDirectoryInfo.FullName,
                                                Enums.FileSystemEntries.InputDirectoryName,
                                                $"{Enums.FileSystemEntries.Input4326}{Core.Enums.Extensions.Tif}");
            string outputDirectoryName = Path.Combine(examplesDirectoryInfo.FullName,
                                                      Enums.FileSystemEntries.TmsCompatible,
                                                      Enums.FileSystemEntries
                                                      .GenerateTilesByCroppingOutputDirectoryName);

            FileInfo           inputFileInfo       = new FileInfo(inputFilePath);
            DirectoryInfo      outputDirectoryInfo = new DirectoryInfo(outputDirectoryName);
            IProgress <double> progress            = new Progress <double>(Console.WriteLine);
            const bool         tmsCompatible       = true;

            try
            {
                //Check for errors.
                Core.Helpers.CheckHelper.CheckDirectory(outputDirectoryInfo, true);

                if (!await Core.Helpers.CheckHelper.CheckInputFile(inputFileInfo))
                {
                    string tempFilePath = Path.Combine(tempDirectoryInfo.FullName,
                                                       $"{Core.Enums.Image.Gdal.TempFileName}{Core.Enums.Extensions.Tif}");
                    FileInfo tempFileInfo = new FileInfo(tempFilePath);

                    await Core.Image.Gdal.Warp(inputFileInfo, tempFileInfo, Core.Enums.Image.Gdal.RepairTifOptions);

                    inputFileInfo = tempFileInfo;
                }

                //Create Image object and crop tiles.
                Core.Image.Image image        = new Core.Image.Image(inputFileInfo);
                const int        minZ         = Enums.Zooms.MinZ;
                const int        maxZ         = Enums.Zooms.MaxZ;
                const int        threadsCount = Enums.Multithreading.ThreadsCount;
                await image.GenerateTilesByCropping(outputDirectoryInfo, minZ, maxZ, tmsCompatible, progress,
                                                    threadsCount);
            }
            catch (Exception exception) { Assert.Fail(exception.Message); }

            Assert.Pass();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: DaveCS1/GTiff2Tiles
        private static async Task Main(string[] args)
        {
            Stopwatch stopwatch = Stopwatch.StartNew();

            try
            {
                Parser.Default.ParseArguments <Options>(args).WithParsed(ParseConsoleOptions)
                .WithNotParsed(error => IsParsingErrors = true);
            }
            catch (Exception exception)
            {
                //Catch some uncaught parsing errors.
                Helpers.ErrorHelper.PrintException(exception);

                return;
            }

            if (IsParsingErrors)
            {
                Helpers.ErrorHelper.PrintError(Strings.ParsingError);

                return;
            }

            //Create progress-reporter.
            ConsoleProgress <double> consoleProgress = new ConsoleProgress <double>(System.Console.WriteLine);

            //Create temp directory object.
            string tempDirectoryPath = Path.Combine(TempDirectoryInfo.FullName,
                                                    DateTime.Now.ToString(Core.Enums.DateTimePatterns.LongWithMs));

            TempDirectoryInfo = new DirectoryInfo(tempDirectoryPath);

            //Run tiling asynchroniously.
            try
            {
                //Check for errors.
                Core.Helpers.CheckHelper.CheckDirectory(OutputDirectoryInfo, true);

                if (!await Core.Helpers.CheckHelper.CheckInputFile(InputFileInfo).ConfigureAwait(false))
                {
                    string tempFilePath = Path.Combine(TempDirectoryInfo.FullName,
                                                       $"{Core.Enums.Image.Gdal.TempFileName}{Core.Enums.Extensions.Tif}");
                    FileInfo tempFileInfo = new FileInfo(tempFilePath);

                    await Core.Image.Gdal.Warp(InputFileInfo, tempFileInfo, Core.Enums.Image.Gdal.RepairTifOptions)
                    .ConfigureAwait(false);

                    InputFileInfo = tempFileInfo;
                }

                //Create image object.
                Core.Image.Image inputImage = new Core.Image.Image(InputFileInfo);

                //Switch on algorithm.
                switch (Algorithm)
                {
                case Core.Enums.Algorithms.Join:
                    await inputImage
                    .GenerateTilesByJoining(OutputDirectoryInfo, MinZ, MaxZ, TmsCompatible, consoleProgress,
                                            ThreadsCount).ConfigureAwait(false);

                    break;

                case Core.Enums.Algorithms.Crop:
                    await inputImage
                    .GenerateTilesByCropping(OutputDirectoryInfo, MinZ, MaxZ, TmsCompatible, consoleProgress,
                                             ThreadsCount).ConfigureAwait(false);

                    break;

                default:
                    Helpers.ErrorHelper.PrintError(Strings.AlgorithmNotSupported);

                    return;
                }
            }
            catch (Exception exception)
            {
                Helpers.ErrorHelper.PrintException(exception);

                return;
            }

            stopwatch.Stop();
            System.Console.WriteLine(Strings.Done, Environment.NewLine, stopwatch.Elapsed.Days, stopwatch.Elapsed.Hours,
                                     stopwatch.Elapsed.Minutes, stopwatch.Elapsed.Seconds,
                                     stopwatch.Elapsed.Milliseconds);
            #if DEBUG
            System.Console.WriteLine(Strings.PressAnyKey);
            System.Console.ReadKey();
            #endif
        }