From ee633a7027043b83d8e5dc2fdbc41e6884700dea Mon Sep 17 00:00:00 2001 From: bartjuhhh <bart.knuiman@wur.nl> Date: Wed, 11 Oct 2023 16:45:41 +0200 Subject: [PATCH] Added tree cacher, should have all tree files now. :-) --- TreeCacher/Program.cs | 70 ++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/TreeCacher/Program.cs b/TreeCacher/Program.cs index 66a88da..cea029a 100644 --- a/TreeCacher/Program.cs +++ b/TreeCacher/Program.cs @@ -1,5 +1,6 @@ using System.Numerics; using Wander; +using static System.Net.Mime.MediaTypeNames; while (true) @@ -31,7 +32,6 @@ public class TreeCacher public int numAttempts; public int x; public int y; - public string filepath; public float dist; public int dx; public int dy; @@ -39,9 +39,11 @@ public class TreeCacher public string folder; + public string invalidFolder; public int numImages; public int numImagesFinished; public int numImagesFailed; + public int numImagesInvalid; public List<string> errorCodes; public double lat = 52.282842; @@ -79,16 +81,25 @@ public class TreeCacher internal void Run() { - folder = Environment.CurrentDirectory.Combine( "Trees" ); + folder = Environment.CurrentDirectory.Combine( "Trees" ).NormalizePath(); if (!Directory.Exists( folder )) + { Directory.CreateDirectory( folder ); + } + invalidFolder = Environment.CurrentDirectory.Combine( "Trees/Invalid" ).NormalizePath(); + if (!Directory.Exists( invalidFolder )) + { + Directory.CreateDirectory( invalidFolder ); + } treeRequests = null; numImages = 0; numImagesFailed = 0; numImagesFinished = 0; + numImagesInvalid = 0; client = new HttpClient(); activeRequests = new List<TreeImageTile>(); treeRequests = new List<TreeImageTile>(); + errorCodes = new List<string>(); CreateRequests(); while ( true ) { @@ -113,7 +124,6 @@ public class TreeCacher var image = new TreeImageTile(); image.x = cx -numTilesWide/2 + x; image.y = cy +numTilesTall/2 - y; - image.filepath = folder.Combine( $"tree_{zoom}_{image.x}_{image.y}.png" ).NormalizePath(); treeRequests.Add( image ); } } @@ -130,20 +140,12 @@ public class TreeCacher { return MathF.Sign( b.dist-a.dist ); } ); - - - int count = Math.Min(numSimultanousDownloads, treeRequests.Count); - for (int i = 0; i<count;i++) - { - activeRequests.Add( treeRequests[treeRequests.Count-1] ); - treeRequests.RemoveAt( treeRequests.Count-1 ); - } - + } void DownloadAndStoreImages() { - if (activeRequests == null || activeRequests.Count==0) // Happens when switching to Debug/Release unity while running. + if (activeRequests == null) // Happens when switching to Debug/Release unity while running. { return; } @@ -166,14 +168,24 @@ public class TreeCacher { var data = web.Result.Content.ReadAsByteArrayAsync(); await data; + var filename = $"tree_{tt.zoom}_{tree.x}_{tree.y}.png"; if (data.Result.Length>2300) // otherwise so little pixel info, is empty or no tree found { - await File.WriteAllBytesAsync( tree.filepath, data.Result ); + filename = folder.Combine( filename ).NormalizePath(); + await File.WriteAllBytesAsync( filename, data.Result ); tt.numImagesFinished++; - Console.Clear(); - Console.WriteLine( $"numFinished: {tt.numImagesFinished}" ); - Console.WriteLine( $"numFaailed: {tt.numImagesFailed}" ); } + else + { + + filename = invalidFolder.Combine( filename ).NormalizePath(); + await File.WriteAllBytesAsync( filename, data.Result ); + tt.numImagesInvalid++; + } + Console.Clear(); + Console.WriteLine( $"numFinished: {tt.numImagesFinished}" ); + Console.WriteLine( $"numInvalid: {tt.numImagesInvalid}" ); + Console.WriteLine( $"numDLFailed: {tt.numImagesFailed}" ); } ); remove = true; } @@ -196,20 +208,24 @@ public class TreeCacher activeRequests.RemoveAt( i ); i--; } + } + - if (activeRequests.Count < numSimultanousDownloads ) + if (activeRequests.Count < numSimultanousDownloads) + { + while (treeRequests.Count != 0) { - while (treeRequests.Count != 0) + var potentialNew = treeRequests[treeRequests.Count-1]; + treeRequests.RemoveAt( treeRequests.Count-1 ); + var filename = $"tree_{zoom}_{potentialNew.x}_{potentialNew.y}.png"; + var valid = folder.Combine( filename ).NormalizePath(); + var invalid = invalidFolder.Combine( filename ).NormalizePath(); + if (!File.Exists( valid ) && !File.Exists( invalid )) { - var potentialNew = treeRequests[treeRequests.Count-1]; - treeRequests.RemoveAt( treeRequests.Count-1 ); - if (!File.Exists( potentialNew.filepath )) - { - activeRequests.Add( potentialNew ); - break; - } + activeRequests.Add( potentialNew ); + break; } - } + } } } } -- GitLab