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(); }
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 }