System.Uri uri = new Uri("e:\\ESRI_GDB\\Southampton.gdb");
QueuedTask.Run(() =>
{
FileGeodatabaseConnectionPath path = new FileGeodatabaseConnectionPath(uri);
Geodatabase gdb = new Geodatabase(path);
RasterDataset rasterDataset = gdb.OpenDataset<RasterDataset>("Raster_250");
Raster raster = rasterDataset.CreateFullRaster();
SpatialReference spatialReference = SpatialReferenceBuilder.CreateSpatialReference(27700);
raster.SetSpatialReference(spatialReference);
Envelope ext = EnvelopeBuilder.CreateEnvelope(400000, 100000, 450000, 150000, spatialReference); // select an area
int W = raster.GetWidth(); // original raster is 4040 columns
int H = raster.GetHeight(); // 3880 rows
raster.SetWidth(500); // try to set the size of the output raster
raster.SetHeight(500);
W = raster.GetWidth(); // still 4040 columns
H = raster.GetHeight(); // correct at 500 rows
raster.SetExtent(ext); // select teh geographic area of interest
FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new System.Uri(@"C:\Dummy"), FileSystemDatastoreType.Raster);
FileSystemDatastore dataStore = new FileSystemDatastore(connectionPath);
RasterStorageDef rasterStorageDef = new RasterStorageDef();
rasterStorageDef.SetPyramidLevel(0); // don't want pyramids
raster.SaveAs("bbtest.tif", dataStore, "TIFF", rasterStorageDef); // creates long thin distorted raster of the correct geographic area
});