[gdal-dev] Problem creating geo-tiff from scratch

Marco Zuliani zuliani at mayachitra.com
Tue Jul 6 12:49:05 EDT 2010


Dear Chaitanya,

 thanks a lot for your response. As you pointed out the metadata tag was
misspelled. Correcting it fixed the first problem. However I still have the
second problem The inspection of Ig with the debugger shows non consistent
values for the member variables of the GDALDataset class (see a snapshot at
the bottom of the email). You suggest that there may be a bug with the
debugger, but I doubt this is the case. In fact if I continue with the
execution of the code, the instruction:

[...]
GDALRasterBand *poBand = Ig->GetRasterBand( b );
[...]

returns a NULL pointer when b is zero, and this seems to be consistent with
the fact that the debugger says that Ig is composed of 0 bands (nBands  =
0). I would appreciate if you or anybody else have some suggestion to
understand and solve this problem.

Thanks,
Marco

--- DEBUGGER OUTPUT BEGINS ---

- Ig 0x0000000003d43b90 {hTIFF=0x0000000003d434c0
ppoActiveDSRef=0x0000000003d43ca0 poActiveDS=0x0000000003d43b90 ...}
GDALDataset
*
+ [GTiffDataset] {hTIFF=0x0000000003d434c0 ppoActiveDSRef=0x0000000003d43ca0
poActiveDS=0x0000000003d43b90 ...} GTiffDataset
+ GDALMajorObject {nFlags=33 sDescription={...} oMDMD={...} }
GDALMajorObject
+ poDriver 0x000000fb00000001 {pfnOpen=??? pfnCreate=??? pfnDelete=???
...} GDALDriver
*
 eAccess 234 GDALAccess
 nRasterXSize 4 int
 nRasterYSize 64236080 int
 nBands 0 int
+ papoBands 0x0000000100000000 GDALRasterBand * *
 bForceCachedIO 0 int
 nRefCount -1163005939 int
 bShared 0 int
+ oOvManager {poDS=0x0000000000000000 poODS=0xbaadf00dbaadf00d
osOvrFilename={...} ...} GDALDefaultOverviews

--- DEBUGGER OUTPUT ENDS ---

On Mon, Jul 5, 2010 at 9:13 PM, Chaitanya kumar CH
<chaitanya.ch at gmail.com>wrote:

