public void Start(int tilesize)
        {
            Console.WriteLine("Compression Size Test For Specific Raster");

            // this is set up for erdas imagine with a spillfile.
            FileInfo f  = new FileInfo(filename);
            FileInfo f2 = new FileInfo(filename.Substring(0, filename.Length - 4) + ".ige");

            Console.WriteLine("Present Filename: " + filename);
            Console.WriteLine("Size: " + ((f.Length + f2.Length) / 1024 / 1024).ToString() + " Mb");

            GDALRead r = new GDALRead(filename);

            r.OpenFile();

            report = new Dictionary <double, TimePieces>();

            var total = Selections.Select(o => o.Value.Count).Sum();

            Console.WriteLine("Running tests for {0} selections", total);
            Console.WriteLine("Encoding for tile size: {0}", tilesize);

            int counted = 0;

            foreach (var sel in Selections)
            {
                Console.WriteLine("On Panel Start: {0}", sel.Key);

                TimePieces summary = new TimePieces();

                foreach (var l in sel.Value)
                {
                    counted++;

                    Console.CursorLeft = 0;
                    Console.Write("                                                      ");
                    Console.CursorLeft = 0;
                    Console.Write("On sample #{0} of {1}", counted, total);

                    var test = r.GetTileTest(l.x, l.y, tilesize);

                    summary.Pieces.Add(test);
                    summary.OfMeasures++;
                    summary.PngSize  += test.PngSize;
                    summary.TiffSize += test.TiffSize;
                    summary.PngTime   = summary.PngTime + test.PngTime;
                    summary.TiffTime  = summary.TiffTime + test.TiffTime;
                    summary.CopyTime  = summary.CopyTime + test.CopyTime;
                }

                report.Add(sel.Key, summary);
                Console.WriteLine();
            }


            Console.WriteLine("Calulated Sizes.");
        }
Example #2
0
        /// <summary>
        /// This function performs data tracking on one tile at a specific tile size and location for the compression test
        /// Also taking into mind processing time for each major step.
        /// </summary>
        /// <param name="tilex"></param>
        /// <param name="tiley"></param>
        /// <param name="tilesize"></param>
        /// <returns></returns>
        public TimePieces GetTileTest(int tilex, int tiley, int tilesize)
        {
            TimePieces t = new TimePieces();

            int tilewidth  = (tilex + 1) * tilesize > RasterImg.RasterXSize ? remainderX(tilesize) : tilesize;
            int tileheight = (tiley + 1) * tilesize > RasterImg.RasterYSize ? remaindery(tilesize) : tilesize;

            DateTime start = DateTime.Now;

            int startx = tilex * tilesize;
            int starty = tiley * tilesize;

            Bitmap b = CopyToBitmap(1, tilewidth, tileheight, startx, starty, tilewidth, tileheight);

            DateTime end = DateTime.Now;

            t.CopyTime = end - start;


            start = DateTime.Now;

            MemoryStream ms = new MemoryStream();

            b.Save(ms, ImageFormat.Png);

            end = DateTime.Now;

            t.PngTime = end - start;

            t.PngSize = ms.Length;

            start = DateTime.Now;
            ms    = new MemoryStream();

            //    var codec = ImageCodecInfo.GetImageEncoders().Where(o => o.FormatID.Equals(ImageFormat.Tiff)).First();
            b.Save(ms, ImageFormat.Tiff);

            end = DateTime.Now;

            t.TiffSize = ms.Length;
            t.TiffTime = end - start;

            return(t);
        }