[gdal-dev] CADRG subdataset access help

Frank Warmerdam warmerdam at pobox.com
Fri Jul 25 16:53:52 EDT 2008


Christiaan Janssen wrote:
> I'm working programmatically. I sort of understand the mechanism described in the suggested document but would greatly appreciate a short snippet to show how one goes about opening the subdataset. I'm guessing in the example described on the web page that to open the first dataset I would call GDALOpen as follows:
> 
> GDALOpen("NITF_IM:0:multi_1b.ntf", GDALAccess::GA_ReadOnly);

Christiaan,

Yes, though you don't normally need to qualify GA_ReadOnly.  The following
code chunk out of gdal_translate (used to recurse over subdatasets) might
also be helpful.

/* -------------------------------------------------------------------- */
/*      Handle subdatasets.                                             */
/* -------------------------------------------------------------------- */
     if( CSLCount(GDALGetMetadata( hDataset, "SUBDATASETS" )) > 0 )
     {
         if( !bCopySubDatasets )
         {
             fprintf( stderr,
                      "Input file contains subdatasets. Please, select one of 
them for reading.\n" );
         }
         else
         {
             char **papszSubdatasets = GDALGetMetadata(hDataset,"SUBDATASETS");
             char *pszSubDest = (char *) CPLMalloc(strlen(pszDest)+32);
             int i;
             int bOldSubCall = bSubCall;

             argv[iDstFileArg] = pszSubDest;
             bSubCall = TRUE;
             for( i = 0; papszSubdatasets[i] != NULL; i += 2 )
             {
                 argv[iSrcFileArg] = strstr(papszSubdatasets[i],"=")+1;
                 sprintf( pszSubDest, "%s%d", pszDest, i/2 + 1 );
                 if( ProxyMain( argc, argv ) != 0 )
                     break;
             }

             bSubCall = bOldSubCall;
             CPLFree( pszSubDest );
         }

         GDALClose( hDataset );

         if( !bSubCall )
         {
             GDALDumpOpenDatasets( stderr );
             GDALDestroyDriverManager();
         }
         return 1;
     }



-- 
---------------------------------------+--------------------------------------
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    | President OSGeo, http://osgeo.org



More information about the gdal-dev mailing list