本文整理汇总了C++中GDALRasterBand::SetStatistics方法的典型用法代码示例。如果您正苦于以下问题:C++ GDALRasterBand::SetStatistics方法的具体用法?C++ GDALRasterBand::SetStatistics怎么用?C++ GDALRasterBand::SetStatistics使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GDALRasterBand
的用法示例。
在下文中一共展示了GDALRasterBand::SetStatistics方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CPLError
//.........这里部分代码省略.........
GDALRasterBand *poSrcBand;
GDALRasterBand *poDstBand;
double dfMin;
double dfMax;
double dfMean;
double dfStdDev = -1;
for( int i = 1; i <= poDstDS->nBands; i++)
{
delete poDstDS->GetRasterBand(i);
}
poDstDS->nBands = 0;
if( poDstDS->hHeaderOne.DataTypeCode == Uncompressed24bit )
{
poDstDS->SetBand( 1, new IntergraphRGBBand( poDstDS, 1, 0, 3 ) );
poDstDS->SetBand( 2, new IntergraphRGBBand( poDstDS, 2, 0, 2 ) );
poDstDS->SetBand( 3, new IntergraphRGBBand( poDstDS, 3, 0, 1 ) );
poDstDS->nBands = 3;
}
else
{
for( int i = 1; i <= poSrcDS->GetRasterCount(); i++ )
{
poSrcBand = poSrcDS->GetRasterBand(i);
eType = poSrcDS->GetRasterBand(i)->GetRasterDataType();
poDstBand = new IntergraphRasterBand( poDstDS, i, 0, eType );
poDstDS->SetBand( i, poDstBand );
poDstBand->SetCategoryNames( poSrcBand->GetCategoryNames() );
poDstBand->SetColorTable( poSrcBand->GetColorTable() );
poSrcBand->GetStatistics( false, true, &dfMin, &dfMax, &dfMean, &dfStdDev );
poDstBand->SetStatistics( dfMin, dfMax, dfMean, dfStdDev );
}
}
// --------------------------------------------------------------------
// Copy image data
// --------------------------------------------------------------------
int nXSize = poDstDS->GetRasterXSize();
int nYSize = poDstDS->GetRasterYSize();
int nBlockXSize;
int nBlockYSize;
CPLErr eErr = CE_None;
for( int iBand = 1; iBand <= poSrcDS->GetRasterCount(); iBand++ )
{
GDALRasterBand *poDstBand = poDstDS->GetRasterBand( iBand );
GDALRasterBand *poSrcBand = poSrcDS->GetRasterBand( iBand );
// ------------------------------------------------------------
// Copy Untiled / Uncompressed
// ------------------------------------------------------------
int iYOffset, iXOffset;
void *pData;
poSrcBand->GetBlockSize( &nBlockXSize, &nBlockYSize );
nBlockXSize = nXSize;
nBlockYSize = 1;
示例2: CheckForStatistics
void LANDataset::CheckForStatistics()
{
/* -------------------------------------------------------------------- */
/* Do we have a statistics file? */
/* -------------------------------------------------------------------- */
osSTAFilename = CPLResetExtension(GetDescription(),"sta");
VSILFILE *fpSTA = VSIFOpenL( osSTAFilename, "r" );
if( fpSTA == NULL && VSIIsCaseSensitiveFS(osSTAFilename) )
{
osSTAFilename = CPLResetExtension(GetDescription(),"STA");
fpSTA = VSIFOpenL( osSTAFilename, "r" );
}
if( fpSTA == NULL )
{
osSTAFilename = "";
return;
}
/* -------------------------------------------------------------------- */
/* Read it one band at a time. */
/* -------------------------------------------------------------------- */
GByte abyBandInfo[1152] = { '\0' };
for( int iBand = 0; iBand < nBands; iBand++ )
{
if( VSIFReadL( abyBandInfo, 1152, 1, fpSTA ) != 1 )
break;
const int nBandNumber = abyBandInfo[7];
GDALRasterBand *poBand = GetRasterBand(nBandNumber);
if( poBand == NULL )
break;
GInt16 nMin = 0;
GInt16 nMax = 0;
if( poBand->GetRasterDataType() != GDT_Byte )
{
memcpy( &nMin, abyBandInfo + 28, 2 );
memcpy( &nMax, abyBandInfo + 30, 2 );
CPL_LSBPTR16( &nMin );
CPL_LSBPTR16( &nMax );
}
else
{
nMin = abyBandInfo[9];
nMax = abyBandInfo[8];
}
float fMean = 0.0;
float fStdDev = 0.0;
memcpy( &fMean, abyBandInfo + 12, 4 );
memcpy( &fStdDev, abyBandInfo + 24, 4 );
CPL_LSBPTR32( &fMean );
CPL_LSBPTR32( &fStdDev );
poBand->SetStatistics( nMin, nMax, fMean, fStdDev );
}
CPL_IGNORE_RET_VAL(VSIFCloseL( fpSTA ));
}
示例3: if
//.........这里部分代码省略.........
/* Compute the line offsets. */
/* -------------------------------------------------------------------- */
const long int nItemSize = GDALGetDataTypeSize(eDataType)/8;
const long int nPixelOffset = nItemSize;
const long int nLineOffset = nPixelOffset * nCols + atoi(poDS->GetKeyword("NBB")) ;
const long int nBandOffset = nLineOffset * nRows;
nSkipBytes = atoi(poDS->GetKeyword("LBLSIZE"));
/* -------------------------------------------------------------------- */
/* Create band information objects. */
/* -------------------------------------------------------------------- */
for( int i = 0; i < nBands; i++ )
{
GDALRasterBand *poBand
= new RawRasterBand( poDS, i+1, poDS->fpImage, nSkipBytes + nBandOffset * i,
nPixelOffset, nLineOffset, eDataType,
#ifdef CPL_LSB
chByteOrder == 'I' || chByteOrder == 'L',
#else
chByteOrder == 'M',
#endif
TRUE );
poDS->SetBand( i+1, poBand );
poBand->SetNoDataValue( dfNoData );
if (bIsDTM) {
poBand->SetScale( (double) CPLAtof(poDS->GetKeyword( "DTM.DTM_SCALING_FACTOR") ) );
poBand->SetOffset( (double) CPLAtof(poDS->GetKeyword( "DTM.DTM_OFFSET") ) );
const char* pszMin = poDS->GetKeyword( "DTM.DTM_MINIMUM_DN", NULL );
const char* pszMax = poDS->GetKeyword( "DTM.DTM_MAXIMUM_DN", NULL );
if (pszMin != NULL && pszMax != NULL )
poBand->SetStatistics(CPLAtofM(pszMin),CPLAtofM(pszMax),0,0);
const char* pszNoData = poDS->GetKeyword( "DTM.DTM_MISSING_DN", NULL );
if (pszNoData != NULL )
poBand->SetNoDataValue( CPLAtofM(pszNoData) );
} else if (EQUAL( poDS->GetKeyword( "BLTYPE"), "M94_HRSC" )) {
float scale=CPLAtof(poDS->GetKeyword("DLRTO8.REFLECTANCE_SCALING_FACTOR","-1."));
if (scale < 0.) {
scale = CPLAtof(poDS->GetKeyword( "HRCAL.REFLECTANCE_SCALING_FACTOR","1."));
}
poBand->SetScale( scale );
float offset=CPLAtof(poDS->GetKeyword("DLRTO8.REFLECTANCE_OFFSET","-1."));
if (offset < 0.) {
offset = CPLAtof(poDS->GetKeyword( "HRCAL.REFLECTANCE_OFFSET","0."));
}
poBand->SetOffset( offset );
}
const char* pszMin = poDS->GetKeyword( "STATISTICS.MINIMUM", NULL );
const char* pszMax = poDS->GetKeyword( "STATISTICS.MAXIMUM", NULL );
const char* pszMean = poDS->GetKeyword( "STATISTICS.MEAN", NULL );
const char* pszStdDev = poDS->GetKeyword( "STATISTICS.STANDARD_DEVIATION", NULL );
if (pszMin != NULL && pszMax != NULL && pszMean != NULL && pszStdDev != NULL )
poBand->SetStatistics(CPLAtofM(pszMin),CPLAtofM(pszMax),CPLAtofM(pszMean),CPLAtofM(pszStdDev));
}
/* -------------------------------------------------------------------- */
/* Instrument-specific keywords as metadata. */
/* -------------------------------------------------------------------- */
/****************** HRSC ******************************/
if (EQUAL( poDS->GetKeyword( "BLTYPE"), "M94_HRSC" ) ) {
poDS->SetMetadataItem( "SPACECRAFT_NAME", poDS->GetKeyword( "M94_INSTRUMENT.INSTRUMENT_HOST_NAME") );
示例4: CheckForStatistics
void LANDataset::CheckForStatistics()
{
/* -------------------------------------------------------------------- */
/* Do we have a statistics file? */
/* -------------------------------------------------------------------- */
osSTAFilename = CPLResetExtension(GetDescription(),"sta");
FILE *fpSTA = VSIFOpenL( osSTAFilename, "r" );
#ifndef WIN32
if( fpSTA == NULL )
{
osSTAFilename = CPLResetExtension(GetDescription(),"STA");
fpSTA = VSIFOpenL( osSTAFilename, "r" );
}
#endif
if( fpSTA == NULL )
{
osSTAFilename = "";
return;
}
/* -------------------------------------------------------------------- */
/* Read it one band at a time. */
/* -------------------------------------------------------------------- */
GByte abyBandInfo[1152];
int iBand;
for( iBand = 0; iBand < nBands; iBand++ )
{
if( VSIFReadL( abyBandInfo, 1152, 1, fpSTA ) != 1 )
break;
int nBandNumber = abyBandInfo[7];
GDALRasterBand *poBand = GetRasterBand(nBandNumber);
if( poBand == NULL )
break;
float fMean, fStdDev;
GInt16 nMin, nMax;
if( poBand->GetRasterDataType() != GDT_Byte )
{
memcpy( &nMin, abyBandInfo + 28, 2 );
memcpy( &nMax, abyBandInfo + 30, 2 );
CPL_LSBPTR16( &nMin );
CPL_LSBPTR16( &nMax );
}
else
{
nMin = abyBandInfo[9];
nMax = abyBandInfo[8];
}
memcpy( &fMean, abyBandInfo + 12, 4 );
memcpy( &fStdDev, abyBandInfo + 24, 4 );
CPL_LSBPTR32( &fMean );
CPL_LSBPTR32( &fStdDev );
poBand->SetStatistics( nMin, nMax, fMean, fStdDev );
}
VSIFCloseL( fpSTA );
}