本文整理汇总了C++中DDFRecord::GetIntSubfield方法的典型用法代码示例。如果您正苦于以下问题:C++ DDFRecord::GetIntSubfield方法的具体用法?C++ DDFRecord::GetIntSubfield怎么用?C++ DDFRecord::GetIntSubfield使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DDFRecord
的用法示例。
在下文中一共展示了DDFRecord::GetIntSubfield方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Read
int SDTS_XREF::Read( const char * pszFilename )
{
DDFModule oXREFFile;
DDFRecord *poRecord;
/* -------------------------------------------------------------------- */
/* Open the file, and read the header. */
/* -------------------------------------------------------------------- */
if( !oXREFFile.Open( pszFilename ) )
return FALSE;
/* -------------------------------------------------------------------- */
/* Read the first record, and verify that this is an XREF record. */
/* -------------------------------------------------------------------- */
poRecord = oXREFFile.ReadRecord();
if( poRecord == NULL )
return FALSE;
if( poRecord->GetStringSubfield( "XREF", 0, "MODN", 0 ) == NULL )
return FALSE;
/* -------------------------------------------------------------------- */
/* Read fields of interest. */
/* -------------------------------------------------------------------- */
CPLFree( pszSystemName );
pszSystemName =
CPLStrdup( poRecord->GetStringSubfield( "XREF", 0, "RSNM", 0 ) );
CPLFree( pszDatum );
pszDatum =
CPLStrdup( poRecord->GetStringSubfield( "XREF", 0, "HDAT", 0 ) );
nZone = poRecord->GetIntSubfield( "XREF", 0, "ZONE", 0 );
return TRUE;
}
示例2: Open
int SDTSRasterReader::Open( SDTS_CATD * poCATD, SDTS_IREF * poIREF,
const char * pszModule )
{
strncpy( szModule, pszModule, sizeof(szModule) );
szModule[sizeof(szModule) - 1] = '\0';
/* ==================================================================== */
/* Search the LDEF module for the requested cell module. */
/* ==================================================================== */
DDFModule oLDEF;
DDFRecord *poRecord;
/* -------------------------------------------------------------------- */
/* Open the LDEF module, and report failure if it is missing. */
/* -------------------------------------------------------------------- */
if( poCATD->GetModuleFilePath("LDEF") == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Can't find LDEF entry in CATD module ... "
"can't treat as raster.\n" );
return FALSE;
}
if( !oLDEF.Open( poCATD->GetModuleFilePath("LDEF") ) )
return FALSE;
/* -------------------------------------------------------------------- */
/* Read each record, till we find what we want. */
/* -------------------------------------------------------------------- */
while( (poRecord = oLDEF.ReadRecord() ) != NULL )
{
const char* pszCandidateModule = poRecord->GetStringSubfield("LDEF",0,"CMNM",0);
if( pszCandidateModule == NULL )
{
poRecord = NULL;
break;
}
if( EQUAL(pszCandidateModule, pszModule) )
break;
}
if( poRecord == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Can't find module `%s' in LDEF file.\n",
pszModule );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Extract raster dimensions, and origin offset (0/1). */
/* -------------------------------------------------------------------- */
nXSize = poRecord->GetIntSubfield( "LDEF", 0, "NCOL", 0 );
nYSize = poRecord->GetIntSubfield( "LDEF", 0, "NROW", 0 );
nXStart = poRecord->GetIntSubfield( "LDEF", 0, "SOCI", 0 );
nYStart = poRecord->GetIntSubfield( "LDEF", 0, "SORI", 0 );
/* -------------------------------------------------------------------- */
/* Get the point in the pixel that the origin defines. We only */
/* support top left and center. */
/* -------------------------------------------------------------------- */
const char* pszINTR = poRecord->GetStringSubfield( "LDEF", 0, "INTR", 0 );
if( pszINTR == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined, "Can't find INTR subfield of LDEF field" );
return FALSE;
}
strcpy( szINTR, pszINTR );
if( EQUAL(szINTR,"") )
strcpy( szINTR, "CE" );
if( !EQUAL(szINTR,"CE") && !EQUAL(szINTR,"TL") )
{
CPLError( CE_Warning, CPLE_AppDefined,
"Unsupported INTR value of `%s', assume CE.\n"
"Positions may be off by one pixel.\n",
szINTR );
strcpy( szINTR, "CE" );
}
/* -------------------------------------------------------------------- */
/* Record the LDEF record number we used so we can find the */
/* corresponding RSDF record. */
/* -------------------------------------------------------------------- */
int nLDEF_RCID;
nLDEF_RCID = poRecord->GetIntSubfield( "LDEF", 0, "RCID", 0 );
oLDEF.Close();
/* ==================================================================== */
/* Search the RSDF module for the requested cell module. */
/* ==================================================================== */
DDFModule oRSDF;
/* -------------------------------------------------------------------- */
/* Open the RSDF module, and report failure if it is missing. */
/* -------------------------------------------------------------------- */
//.........这里部分代码省略.........
示例3: GetBlock
int SDTSRasterReader::GetBlock( int nXOffset, int nYOffset, void * pData )
{
DDFRecord *poRecord = NULL;
int nBytesPerValue;
int iTry;
CPLAssert( nXOffset == 0 );
/* -------------------------------------------------------------------- */
/* Analyse the datatype. */
/* -------------------------------------------------------------------- */
CPLAssert( EQUAL(szFMT,"BI16") || EQUAL(szFMT,"BFP32") );
if( EQUAL(szFMT,"BI16") )
nBytesPerValue = 2;
else
nBytesPerValue = 4;
for(iTry=0;iTry<2;iTry++)
{
/* -------------------------------------------------------------------- */
/* Read through till we find the desired record. */
/* -------------------------------------------------------------------- */
CPLErrorReset();
while( (poRecord = oDDFModule.ReadRecord()) != NULL )
{
if( poRecord->GetIntSubfield( "CELL", 0, "ROWI", 0 )
== nYOffset + nYStart )
{
break;
}
}
if( CPLGetLastErrorType() == CE_Failure )
return FALSE;
/* -------------------------------------------------------------------- */
/* If we didn't get what we needed just start over. */
/* -------------------------------------------------------------------- */
if( poRecord == NULL )
{
if (iTry == 0)
oDDFModule.Rewind();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"Cannot read scanline %d. Raster access failed.\n",
nYOffset );
return FALSE;
}
}
else
{
break;
}
}
/* -------------------------------------------------------------------- */
/* Validate the records size. Does it represent exactly one */
/* scanline? */
/* -------------------------------------------------------------------- */
DDFField *poCVLS;
poCVLS = poRecord->FindField( "CVLS" );
if( poCVLS == NULL )
return FALSE;
if( poCVLS->GetRepeatCount() != nXSize )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Cell record is %d long, but we expected %d, the number\n"
"of pixels in a scanline. Raster access failed.\n",
poCVLS->GetRepeatCount(), nXSize );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Does the CVLS field consist of exactly 1 B(16) field? */
/* -------------------------------------------------------------------- */
if( poCVLS->GetDataSize() < nBytesPerValue * nXSize
|| poCVLS->GetDataSize() > nBytesPerValue * nXSize + 1 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Cell record is not of expected format. Raster access "
"failed.\n" );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Copy the data to the application buffer, and byte swap if */
/* required. */
/* -------------------------------------------------------------------- */
memcpy( pData, poCVLS->GetData(), nXSize * nBytesPerValue );
#ifdef CPL_LSB
if( nBytesPerValue == 2 )
{
for( int i = 0; i < nXSize; i++ )
//.........这里部分代码省略.........