Ah, thanks. This solved the problem.<br>I however face the problem that I don&#39;t know which data type the image has. So I can&#39;t hardcode the array to unsigned short, since it might sometimes be a int32 or even a float. So is there a way to do this in a generic way?<br>
<br>Chris<br><br><div class="gmail_quote">On Fri, Jun 3, 2011 at 12:21 PM, Even Rouault <span dir="ltr">&lt;<a href="mailto:even.rouault@mines-paris.org">even.rouault@mines-paris.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Le vendredi 03 juin 2011 12:13:41, Goo Creations a écrit :<br>
<div><div></div><div class="h5">&gt; Hi all<br>
&gt;<br>
&gt; I have a strange problem when writing to a GDAL dataset. I&#39;m currently<br>
&gt; doing the following:<br>
&gt;<br>
&gt; *GDALDataset *mInputDataset = (GDALDataset*) GDALOpen(&quot;in.tif&quot;,<br>
&gt; GA_ReadOnly);<br>
&gt; GDALDataType type = mInputDataset-&gt;GetRasterBand(1)-&gt;GetRasterDataType();<br>
&gt; int mWidth = mInputDataset-&gt;GetRasterXSize();<br>
&gt; int mHeight = mInputDataset-&gt;GetRasterYSize();<br>
&gt;<br>
&gt; GDALDataset *mOutputDataset = mInputDataset-&gt;GetDriver()-&gt;Create(&quot;out.tif&quot;,<br>
&gt; mWidth, mHeight, mBands, type, 0);<br>
&gt;<br>
&gt; int *data = &lt;&lt;get data for entire band&gt;&gt;<br>
&gt; mOutputDataset-&gt;GetRasterBand(1)-&gt;RasterIO(GF_Write, 0, 0, aligner.width(),<br>
&gt; aligner.height(), data, aligner.width(), aligner.height(), type, 0, 0);<br>
&gt; mOutputDataset-&gt;FlushCache();<br>
&gt; *<br>
&gt;<br>
&gt; The input image provided has a datatype of UINT16. When I hardcode all<br>
&gt; &quot;type&quot; variables in the above example to GDT_Int32, then the image is<br>
&gt; correctly created, but when I leave the example as is (hence with<br>
&gt; GDT_UInt16 assigned to &quot;type&quot;), then I get a strange problem that every<br>
&gt; second column has a value of 0. So every odd column has the correct values<br>
&gt; in, but every even column has values of 0. I&#39;ve checked the data array,<br>
&gt; and all the values in there are correct.<br>
&gt;<br>
&gt; Does anyone know why this is happening?<br>
<br>
</div></div>Yes, the type parameter must be consistent with the C type of the data array,<br>
otherwise weird things can happen, including crashes.<br>
<br>
In your exemple data is of type int*, so type must be set to GDT_Int32.<br>
If you want to write GDT_UInt16, then data must be declared as being of type<br>
unsigned short*<br>
<br>
</blockquote></div><br>