/// <summary> /// process ndwi image and extract streams /// </summary> static void StreamExtractionTest4LargeImage_BatchProcess() { string intputDirectoryName = @"~\StreamExtraction\output_ndwi\"; string[] files = System.IO.Directory.GetFiles(intputDirectoryName); for (int i = 0; i < files.Length; i++) { if (System.IO.Path.GetExtension(files[i]) == ".img" && files[i].Contains("normalized_ratio_blue2_nir8")) { Console.WriteLine("-------------------------------------------------"); Console.WriteLine("start process: {0}", files[i]); //process ndwi image StreamExtraction se = new StreamExtraction(files[i]); se.ProcessLargeImage1Spectral2Edge(1.25f, EdgeDetector.Canny, 20, 40, 5, 7, 500, 1.10f, 5, 10, 1.45f); Console.WriteLine("--------------------END--------------------------"); } } }
//only extract large streams static void ExtractLargeStreams(string inputFileName) { StreamExtraction se = new StreamExtraction(inputFileName); string outputFileName = (System.IO.Path.GetFileNameWithoutExtension(inputFileName).Split('-'))[0]; // string path = System.IO.Path.GetDirectoryName(inputFileName) + "\\"; string path = @"~\StreamExtraction\multioutput\watermask\"; //increase this threshold for extracting lakes ~1.55 //for streams, usually ~1.25; change for each strip float globalThreshold = 1.25f; string gt = Convert.ToString(globalThreshold).Split('.')[0] + Convert.ToString(globalThreshold).Split('.')[1]; //increase this threshold for extracting lakes, ~5000, something very large //for streams, usually ~500, change for each strip int sizeThrshold = 500; string outputLargeRiverFileName_withoutFilter = path + outputFileName + "_" + Convert.ToString(gt) + "_" + Convert.ToString(sizeThrshold) + "_watermask.img"; se.ExtractLargeStreams(globalThreshold, sizeThrshold, outputLargeRiverFileName_withoutFilter); GC.Collect(); GC.WaitForPendingFinalizers(); }