using System; using OSGeo.GDAL; /** *

Title: GDAL C# GDALWrite example.

*

Description: A sample app to write a GDAL raster.

* @author Tamas Szekeres (szekerest@gmail.com) * @version 1.0 */ /// /// A C# based sample to write a GDAL raster. /// class GDALWrite { public static void usage() { Console.WriteLine("usage: gdalwrite {dataset name}"); System.Environment.Exit(-1); } public static void Main(string[] args) { if (args.Length != 1) usage(); // Using early initialization of System.Console Console.WriteLine(""); int bXSize, bYSize; int w, h; w = 100; h = 100; bXSize = w; bYSize = 1; try { /* -------------------------------------------------------------------- */ /* Register driver(s). */ /* -------------------------------------------------------------------- */ Gdal.AllRegister(); /* -------------------------------------------------------------------- */ /* Get driver */ /* -------------------------------------------------------------------- */ Driver drv = Gdal.GetDriverByName("GTiff"); if (drv == null) { Console.WriteLine("Can't get driver."); System.Environment.Exit(-1); } Console.WriteLine("Using driver " + drv.LongName); /* -------------------------------------------------------------------- */ /* Open dataset. */ /* -------------------------------------------------------------------- */ string[] options = new string [] {"BLOCKXSIZE=" + bXSize, "BLOCKYSIZE=" + bYSize}; Dataset ds = drv.Create(args[0], w, h, 1, DataType.GDT_Byte, options); if (ds == null) { Console.WriteLine("Can't open " + args[0]); System.Environment.Exit(-1); } Band ba = ds.GetRasterBand(1); byte [] buffer = new byte [w * h]; for (int i = 0; i < buffer.Length; i++) buffer[i] = (byte)(i*256/buffer.Length); ba.WriteRaster(0, 0, w, h, buffer, w, h, 0, 0); ba.FlushCache(); ds.FlushCache(); } catch (Exception e) { Console.WriteLine("Application error: " + e.Message); } } }