Changeset 11340

Show
Ignore:
Timestamp:
04/23/07 16:14:06 (2 years ago)
Author:
warmerdam
Message:

improve iBandDim selection for EOS_GRID (bug 1331)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/gdal/frmts/hdf4/hdf4imagedataset.cpp

    r11163 r11340  
    407407                { 
    408408                    CPLError( CE_Failure, CPLE_AppDefined,  
    409                               "GDreadfield() failed for block." ); 
     409                              "SWreadfield() failed for block." ); 
    410410                    eErr = CE_Failure; 
    411411                } 
     
    21682168                        } 
    21692169                    } 
    2170  
    2171                     if ( i == nDimCount ) 
    2172                             poDS->nBands = poDS->aiDimSizes[0]; 
    21732170                } 
    21742171 
     
    21802177                for ( i = 0; i < nDimCount; i++ ) 
    21812178                { 
    2182                     if ( EQUALN( papszDimList[i], "X", 1 ) ) 
     2179                    if ( EQUALN( papszDimList[i], "X", 1 ) 
     2180                         && poDS->iBandDim != i ) 
    21832181                        poDS->iXDim = i; 
    2184                     else if ( EQUALN( papszDimList[i], "Y", 1 ) ) 
     2182                    else if ( EQUALN( papszDimList[i], "Y", 1 )  
     2183                              && poDS->iBandDim != i ) 
    21852184                        poDS->iYDim = i; 
     2185                } 
     2186 
     2187                // If didn't get a band dimension yet, but have an extra 
     2188                // dimension, use it as the band dimension.  
     2189 
     2190                if( poDS->iRank > 2 && poDS->iBandDim == -1 ) 
     2191                { 
     2192                    if( poDS->iXDim != 0 && poDS->iYDim != 0 ) 
     2193                        poDS->iBandDim = 0; 
     2194                    else if( poDS->iXDim != 1 && poDS->iYDim != 1 ) 
     2195                        poDS->iBandDim = 1; 
     2196                    else if( poDS->iXDim != 2 && poDS->iYDim != 2 ) 
     2197                        poDS->iBandDim = 2; 
     2198 
     2199                    poDS->nBands = poDS->aiDimSizes[poDS->iBandDim]; 
    21862200                } 
    21872201