[gdal-dev] Creating a new raster and adding data
Frank Warmerdam
warmerdam at pobox.com
Fri Jul 17 13:33:07 EDT 2009
Henneke, Amanda M wrote:
...
> This is what I have so far...
>
> Dataset ds = Gdal.Open("F:\\Mat_Class\\Alaska\\new_tifs\\class_ak_sheet_8a.tif", Access.GA_Update);
> Dataset ds_new = drv.Create("F:\\Mat_Class\\Alaska\\new_tifs\\class_ak_sheet_8a_test.tif", ds.RasterXSize, ds.RasterYSize, 5, DataType.GDT_Byte, new string[] { });
>
> byte[] r_buffer = new byte[iWidth * iHeight];
> byte[] g_buffer = new byte[iWidth * iHeight];
> byte[] b_buffer = new byte[iWidth * iHeight];
>
>
> <get/set values for r_buffer, g_buffer and b_buffer>
>
> int[] iBandMap = { 1, 2, 3, 4, 5 };
> ds_new.WriteRaster(0, 0, iWidth, iHeight, r_buffer, iWidth, iHeight, 1, iBandMap, 0, 0, 0);
> ds_new.WriteRaster(0, 0, iWidth, iHeight, g_buffer, iWidth, iHeight, 2, iBandMap, 0, 0, 0);
> ds_new.WriteRaster(0, 0, iWidth, iHeight, b_buffer, iWidth, iHeight, 3, iBandMap, 0, 0, 0);
Amanda,
When I look in gdal/swig/include/csharp/gdal_csharp.i I see this defintion:
public CPLErr WriteRaster(int xOff, int yOff, int xSize, int ySize,
CSTYPE[] buffer, int buf_xSize, int buf_ySize,
int bandCount, int[] bandMap, int pixelSpace, int lineSpace, int bandSpace)
I think the problem is that you are passing 1, 2, and 3 as the bandCount
value when you are really only passing a buffer (ie. b_buffer) large enough
for one band.
I suspect you should be passing "1" for bandCount each time, but passing
different offets into iBandMap however that is most appopriately done
in C#. In C/C++ I could do:
int[] iBandMap = { 1, 2, 3, 4, 5 };
ds_new.WriteRaster(0, 0, iWidth, iHeight, r_buffer, iWidth, iHeight,
1, &(iBandMap[0]), 0, 0, 0);
ds_new.WriteRaster(0, 0, iWidth, iHeight, g_buffer, iWidth, iHeight,
1, &(iBandMap[1]), 0, 0, 0);
ds_new.WriteRaster(0, 0, iWidth, iHeight, b_buffer, iWidth, iHeight,
1, &(iBandMap[2]), 0, 0, 0);
I'm not sure how this idiom translates into C#.
Good luck,
--
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush | Geospatial Programmer for Rent
More information about the gdal-dev
mailing list