本文整理汇总了C++中CPLError函数的典型用法代码示例。如果您正苦于以下问题:C++ CPLError函数的具体用法?C++ CPLError怎么用?C++ CPLError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CPLError函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CPLStrdup
int DDFFieldDefn::Initialize( DDFModule * poModuleIn,
const char * pszTagIn,
int nFieldEntrySize,
const char * pachFieldArea )
{
int iFDOffset = poModuleIn->GetFieldControlLength();
int nCharsConsumed;
poModule = poModuleIn;
pszTag = CPLStrdup( pszTagIn );
/* -------------------------------------------------------------------- */
/* Set the data struct and type codes. */
/* -------------------------------------------------------------------- */
switch( pachFieldArea[0] )
{
case ' ': /* for ADRG, DIGEST USRP, DIGEST ASRP files */
case '0':
_data_struct_code = dsc_elementary;
break;
case '1':
_data_struct_code = dsc_vector;
break;
case '2':
_data_struct_code = dsc_array;
break;
case '3':
_data_struct_code = dsc_concatenated;
break;
default:
CPLError( CE_Failure, CPLE_AppDefined,
"Unrecognized data_struct_code value %c.\n"
"Field %s initialization incorrect.",
pachFieldArea[0], pszTag );
_data_struct_code = dsc_elementary;
}
switch( pachFieldArea[1] )
{
case ' ': /* for ADRG, DIGEST USRP, DIGEST ASRP files */
case '0':
_data_type_code = dtc_char_string;
break;
case '1':
_data_type_code = dtc_implicit_point;
break;
case '2':
_data_type_code = dtc_explicit_point;
break;
case '3':
_data_type_code = dtc_explicit_point_scaled;
break;
case '4':
_data_type_code = dtc_char_bit_string;
break;
case '5':
_data_type_code = dtc_bit_string;
break;
case '6':
_data_type_code = dtc_mixed_data_type;
break;
default:
CPLError( CE_Failure, CPLE_AppDefined,
"Unrecognized data_type_code value %c.\n"
"Field %s initialization incorrect.",
pachFieldArea[1], pszTag );
_data_type_code = dtc_char_string;
}
/* -------------------------------------------------------------------- */
/* Capture the field name, description (sub field names), and */
/* format statements. */
/* -------------------------------------------------------------------- */
_fieldName =
DDFFetchVariable( pachFieldArea + iFDOffset,
nFieldEntrySize - iFDOffset,
DDF_UNIT_TERMINATOR, DDF_FIELD_TERMINATOR,
&nCharsConsumed );
iFDOffset += nCharsConsumed;
_arrayDescr =
DDFFetchVariable( pachFieldArea + iFDOffset,
nFieldEntrySize - iFDOffset,
DDF_UNIT_TERMINATOR, DDF_FIELD_TERMINATOR,
&nCharsConsumed );
iFDOffset += nCharsConsumed;
//.........这里部分代码省略.........
开发者ID:StephenHolzman,项目名称:UVAmisc,代码行数:101,代码来源:ddffielddefn.cpp
示例2: CPLRealloc
//.........这里部分代码省略.........
col_def->field_length = 1;
}
else if( strcasecmp(pszTypeName,"integer") == 0 )
{
col_def->target_type = SWQ_INTEGER;
}
else if( strcasecmp(pszTypeName,"float") == 0 )
{
col_def->target_type = SWQ_FLOAT;
}
else if( strcasecmp(pszTypeName,"numeric") == 0 )
{
col_def->target_type = SWQ_FLOAT;
parse_precision = 1;
}
else if( strcasecmp(pszTypeName,"timestamp") == 0 )
{
col_def->target_type = SWQ_TIMESTAMP;
}
else if( strcasecmp(pszTypeName,"date") == 0 )
{
col_def->target_type = SWQ_DATE;
}
else if( strcasecmp(pszTypeName,"time") == 0 )
{
col_def->target_type = SWQ_TIME;
}
else if( strcasecmp(pszTypeName,"geometry") == 0 )
{
col_def->target_type = SWQ_GEOMETRY;
}
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"Unrecognized typename %s in CAST operator.",
pszTypeName );
CPLFree(col_def->field_name);
col_def->field_name = NULL;
CPLFree(col_def->field_alias);
col_def->field_alias = NULL;
result_columns--;
return FALSE;
}
if( col_def->target_type == SWQ_GEOMETRY )
{
if( poExpr->nSubExprCount > 2 )
{
if( poExpr->papoSubExpr[2]->field_type != SWQ_STRING )
{
CPLError( CE_Failure, CPLE_AppDefined,
"First argument of CAST operator should be an geometry type identifier." );
CPLFree(col_def->field_name);
col_def->field_name = NULL;
CPLFree(col_def->field_alias);
col_def->field_alias = NULL;
result_columns--;
return FALSE;
}
col_def->eGeomType =
OGRFromOGCGeomType(poExpr->papoSubExpr[2]->string_value);
// SRID
if( poExpr->nSubExprCount > 3 )
{
开发者ID:0004c,项目名称:node-gdal,代码行数:67,代码来源:swq_select.cpp
示例3: expand_wildcard
CPLErr swq_select::parse( swq_field_list *field_list,
CPL_UNUSED int parse_flags )
{
int i;
CPLErr eError;
eError = expand_wildcard( field_list );
if( eError != CE_None )
return eError;
/* -------------------------------------------------------------------- */
/* Identify field information. */
/* -------------------------------------------------------------------- */
for( i = 0; i < result_columns; i++ )
{
swq_col_def *def = column_defs + i;
if( def->expr != NULL && def->expr->eNodeType != SNT_COLUMN )
{
def->field_index = -1;
def->table_index = -1;
if( def->expr->Check( field_list, TRUE ) == SWQ_ERROR )
return CE_Failure;
def->field_type = def->expr->field_type;
// If the field was changed from string constant to
// column field then adopt the name.
if( def->expr->eNodeType == SNT_COLUMN )
{
def->field_index = def->expr->field_index;
def->table_index = def->expr->table_index;
CPLFree( def->field_name );
def->field_name = CPLStrdup(def->expr->string_value);
}
}
else
{
swq_field_type this_type;
/* identify field */
def->field_index = swq_identify_field( def->field_name, field_list,
&this_type,
&(def->table_index) );
/* record field type */
def->field_type = this_type;
if( def->field_index == -1 && def->col_func != SWQCF_COUNT )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Unrecognised field name %s.",
def->field_name );
return CE_Failure;
}
}
/* identify column function if present */
if( (def->col_func == SWQCF_MIN
|| def->col_func == SWQCF_MAX
|| def->col_func == SWQCF_AVG
|| def->col_func == SWQCF_SUM)
&& (def->field_type == SWQ_STRING ||
def->field_type == SWQ_GEOMETRY) )
{
// possibly this is already enforced by the checker?
const swq_operation *op = swq_op_registrar::GetOperator(
(swq_op) def->col_func );
CPLError( CE_Failure, CPLE_AppDefined,
"Use of field function %s() on %s field %s illegal.",
op->pszName,
SWQFieldTypeToString(def->field_type),
def->field_name );
return CE_Failure;
}
}
/* -------------------------------------------------------------------- */
/* Check if we are producing a one row summary result or a set */
/* of records. Generate an error if we get conflicting */
/* indications. */
/* -------------------------------------------------------------------- */
query_mode = -1;
for( i = 0; i < result_columns; i++ )
{
swq_col_def *def = column_defs + i;
int this_indicator = -1;
if( def->col_func == SWQCF_MIN
|| def->col_func == SWQCF_MAX
|| def->col_func == SWQCF_AVG
|| def->col_func == SWQCF_SUM
|| def->col_func == SWQCF_COUNT )
{
this_indicator = SWQM_SUMMARY_RECORD;
if( def->col_func == SWQCF_COUNT &&
def->distinct_flag &&
//.........这里部分代码省略.........
开发者ID:0004c,项目名称:node-gdal,代码行数:101,代码来源:swq_select.cpp
示例4: CPLError
OGRErr GTMTrackLayer::ICreateFeature (OGRFeature *poFeature)
{
VSILFILE* fpTmpTrackpoints = poDS->getTmpTrackpointsFP();
if (fpTmpTrackpoints == NULL)
return CE_Failure;
VSILFILE* fpTmpTracks = poDS->getTmpTracksFP();
if (fpTmpTracks == NULL)
return CE_Failure;
OGRGeometry *poGeom = poFeature->GetGeometryRef();
if ( poGeom == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Features without geometry not supported by GTM writer in track layer." );
return OGRERR_FAILURE;
}
if (NULL != poCT)
{
poGeom = poGeom->clone();
poGeom->transform( poCT );
}
switch( poGeom->getGeometryType() )
{
case wkbLineString:
case wkbLineString25D:
{
WriteFeatureAttributes(poFeature);
OGRLineString* line = (OGRLineString*)poGeom;
for(int i = 0; i < line->getNumPoints(); ++i)
{
double lat = line->getY(i);
double lon = line->getX(i);
float altitude = 0;
CheckAndFixCoordinatesValidity(lat, lon);
poDS->checkBounds((float)lat, (float)lon);
if (line->getGeometryType() == wkbLineString25D)
altitude = (float)line->getZ(i);
WriteTrackpoint( lat, lon, altitude, i==0 );
}
break;
}
case wkbMultiLineString:
case wkbMultiLineString25D:
{
int nGeometries = ((OGRGeometryCollection*)poGeom)->getNumGeometries ();
for(int j = 0; j < nGeometries; ++j)
{
WriteFeatureAttributes(poFeature);
OGRLineString* line = (OGRLineString*) ( ((OGRGeometryCollection*)poGeom)->getGeometryRef(j) );
int n = (line) ? line->getNumPoints() : 0;
for(int i = 0; i < n; ++i)
{
double lat = line->getY(i);
double lon = line->getX(i);
float altitude = 0;
CheckAndFixCoordinatesValidity(lat, lon);
if (line->getGeometryType() == wkbLineString25D)
altitude = (float) line->getZ(i);
WriteTrackpoint( lat, lon, altitude, i==0 );
}
}
break;
}
default:
{
CPLError( CE_Failure, CPLE_NotSupported,
"Geometry type of `%s' not supported for 'track' element.\n",
OGRGeometryTypeToName(poGeom->getGeometryType()) );
if (NULL != poCT)
delete poGeom;
return OGRERR_FAILURE;
}
}
if (NULL != poCT)
delete poGeom;
return OGRERR_NONE;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:84,代码来源:gtmtracklayer.cpp
示例5: VSIFOpenL
//.........这里部分代码省略.........
const char *target_name; //planet name
//projection parameters
const char *map_proj_name;
int bProjectionSet = TRUE;
char proj_target_name[200];
char geog_name[60];
char datum_name[60];
char sphere_name[60];
char bIsGeographic = TRUE;
double semi_major = 0.0;
double semi_minor = 0.0;
double iflattening = 0.0;
float center_lat = 0.0;
float center_lon = 0.0;
float first_std_parallel = 0.0;
float second_std_parallel = 0.0;
double radLat, localRadius;
FILE *fp;
/************* Skipbytes *****************************/
nSkipBytes = atoi(poDS->GetKeyword("IsisCube.Core.StartByte","")) - 1;
/******* Grab format type (BandSequential, Tiled) *******/
const char *value;
value = poDS->GetKeyword( "IsisCube.Core.Format", "" );
if (EQUAL(value,"Tile") ) { //Todo
strcpy(szLayout,"Tiled");
/******* Get Tile Sizes *********/
tileSizeX = atoi(poDS->GetKeyword("IsisCube.Core.TileSamples",""));
tileSizeY = atoi(poDS->GetKeyword("IsisCube.Core.TileLines",""));
if (tileSizeX <= 0 || tileSizeY <= 0)
{
CPLError( CE_Failure, CPLE_OpenFailed, "Wrong tile dimensions : %d x %d",
tileSizeX, tileSizeY);
delete poDS;
return NULL;
}
}
else if (EQUAL(value,"BandSequential") )
strcpy(szLayout,"BSQ");
else {
CPLError( CE_Failure, CPLE_OpenFailed,
"%s layout not supported. Abort\n\n", value);
delete poDS;
return NULL;
}
/*********** Grab samples lines band ************/
nCols = atoi(poDS->GetKeyword("IsisCube.Core.Dimensions.Samples",""));
nRows = atoi(poDS->GetKeyword("IsisCube.Core.Dimensions.Lines",""));
nBands = atoi(poDS->GetKeyword("IsisCube.Core.Dimensions.Bands",""));
/****** Grab format type - ISIS3 only supports 8,U16,S16,32 *****/
const char *itype;
itype = poDS->GetKeyword( "IsisCube.Core.Pixels.Type" );
if (EQUAL(itype,"UnsignedByte") ) {
eDataType = GDT_Byte;
dfNoData = NULL1;
bNoDataSet = TRUE;
}
else if (EQUAL(itype,"UnsignedWord") ) {
eDataType = GDT_UInt16;
dfNoData = NULL1;
bNoDataSet = TRUE;
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:67,代码来源:isis3dataset.cpp
示例6: TerragenDataset
GDALDataset *TerragenDataset::Open( GDALOpenInfo * poOpenInfo )
{
// The file should have at least 32 header bytes
if( poOpenInfo->nHeaderBytes < 32 )
return NULL;
if( !EQUALN((const char *) poOpenInfo->pabyHeader,
"TERRAGENTERRAIN ", 16) )
return NULL;
/* -------------------------------------------------------------------- */
/* Create a corresponding GDALDataset. */
/* -------------------------------------------------------------------- */
TerragenDataset *poDS;
poDS = new TerragenDataset();
// Reopen for large file access.
if( poOpenInfo->eAccess == GA_Update )
poDS->m_fp = VSIFOpenL( poOpenInfo->pszFilename, "rb+" );
else
poDS->m_fp = VSIFOpenL( poOpenInfo->pszFilename, "rb" );
if( poDS->m_fp == NULL )
{
CPLError( CE_Failure, CPLE_OpenFailed,
"Failed to re-open %s within Terragen driver.\n",
poOpenInfo->pszFilename );
return NULL;
}
poDS->eAccess = poOpenInfo->eAccess;
/* -------------------------------------------------------------------- */
/* Read the file. */
/* -------------------------------------------------------------------- */
if( !poDS->LoadFromFile() )
{
delete poDS;
return NULL;
}
/* -------------------------------------------------------------------- */
/* Create band information objects. */
/* -------------------------------------------------------------------- */
poDS->SetBand( 1, new TerragenRasterBand( poDS ));
poDS->SetMetadataItem( GDALMD_AREA_OR_POINT, GDALMD_AOP_POINT );
/* -------------------------------------------------------------------- */
/* Initialize any PAM information. */
/* -------------------------------------------------------------------- */
poDS->SetDescription( poOpenInfo->pszFilename );
poDS->TryLoadXML();
/* -------------------------------------------------------------------- */
/* Support overviews. */
/* -------------------------------------------------------------------- */
poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );
return( poDS );
}
开发者ID:drownedout,项目名称:datamap,代码行数:64,代码来源:terragendataset.cpp
示例7: switch
OGRErr OGRPGeoLayer::createFromShapeBin( GByte *pabyShape,
OGRGeometry **ppoGeom,
int nBytes )
{
*ppoGeom = NULL;
if( nBytes < 1 )
return OGRERR_FAILURE;
int nSHPType = pabyShape[0];
// CPLDebug( "PGeo",
// "Shape type read from PGeo data is nSHPType = %d",
// nSHPType );
/* -------------------------------------------------------------------- */
/* type 50 appears to just be an alias for normal line */
/* strings. (#1484) */
/* Type 51 appears to just be an alias for normal polygon. (#3100) */
/* TODO: These types include additional attributes including */
/* non-linear segments and such. They should be handled. */
/* -------------------------------------------------------------------- */
switch( nSHPType )
{
case 50:
nSHPType = SHPT_ARC;
break;
case 51:
nSHPType = SHPT_POLYGON;
break;
case 52:
nSHPType = SHPT_POINT;
break;
case 53:
nSHPType = SHPT_MULTIPOINT;
break;
case 54:
nSHPType = SHPT_MULTIPATCH;
}
/* ==================================================================== */
/* Extract vertices for a Polygon or Arc. */
/* ==================================================================== */
if( nSHPType == SHPT_ARC
|| nSHPType == SHPT_ARCZ
|| nSHPType == SHPT_ARCM
|| nSHPType == SHPT_ARCZM
|| nSHPType == SHPT_POLYGON
|| nSHPType == SHPT_POLYGONZ
|| nSHPType == SHPT_POLYGONM
|| nSHPType == SHPT_POLYGONZM
|| nSHPType == SHPT_MULTIPATCH
|| nSHPType == SHPT_MULTIPATCHM)
{
GInt32 nPoints, nParts;
int i, nOffset;
GInt32 *panPartStart;
if (nBytes < 44)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Corrupted Shape : nBytes=%d, nSHPType=%d", nBytes, nSHPType);
return OGRERR_FAILURE;
}
/* -------------------------------------------------------------------- */
/* Extract part/point count, and build vertex and part arrays */
/* to proper size. */
/* -------------------------------------------------------------------- */
memcpy( &nPoints, pabyShape + 40, 4 );
memcpy( &nParts, pabyShape + 36, 4 );
CPL_LSBPTR32( &nPoints );
CPL_LSBPTR32( &nParts );
if (nPoints < 0 || nParts < 0 ||
nPoints > 50 * 1000 * 1000 || nParts > 10 * 1000 * 1000)
{
CPLError(CE_Failure, CPLE_AppDefined, "Corrupted Shape : nPoints=%d, nParts=%d.",
nPoints, nParts);
return OGRERR_FAILURE;
}
int bHasZ = ( nSHPType == SHPT_POLYGONZ
|| nSHPType == SHPT_POLYGONZM
|| nSHPType == SHPT_ARCZ
|| nSHPType == SHPT_ARCZM
|| nSHPType == SHPT_MULTIPATCH
|| nSHPType == SHPT_MULTIPATCHM );
int bIsMultiPatch = ( nSHPType == SHPT_MULTIPATCH || nSHPType == SHPT_MULTIPATCHM );
/* With the previous checks on nPoints and nParts, */
/* we should not overflow here and after */
/* since 50 M * (16 + 8 + 8) = 1 600 MB */
int nRequiredSize = 44 + 4 * nParts + 16 * nPoints;
if ( bHasZ )
{
//.........这里部分代码省略.........
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:101,代码来源:ogrpgeolayer.cpp
示例8: swq_identify_field
swq_field_type swq_expr_node::Check( swq_field_list *poFieldList )
{
/* -------------------------------------------------------------------- */
/* If something is a string constant, we must check if it is */
/* actually a reference to a field in which case we will */
/* convert it into a column type. */
/* -------------------------------------------------------------------- */
if( eNodeType == SNT_CONSTANT && field_type == SWQ_STRING )
{
int wrk_field_index, wrk_table_index;
swq_field_type wrk_field_type;
wrk_field_index =
swq_identify_field( string_value, poFieldList,
&wrk_field_type, &wrk_table_index );
if( wrk_field_index >= 0 )
{
eNodeType = SNT_COLUMN;
field_index = -1;
table_index = -1;
}
}
/* -------------------------------------------------------------------- */
/* Otherwise we take constants literally. */
/* -------------------------------------------------------------------- */
if( eNodeType == SNT_CONSTANT )
return field_type;
/* -------------------------------------------------------------------- */
/* If this is intended to be a field definition, but has not */
/* yet been looked up, we do so now. */
/* -------------------------------------------------------------------- */
if( eNodeType == SNT_COLUMN && field_index == -1 )
{
field_index =
swq_identify_field( string_value, poFieldList,
&field_type, &table_index );
if( field_index < 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"'%s' not recognised as an available field.",
string_value );
return SWQ_ERROR;
}
}
if( eNodeType == SNT_COLUMN )
return field_type;
/* -------------------------------------------------------------------- */
/* We are dealing with an operation - fetch the definition. */
/* -------------------------------------------------------------------- */
const swq_operation *poOp =
swq_op_registrar::GetOperator((swq_op)nOperation);
if( poOp == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Check(): Unable to find definition for operator %d.",
nOperation );
return SWQ_ERROR;
}
/* -------------------------------------------------------------------- */
/* Check subexpressions first. */
/* -------------------------------------------------------------------- */
int i;
for( i = 0; i < nSubExprCount; i++ )
{
if( papoSubExpr[i]->Check(poFieldList) == SWQ_ERROR )
return SWQ_ERROR;
}
/* -------------------------------------------------------------------- */
/* Check this node. */
/* -------------------------------------------------------------------- */
field_type = poOp->pfnChecker( this );
return field_type;
}
开发者ID:agrismart,项目名称:gdal-1.9.2,代码行数:87,代码来源:swq_expr_node.cpp
示例9: CPLAssert
int OGRGPSBabelDataSource::Open( const char * pszDatasourceName,
const char* pszGPSBabelDriverNameIn,
char** papszOpenOptions )
{
int bExplicitFeatures = FALSE;
int bWaypoints = TRUE, bTracks = TRUE, bRoutes = TRUE;
if (!EQUALN(pszDatasourceName, "GPSBABEL:", 9))
{
CPLAssert(pszGPSBabelDriverNameIn);
pszGPSBabelDriverName = CPLStrdup(pszGPSBabelDriverNameIn);
pszFilename = CPLStrdup(pszDatasourceName);
}
else
{
if( CSLFetchNameValue(papszOpenOptions, "FILENAME") )
pszFilename = CPLStrdup(CSLFetchNameValue(papszOpenOptions,
"FILENAME"));
if( CSLFetchNameValue(papszOpenOptions, "GPSBABEL_DRIVER") )
{
if( pszFilename == NULL )
{
CPLError(CE_Failure, CPLE_AppDefined, "Missing FILENAME");
return FALSE;
}
pszGPSBabelDriverName = CPLStrdup(CSLFetchNameValue(papszOpenOptions,
"DRIVER"));
/* A bit of validation to avoid command line injection */
if (!IsValidDriverName(pszGPSBabelDriverName))
return FALSE;
}
}
pszName = CPLStrdup( pszDatasourceName );
if (pszGPSBabelDriverName == NULL)
{
const char* pszSep = strchr(pszDatasourceName + 9, ':');
if (pszSep == NULL)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Wrong syntax. Expected GPSBabel:driver_name:file_name");
return FALSE;
}
pszGPSBabelDriverName = CPLStrdup(pszDatasourceName + 9);
*(strchr(pszGPSBabelDriverName, ':')) = '\0';
/* A bit of validation to avoid command line injection */
if (!IsValidDriverName(pszGPSBabelDriverName))
return FALSE;
/* Parse optionnal features= option */
if (EQUALN(pszSep+1, "features=", 9))
{
const char* pszNextSep = strchr(pszSep+1, ':');
if (pszNextSep == NULL)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Wrong syntax. Expected GPSBabel:driver_name[,options]*:[features=waypoints,tracks,routes:]file_name");
return FALSE;
}
char* pszFeatures = CPLStrdup(pszSep+1+9);
*strchr(pszFeatures, ':') = 0;
char** papszTokens = CSLTokenizeString(pszFeatures);
char** papszIter = papszTokens;
int bErr = FALSE;
bExplicitFeatures = TRUE;
bWaypoints = bTracks = bRoutes = FALSE;
while(papszIter && *papszIter)
{
if (EQUAL(*papszIter, "waypoints"))
bWaypoints = TRUE;
else if (EQUAL(*papszIter, "tracks"))
bTracks = TRUE;
else if (EQUAL(*papszIter, "routes"))
bRoutes = TRUE;
else
{
CPLError(CE_Failure, CPLE_AppDefined, "Wrong value for 'features' options");
bErr = TRUE;
}
papszIter ++;
}
CSLDestroy(papszTokens);
CPLFree(pszFeatures);
if (bErr)
return FALSE;
pszSep = pszNextSep;
}
if( pszFilename == NULL )
pszFilename = CPLStrdup(pszSep+1);
//.........这里部分代码省略.........
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:101,代码来源:ogrgpsbabeldatasource.cpp
示例10: oStmt
void OGRPGeoLayer::LookupSRID( int nSRID )
{
/* -------------------------------------------------------------------- */
/* Fetch the corresponding WKT from the SpatialRef table. */
/* -------------------------------------------------------------------- */
CPLODBCStatement oStmt( poDS->GetSession() );
oStmt.Appendf( "SELECT srtext FROM GDB_SpatialRefs WHERE srid = %d",
nSRID );
if( !oStmt.ExecuteSQL() )
{
CPLError( CE_Failure, CPLE_AppDefined,
"'%s' failed.\n%s",
oStmt.GetCommand(),
poDS->GetSession()->GetLastError() );
return;
}
if( !oStmt.Fetch() )
{
CPLError( CE_Warning, CPLE_AppDefined,
"SRID %d lookup failed.\n%s",
nSRID, poDS->GetSession()->GetLastError() );
return;
}
/* -------------------------------------------------------------------- */
/* Check that it isn't just a GUID. We don't know how to */
/* translate those. */
/* -------------------------------------------------------------------- */
char *pszSRText = (char *) oStmt.GetColData(0);
if( pszSRText[0] == '{' )
{
CPLDebug( "PGEO", "Ignoreing GUID SRTEXT: %s", pszSRText );
return;
}
/* -------------------------------------------------------------------- */
/* Turn it into an OGRSpatialReference. */
/* -------------------------------------------------------------------- */
poSRS = new OGRSpatialReference();
if( poSRS->importFromWkt( &pszSRText ) != OGRERR_NONE )
{
CPLError( CE_Failure, CPLE_AppDefined,
"importFromWKT() failed on SRS '%s'.",
pszSRText);
delete poSRS;
poSRS = NULL;
}
else if( poSRS->morphFromESRI() != OGRERR_NONE )
{
CPLError( CE_Failure, CPLE_AppDefined,
"morphFromESRI() failed on SRS." );
delete poSRS;
poSRS = NULL;
}
else
nSRSId = nSRID;
}
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:63,代码来源:ogrpgeolayer.cpp
示例11: VSIFOpenL
//.........这里部分代码省略.........
{
if ( EQUAL(papszTokens[1], "U1")
|| EQUAL(papszTokens[1], "U2")
|| EQUAL(papszTokens[1], "U4")
|| EQUAL(papszTokens[1], "U8") ) {
nBits = 8;
eDataType = GDT_Byte;
}
else if( EQUAL(papszTokens[1], "U16") ) {
nBits = 16;
eDataType = GDT_UInt16;
}
else if( EQUAL(papszTokens[1], "U32") ) {
nBits = 32;
eDataType = GDT_UInt32;
}
else if( EQUAL(papszTokens[1], "S16") ) {
nBits = 16;
eDataType = GDT_Int16;
}
else if( EQUAL(papszTokens[1], "S32") ) {
nBits = 32;
eDataType = GDT_Int32;
}
else if( EQUAL(papszTokens[1], "F32") ) {
nBits = 32;
eDataType = GDT_Float32;
}
else if( EQUAL(papszTokens[1], "F64") ) {
nBits = 64;
eDataType = GDT_Float64;
}
else {
CPLError( CE_Failure, CPLE_NotSupported,
"EIR driver does not support DATATYPE %s.",
papszTokens[1] );
CSLDestroy( papszTokens );
CSLDestroy( papszHDR );
VSIFCloseL( fp );
return NULL;
}
}
else if( EQUAL(papszTokens[0],"BYTE_ORDER") )
{
// M for MSB, L for LSB
chByteOrder = toupper(papszTokens[1][0]);
}
else if( EQUAL(papszTokens[0],"DATA_OFFSET") )
{
nSkipBytes = atoi(papszTokens[1]); // TBD: is this mapping right?
}
CSLDestroy( papszTokens );
}
VSIFCloseL( fp );
/* -------------------------------------------------------------------- */
/* Did we get the required keywords? If not we return with */
/* this never having been considered to be a match. This isn't */
/* an error! */
/* -------------------------------------------------------------------- */
if( nRows == -1 || nCols == -1 )
{
CSLDestroy( papszHDR );
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:67,代码来源:eirdataset.cpp
示例12: BNA_GetNextRecord
//.........这里部分代码省略.........
}
else if (c == ' ' || c == '\t')
{
if (numField > NB_MIN_BNA_IDS + nbExtraId && ptrBeginningOfNumber != NULL)
{
do
{
ptrCurLine++;
numChar = ptrCurLine - ptrBeginLine;
c = *ptrCurLine;
if (!(c == ' ' || c == '\t'))
break;
} while(c);
if (c == 0) c = 10;
if (interestFeatureType == BNA_READ_ALL ||
interestFeatureType == currentFeatureType)
{
char* pszComma = strchr(ptrBeginningOfNumber, ',');
if (pszComma)
*pszComma = '\0';
record->tabCoords[(numField - nbExtraId - NB_MIN_BNA_IDS - 1) / 2]
[1 - ((numField - nbExtraId) % 2)] =
CPLAtof(ptrBeginningOfNumber);
if (pszComma)
*pszComma = ',';
}
if (numField == NB_MIN_BNA_IDS + 1 + nbExtraId + 2 * record->nCoords - 1)
{
if (c != 10)
{
if (verbose)
{
CPLError(CE_Warning, CPLE_AppDefined,
"At line %d, at char %d, extra data will be ignored!\n",
*curLine, numChar+1);
}
}
*ok = 1;
return record;
}
ptrBeginningOfNumber = NULL;
exponentFound = 0;
exponentSignFound = 0;
dotFound = 0;
numField++;
if (c == 10)
break;
if (c != ',')
{
/* don't increment ptrCurLine */
continue;
}
}
else
{
/* ignore */
}
}
else if (c == 10 || c == ',')
{
/* Eat a comma placed at end of line */
if (c == ',')
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:67,代码来源:ogrbnaparser.cpp
示例13: CPLError
int DDFFieldDefn::ApplyFormats()
{
char *pszFormatList;
char **papszFormatItems;
/* -------------------------------------------------------------------- */
/* Verify that the format string is contained within brackets. */
/* -------------------------------------------------------------------- */
if( strlen(_formatControls) < 2
|| _formatControls[0] != '('
|| _formatControls[strlen(_formatControls)-1] != ')' )
{
CPLError( CE_Warning, (CPLErrorNum)CPLE_DiscardedFormat,
"Format controls for `%s' field missing brackets:%s",
pszTag, _formatControls );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Duplicate the string, and strip off the brackets. */
/* -------------------------------------------------------------------- */
pszFormatList = ExpandFormat( _formatControls );
/* -------------------------------------------------------------------- */
/* Tokenize based on commas. */
/* -------------------------------------------------------------------- */
papszFormatItems =
CSLTokenizeStringComplex(pszFormatList, ",", FALSE, FALSE );
CPLFree( pszFormatList );
/* -------------------------------------------------------------------- */
/* Apply the format items to subfields. */
/* -------------------------------------------------------------------- */
int iFormatItem;
for( iFormatItem = 0;
papszFormatItems[iFormatItem] != NULL;
iFormatItem++ )
{
const char *pszPastPrefix;
pszPastPrefix = papszFormatItems[iFormatItem];
while( *pszPastPrefix >= '0' && *pszPastPrefix <= '9' )
pszPastPrefix++;
///////////////////////////////////////////////////////////////
// Did we get too many formats for the subfields created
// by names? This may be legal by the 8211 specification, but
// isn't encountered in any formats we care about so we just
// blow.
if( iFormatItem >= nSubfieldCount )
{
CPLError( CE_Warning, (CPLErrorNum)CPLE_DiscardedFormat,
"Got more formats than subfields for field `%s'.",
pszTag );
break;
}
if( !papoSubfields[iFormatItem]->SetFormat(pszPastPrefix) )
{
CSLDestroy( papszFormatItems );
return FALSE;
}
}
/* -------------------------------------------------------------------- */
/* Verify that we got enough formats, cleanup and return. */
/* -------------------------------------------------------------------- */
CSLDestroy( papszFormatItems );
if( iFormatItem < nSubfieldCount )
{
CPLError( CE_Warning, (CPLErrorNum)CPLE_DiscardedFormat,
"Got less formats than subfields for field `%s'.",
pszTag );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* If all the fields are fixed width, then we are fixed width */
/* too. This is important for repeating fields. */
/* -------------------------------------------------------------------- */
nFixedWidth = 0;
for( int i = 0; i < nSubfieldCount; i++ )
{
if( papoSubfields[i]->GetWidth() == 0 )
{
nFixedWidth = 0;
break;
}
else
nFixedWidth += papoSubfields[i]->GetWidth();
}
return TRUE;
//.........这里部分代码省略.........
开发者ID:StephenHolzman,项目名称:UVAmisc,代码行数:101,代码来源:ddffielddefn.cpp
示例14: CPLAssert
int ods_formula_node::EvaluateIF(IODSCellEvaluator* poEvaluator)
{
CPLAssert( eNodeType == SNT_OPERATION );
CPLAssert( eOp == ODS_IF );
CPLAssert(nSubExprCount == 2 || nSubExprCount == 3);
if (!(papoSubExpr[0]->Evaluate(poEvaluator)))
return FALSE;
if (!(papoSubExpr[1]->Evaluate(poEvaluator)))
return FALSE;
if (nSubExprCount == 3 && !(papoSubExpr[2]->Evaluate(poEvaluator)))
return FALSE;
CPLAssert(papoSubExpr[0]->eNodeType == SNT_CONSTANT );
CPLAssert(papoSubExpr[1]->eNodeType == SNT_CONSTANT );
if (nSubExprCount == 3)
{
CPLAssert(papoSubExpr[2]->eNodeType == SNT_CONSTANT );
}
int bCond = FALSE;
if (papoSubExpr[0]->field_type == ODS_FIELD_TYPE_INTEGER)
{
bCond = (papoSubExpr[0]->int_value != 0);
}
else if (papoSubExpr[0]->field_type == ODS_FIELD_TYPE_FLOAT)
{
bCond = (papoSubExpr[0]->float_value != 0);
}
else
{
CPLError(CE_Failure, CPLE_NotSupported,
"Bad argument type for %s", ODSGetOperatorName(eOp));
return FALSE;
}
if (bCond)
{
eNodeType = SNT_CONSTANT;
field_type = papoSubExpr[1]->field_type;
if (field_type == ODS_FIELD_TYPE_INTEGER)
int_value = papoSubExpr[1]->int_value;
else if (field_type == ODS_FIELD_TYPE_FLOAT)
float_value = papoSubExpr[1]->float_value;
else if (field_type == ODS_FIELD_TYPE_STRING)
{
string_value = papoSubExpr[1]->string_value;
papoSubExpr[1]->string_value = NULL;
}
}
else if (nSubExprCount == 3)
{
eNodeType = SNT_CONSTANT;
field_type = papoSubExpr[2]->field_type;
if (field_type == ODS_FIELD_TYPE_INTEGER)
int_value = papoSubExpr[2]->int_value;
else if (field_type == ODS_FIELD_TYPE_FLOAT)
float_value = papoSubExpr[2]->float_value;
else if (field_type == ODS_FIELD_TYPE_STRING)
{
string_value = papoSubExpr[2]->string_value;
papoSubExpr[2]->string_value = NULL;
}
}
else
{
eNodeType = SNT_CONSTANT;
field_type = ODS_FIELD_TYPE_INTEGER;
int_value = FALSE;
}
FreeSubExpr();
return TRUE;
}
开发者ID:garnertb,项目名称:gdal,代码行数:74,代码来源:ods_formula_node.cpp
示例15: KEACopyRasterData
// Copies GDAL Band to KEA Band if nOverview == -1
// Otherwise it is assumed we are writing to the specified overview
static
bool KEACopyRasterData( GDALRasterBand *pBand, kealib::KEAImageIO *pImageIO, int nBand, int nOverview, int nTotalBands, GDALProgressFunc pfnProgress, void *pProgressData)
{
// get some info
kealib::KEADataType eKeaType = pImageIO->getImageBandDataType(nBand);
unsigned int nBlockSize;
if( nOverview == -1 )
nBlockSize = pImageIO->getImageBlockSize( nBand );
else
nBlockSize = pImageIO->getOverviewBlockSize(nBand, nOverview);
GDALDataType eGDALType = pBand->GetRasterDataType();
unsigned int nXSize = pBand->GetXSize();
unsigned int nYSize = pBand->GetYSize();
// allocate some space
int nPixelSize = GDALGetDataTypeSize( eGDALType ) / 8;
void *pData = VSIMalloc3( nPixelSize, nBlockSize, nBlockSize);
if( pData == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined, "Unable to allocate memory" );
return false;
}
// for progress
int nTotalBlocks = static_cast<int>(std::ceil( (double)nXSize / (double)nBlockSize ) * std::ceil( (double)nYSize / (double)nBlockSize ));
int nBlocksComplete = 0;
double dLastFraction = -1;
// go through the image
for( unsigned int nY = 0; nY < nYSize; nY += nBlockSize )
{
// adjust for edge blocks
unsigned int nysize = nBlockSize;
unsigned int nytotalsize = nY + nBlockSize;
if( nytotalsize > nYSize )
nysize -= (nytotalsize - nYSize);
for( unsigned int nX = 0; nX < nXSize; nX += nBlockSize )
{
// adjust for edge blocks
unsigned int nxsize = nBlockSize;
unsigned int nxtotalsize = nX + nBlockSize;
if( nxtotalsize > nXSize )
nxsize -= (nxtotalsize - nXSize);
// read in from GDAL
if( pBand->RasterIO( GF_Read, nX, nY, nxsize, nysize, pData,
nxsize, nysize, eGDALType, nPixelSize,
nPixelSize * nBlockSize, NULL) != CE_None )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Unable to read block at %d %d\n", nX, nY );
return false;
}
// write out to KEA
if( nOverview == -1 )
pImageIO->writeImageBlock2Band( nBand, pData, nX, nY, nxsize, nysize, nBlockSize, nBlockSize, eKeaType);
else
pI
|
请发表评论