> Marco,
>
> 1. You misspelled the option for world file creation as 'TWF' which should
> actually be 'TFW'.
> 2. The driver did report the error message correctly after processing the
> creation options. There may be a bug with the debugger.
>
>
> On Tue, Jul 6, 2010 at 6:26 AM, Marco Zuliani <zuliani at mayachitra.com>wrote:
>
>> Dear all,
>>
>>  I am trying to utilize GDAL to generate a geo-tiff image from scratch. I
>> have been following the tutorial presented at
>> http://www.gdal.org/gdal_tutorial.html and I have been reading the
>> documentation of the functions involved in the process, but so far I have
>> not beed successfull in accomplishing my goal.
>>
>>  In the following I will first paste (partially) my routine in the fervent
>> hope that somebidy can spot my error and help me out. I will denote with
>> [...] portions of the code that have been omitted because I believe they are
>> not relevant to my question. After the listing I will present my questions.
>>
>>  --- CODE BEGINS ---
>>
>> [...]
>>
>>     // There is a driver for each supported format. Attempt to register
>> all known drivers
>>     // Ensure that GDALAllRegister() has been called before calling
>> GetDriverByName().
>>     GDALAllRegister();
>>
>>     // select the geotiff format for GDAL
>>     const char *pszFormat = "GTiff";
>>     GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName(
>> pszFormat );
>>
>>     // make some checks to avoid headaches in the future
>>     if ( poDriver == NULL )
>>     {
>> // take care of the error condition
>>  [...]
>>     }
>>
>>      // get some info regarding the GDAL driver
>>     char **papszMetadata = poDriver->GetMetadata();
>>
>>     if ( !CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ) )
>>     {
>>  // take care of the error condition in case creation is not possible
>>     }
>>
>> [...]
>>  // at this point the some variables used in a while have the following
>> values
>>  // width = 251
>>  // height = 234
>>  // bands = 4
>>      // this hosts the list of driver specific control parameters.
>>     // See http://www.gdal.org/frmt_gtiff.html
>>     char **papszOptions = NULL;
>>     papszOptions = CSLSetNameValue( papszOptions, "TWF", "NO" );
>>     papszOptions = CSLSetNameValue( papszOptions, "TILED", "NO" );
>>
>>     int height  = FreeImage_GetHeight( I );
>>     int width   = FreeImage_GetWidth( I );
>>     // this is the georeferenced image
>>     const char *options = GDALGetDriverCreationOptionList(poDriver);
>>     GDALDataset *Ig = poDriver->Create( "test.tif", width, height, bands,
>> GDT_Byte, papszOptions );
>>  --- CODE ENDS ---
>>
>> Questions:
>>
>> 1] The program outputs to the console the following message: "Warning 6:
>> Driver GTiff does not support TWF creation option". Why? From the
>> documentation at http://www.gdal.org/frmt_gtiff.html it seems that such
>> option is supported...
>>
>> 2] From Visual Studio debugger I can see that the values of poDriver are
>> messed up and also the values of eAccess, nRasterXSize, nRasterYSize, nBands
>> seem to be scrabled (I would expect nBands = 4, nRasterXsize = 251, etc.).
>> Does anybody have an idea of what's going on? (Please find below the output
>> of the debugger Name/Value/Type)
>>
>> - Ig 0x00000000039fa450 {hTIFF=0x00000000039fa000
>> ppoActiveDSRef=0x00000000039fa560 poActiveDS=0x00000000039fa450 ...} GDALDataset
>> *
>> + [GTiffDataset] {hTIFF=0x00000000039fa000
>> ppoActiveDSRef=0x00000000039fa560 poActiveDS=0x00000000039fa450 ...}
>> GTiffDataset
>> + GDALMajorObject {nFlags=33 sDescription={...} oMDMD={...} }
>> GDALMajorObject
>> - poDriver 0x000000fb00000001 {pfnOpen=??? pfnCreate=??? pfnDelete=???
>> ...} GDALDriver *
>> + GDALMajorObject {nFlags=??? sDescription={...} oMDMD={...} }
>> GDALMajorObject
>>  pfnOpen CXX0030: Error: expression cannot be evaluated
>>  pfnCreate CXX0030: Error: expression cannot be evaluated
>>  pfnDelete CXX0030: Error: expression cannot be evaluated
>>  pfnCreateCopy CXX0030: Error: expression cannot be evaluated
>>  pDriverData CXX0030: Error: expression cannot be evaluated
>>  pfnUnloadDriver CXX0030: Error: expression cannot be evaluated
>>  pfnIdentify CXX0030: Error: expression cannot be evaluated
>>  pfnRename CXX0030: Error: expression cannot be evaluated
>>  pfnCopyFiles CXX0030: Error: expression cannot be evaluated
>>  eAccess 234 GDALAccess
>>  nRasterXSize 4 int
>>  nRasterYSize 60761968 int
>>  nBands 0 int
>> + papoBands 0x0000000100000000 GDALRasterBand * *
>>  bForceCachedIO 0 int
>>  nRefCount -1163005939 int
>>  bShared 0 int
>> + oOvManager {poDS=0x0000000000000000 poODS=0xbaadf00dbaadf00d
>> osOvrFilename={...} ...} GDALDefaultOverviews
>>
>> Thanks in advance for your help,
>> Marco
>>
>> Marco Zuliani, Phd
>>
>> phone: +1 805 967 9828
>> web: www.mayachitra.com
>>
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>
>
>
>
> --
> Best regards,
> Chaitanya kumar CH.
> /tʃaɪθənjə/ /kʊmɑr/
> +91-9494447584
> 17.2416N 80.1426E
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20100706/f2f86110/attachment-0001.html


More information about the gdal-dev mailing list