I noticed that I made another mistake: the band number starts from 1 according to the documentation... So that fixes the NULL problem. Now I am just puzzled by the behavior of the debugger, even though this is not that crucial at this point.
Thanks, Marco Zuliani, Phd phone: +1 805 967 9828 web: www.mayachitra.com On Tue, Jul 6, 2010 at 9:49 AM, Marco Zuliani <zuli...@mayachitra.com>wrote: > 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...@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 <zuli...@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@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 >> > >
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev