本文整理汇总了C++中CPLStrdup函数的典型用法代码示例。如果您正苦于以下问题:C++ CPLStrdup函数的具体用法?C++ CPLStrdup怎么用?C++ CPLStrdup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CPLStrdup函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: VSIFOpen
int OGRGMLDataSource::Open( const char * pszNewName, int bTestOpen )
{
FILE *fp;
char szHeader[1000];
/* -------------------------------------------------------------------- */
/* Open the source file. */
/* -------------------------------------------------------------------- */
fp = VSIFOpen( pszNewName, "r" );
if( fp == NULL )
{
if( !bTestOpen )
CPLError( CE_Failure, CPLE_OpenFailed,
"Failed to open GML file `%s'.",
pszNewName );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* If we aren't sure it is GML, load a header chunk and check */
/* for signs it is GML */
/* -------------------------------------------------------------------- */
if( bTestOpen )
{
size_t nRead = VSIFRead( szHeader, 1, sizeof(szHeader), fp );
if (nRead <= 0)
{
VSIFClose( fp );
return FALSE;
}
szHeader[MIN(nRead, sizeof(szHeader))-1] = '\0';
/* -------------------------------------------------------------------- */
/* Check for a UTF-8 BOM and skip if found */
/* */
/* TODO: BOM is variable-lenght parameter and depends on encoding. */
/* Add BOM detection for other encodings. */
/* -------------------------------------------------------------------- */
// Used to skip to actual beginning of XML data
char* szPtr = szHeader;
if( ( (unsigned char)szHeader[0] == 0xEF )
&& ( (unsigned char)szHeader[1] == 0xBB )
&& ( (unsigned char)szHeader[2] == 0xBF) )
{
szPtr += 3;
}
/* -------------------------------------------------------------------- */
/* Here, we expect the opening chevrons of GML tree root element */
/* -------------------------------------------------------------------- */
if( szPtr[0] != '<'
|| strstr(szPtr,"opengis.net/gml") == NULL )
{
VSIFClose( fp );
return FALSE;
}
}
/* -------------------------------------------------------------------- */
/* We assume now that it is GML. Close and instantiate a */
/* GMLReader on it. */
/* -------------------------------------------------------------------- */
VSIFClose( fp );
poReader = CreateGMLReader();
if( poReader == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"File %s appears to be GML but the GML reader can't\n"
"be instantiated, likely because Xerces or Expat support wasn't\n"
"configured in.",
pszNewName );
return FALSE;
}
poReader->SetSourceFile( pszNewName );
pszName = CPLStrdup( pszNewName );
/* -------------------------------------------------------------------- */
/* Can we find a GML Feature Schema (.gfs) for the input file? */
/* -------------------------------------------------------------------- */
const char *pszGFSFilename;
VSIStatBuf sGFSStatBuf, sGMLStatBuf;
int bHaveSchema = FALSE;
pszGFSFilename = CPLResetExtension( pszNewName, "gfs" );
if( CPLStat( pszGFSFilename, &sGFSStatBuf ) == 0 )
{
CPLStat( pszNewName, &sGMLStatBuf );
if( sGMLStatBuf.st_mtime > sGFSStatBuf.st_mtime )
{
CPLDebug( "GML",
"Found %s but ignoring because it appears\n"
"be older than the associated GML file.",
//.........这里部分代码省略.........
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:101,代码来源:ogrgmldatasource.cpp
示例2: HDF5ReadDoubleAttr
/**
* Captures Geolocation information from a COSMO-SKYMED
* file.
* The geoid will always be WGS84
* The projection type may be UTM or UPS, depending on the
* latitude from the center of the image.
* @param iProductType type of CSK subproduct, see HDF5CSKProduct
*/
void HDF5ImageDataset::CaptureCSKGeolocation(int iProductType)
{
// Set the ellipsoid to WGS84.
oSRS.SetWellKnownGeogCS( "WGS84" );
if(iProductType == PROD_CSK_L1C||iProductType == PROD_CSK_L1D)
{
double *dfProjFalseEastNorth = NULL;
double *dfProjScaleFactor = NULL;
double *dfCenterCoord = NULL;
// Check if all the metadata attributes are present.
if(HDF5ReadDoubleAttr("Map Projection False East-North", &dfProjFalseEastNorth) == CE_Failure||
HDF5ReadDoubleAttr("Map Projection Scale Factor", &dfProjScaleFactor) == CE_Failure||
HDF5ReadDoubleAttr("Map Projection Centre", &dfCenterCoord) == CE_Failure||
GetMetadataItem("Projection_ID") == NULL)
{
pszProjection = CPLStrdup("");
pszGCPProjection = CPLStrdup("");
CPLError( CE_Failure, CPLE_OpenFailed,
"The CSK hdf5 file geolocation information is "
"malformed\n" );
}
else
{
// Fetch projection Type.
CPLString osProjectionID = GetMetadataItem("Projection_ID");
//If the projection is UTM
if(EQUAL(osProjectionID,"UTM"))
{
// @TODO: use SetUTM
oSRS.SetProjCS(SRS_PT_TRANSVERSE_MERCATOR);
oSRS.SetTM(dfCenterCoord[0],
dfCenterCoord[1],
dfProjScaleFactor[0],
dfProjFalseEastNorth[0],
dfProjFalseEastNorth[1]);
}
else
{
//TODO Test! I didn't had any UPS projected files to test!
//If the projection is UPS
if(EQUAL(osProjectionID,"UPS"))
{
oSRS.SetProjCS(SRS_PT_POLAR_STEREOGRAPHIC);
oSRS.SetPS(dfCenterCoord[0],
dfCenterCoord[1],
dfProjScaleFactor[0],
dfProjFalseEastNorth[0],
dfProjFalseEastNorth[1]);
}
}
//Export Projection to Wkt.
//In case of error then clean the projection
if (oSRS.exportToWkt(&pszProjection) != OGRERR_NONE)
pszProjection = CPLStrdup("");
CPLFree(dfCenterCoord);
CPLFree(dfProjScaleFactor);
CPLFree(dfProjFalseEastNorth);
}
}
else
{
//Export GCPProjection to Wkt.
//In case of error then clean the projection
if(oSRS.exportToWkt(&pszGCPProjection) != OGRERR_NONE)
pszGCPProjection = CPLStrdup("");
}
}
开发者ID:nextgis-borsch,项目名称:lib_gdal,代码行数:80,代码来源:hdf5imagedataset.cpp
示例3: CPLAssert
//.........这里部分代码省略.........
CPLError( CE_Failure, CPLE_AppDefined,
"mysql_init() failed." );
}
/* -------------------------------------------------------------------- */
/* Set desired options on the connection: charset and timeout. */
/* -------------------------------------------------------------------- */
if( hConn )
{
const char *pszTimeoutLength =
CPLGetConfigOption( "MYSQL_TIMEOUT", "0" );
unsigned int timeout = atoi(pszTimeoutLength);
mysql_options(hConn, MYSQL_OPT_CONNECT_TIMEOUT, (char*)&timeout);
mysql_options(hConn, MYSQL_SET_CHARSET_NAME, "utf8" );
}
/* -------------------------------------------------------------------- */
/* Perform connection. */
/* -------------------------------------------------------------------- */
if( hConn
&& mysql_real_connect( hConn,
oHost.length() ? oHost.c_str() : NULL,
oUser.length() ? oUser.c_str() : NULL,
oPassword.length() ? oPassword.c_str() : NULL,
oDB.length() ? oDB.c_str() : NULL,
nPort, NULL, CLIENT_INTERACTIVE ) == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"MySQL connect failed for: %s\n%s",
pszNewName + 6, mysql_error( hConn ) );
mysql_close( hConn );
hConn = NULL;
}
if( hConn == NULL )
{
CSLDestroy( papszTableNames );
return FALSE;
}
pszName = CPLStrdup( pszNewName );
bDSUpdate = bUpdate;
/* -------------------------------------------------------------------- */
/* Get a list of available tables. */
/* -------------------------------------------------------------------- */
if( papszTableNames == NULL )
{
MYSQL_RES *hResultSet;
MYSQL_ROW papszRow;
if( mysql_query( hConn, "SHOW TABLES" ) )
{
ReportError( "SHOW TABLES Failed" );
return FALSE;
}
hResultSet = mysql_store_result( hConn );
if( hResultSet == NULL )
{
ReportError( "mysql_store_result() failed on SHOW TABLES result.");
return FALSE;
}
while( (papszRow = mysql_fetch_row( hResultSet )) != NULL )
{
if( papszRow[0] == NULL )
continue;
if( EQUAL(papszRow[0],"spatial_ref_sys")
|| EQUAL(papszRow[0],"geometry_columns") )
continue;
papszTableNames = CSLAddString(papszTableNames, papszRow[0] );
}
mysql_free_result( hResultSet );
}
/* -------------------------------------------------------------------- */
/* Get the schema of the available tables. */
/* -------------------------------------------------------------------- */
int iRecord;
for( iRecord = 0;
papszTableNames != NULL && papszTableNames[iRecord] != NULL;
iRecord++ )
{
// FIXME: This should be fixed to deal with tables
// for which we can't open because the name is bad/
OpenTable( papszTableNames[iRecord], bUpdate, FALSE );
}
CSLDestroy( papszTableNames );
return nLayers > 0 || bUpdate;
}
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:101,代码来源:ogrmysqldatasource.cpp
示例4: InterruptLongResult
OGRLayer *
OGRMySQLDataSource::CreateLayer( const char * pszLayerNameIn,
OGRSpatialReference *poSRS,
OGRwkbGeometryType eType,
char ** papszOptions )
{
MYSQL_RES *hResult=NULL;
char szCommand[1024];
const char *pszGeometryType;
const char *pszGeomColumnName;
const char *pszExpectedFIDName;
char *pszLayerName;
int nDimension = 3; // MySQL only supports 2d currently
/* -------------------------------------------------------------------- */
/* Make sure there isn't an active transaction already. */
/* -------------------------------------------------------------------- */
InterruptLongResult();
if( CSLFetchBoolean(papszOptions,"LAUNDER",TRUE) )
pszLayerName = LaunderName( pszLayerNameIn );
else
pszLayerName = CPLStrdup( pszLayerNameIn );
if( wkbFlatten(eType) == eType )
nDimension = 2;
CPLDebug("MYSQL","Creating layer %s.", pszLayerName);
/* -------------------------------------------------------------------- */
/* Do we already have this layer? If so, should we blow it */
/* away? */
/* -------------------------------------------------------------------- */
int iLayer;
for( iLayer = 0; iLayer < nLayers; iLayer++ )
{
if( EQUAL(pszLayerName,papoLayers[iLayer]->GetLayerDefn()->GetName()) )
{
if( CSLFetchNameValue( papszOptions, "OVERWRITE" ) != NULL
&& !EQUAL(CSLFetchNameValue(papszOptions,"OVERWRITE"),"NO") )
{
DeleteLayer( iLayer );
}
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"Layer %s already exists, CreateLayer failed.\n"
"Use the layer creation option OVERWRITE=YES to "
"replace it.",
pszLayerName );
CPLFree( pszLayerName );
return NULL;
}
}
}
pszGeomColumnName = CSLFetchNameValue( papszOptions, "GEOMETRY_NAME" );
if (!pszGeomColumnName)
pszGeomColumnName="SHAPE";
pszExpectedFIDName = CSLFetchNameValue( papszOptions, "MYSQL_FID" );
if (!pszExpectedFIDName)
pszExpectedFIDName="OGR_FID";
CPLDebug("MYSQL","Geometry Column Name %s.", pszGeomColumnName);
CPLDebug("MYSQL","FID Column Name %s.", pszExpectedFIDName);
if( wkbFlatten(eType) == wkbNone )
{
sprintf( szCommand,
"CREATE TABLE `%s` ( "
" %s INT UNIQUE NOT NULL AUTO_INCREMENT )",
pszLayerName, pszExpectedFIDName );
}
else
{
sprintf( szCommand,
"CREATE TABLE `%s` ( "
" %s INT UNIQUE NOT NULL AUTO_INCREMENT, "
" %s GEOMETRY NOT NULL )",
pszLayerName, pszExpectedFIDName, pszGeomColumnName );
}
if( CSLFetchNameValue( papszOptions, "ENGINE" ) != NULL )
{
strcat( szCommand, " ENGINE = " );
strcat( szCommand, CSLFetchNameValue( papszOptions, "ENGINE" ) );
}
if( !mysql_query(GetConn(), szCommand ) )
{
if( mysql_field_count( GetConn() ) == 0 )
CPLDebug("MYSQL","Created table %s.", pszLayerName);
//.........这里部分代码省略.........
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:101,代码来源:ogrmysqldatasource.cpp
示例5: OGRFeatureDefn
CPLErr OGRIDBLayer::BuildFeatureDefn( const char *pszLayerName,
ITCursor *poCurr )
{
poFeatureDefn = new OGRFeatureDefn( pszLayerName );
SetDescription( poFeatureDefn->GetName() );
const ITTypeInfo * poInfo = poCurr->RowType();
int nRawColumns = poInfo->ColumnCount();
poFeatureDefn->Reference();
for( int iCol = 0; iCol < nRawColumns; iCol++ )
{
const char * pszColName = poInfo->ColumnName(iCol);
const ITTypeInfo * poTI = poInfo->ColumnType(iCol);
const char * pszTypName = poTI->Name();
OGRFieldDefn oField( pszColName, OFTString );
oField.SetWidth( MAX(0,poTI->Bound()) );
if ( pszGeomColumn != NULL && EQUAL(pszColName,pszGeomColumn) )
continue;
if ( EQUALN("st_", pszTypName, 3) && pszGeomColumn == NULL )
{
// We found spatial column!
pszGeomColumn = CPLStrdup(pszColName);
if ( EQUAL("st_point", pszTypName) )
poFeatureDefn->SetGeomType( wkbPoint );
else if ( EQUAL("st_linestring", pszTypName) )
poFeatureDefn->SetGeomType( wkbLineString );
else if ( EQUAL("st_polygon", pszTypName) )
poFeatureDefn->SetGeomType( wkbPolygon );
else if ( EQUAL("st_multipoint", pszTypName) )
poFeatureDefn->SetGeomType( wkbMultiPoint );
else if ( EQUAL("st_multilinestring", pszTypName) )
poFeatureDefn->SetGeomType( wkbMultiLineString );
else if ( EQUAL("st_multipolygon", pszTypName) )
poFeatureDefn->SetGeomType( wkbMultiPolygon );
continue;
}
// Check other field types
if ( EQUAL( pszTypName, "blob" ) ||
EQUAL( pszTypName, "byte" ) ||
EQUAL( pszTypName, "opaque" ) ||
EQUAL( pszTypName, "text" ) ||
EQUALN( pszTypName, "list", 4 ) ||
EQUALN( pszTypName, "collection", 10 ) ||
EQUALN( pszTypName, "row", 3 ) ||
EQUALN( pszTypName, "set", 3 ) )
{
CPLDebug( "OGR_IDB", "'%s' column type not supported yet. Column '%s'",
pszTypName, pszColName );
continue;
}
if ( EQUALN( pszTypName, "st_", 3 ) )
{
oField.SetType( OFTBinary );
}
else if ( EQUAL( pszTypName, "date" ) )
{
oField.SetType( OFTDate );
}
else if ( EQUAL( pszTypName, "datetime" ) )
{
oField.SetType( OFTDateTime );
}
else if ( EQUAL( pszTypName, "decimal" ) ||
EQUAL( pszTypName, "money" ) ||
EQUAL( pszTypName, "float" ) ||
EQUAL( pszTypName, "smallfloat" ) )
{
oField.SetType( OFTReal );
oField.SetPrecision( MAX( 0, poTI->Scale() ) ); // -1 for numeric
}
else if ( EQUAL( pszTypName, "integer" ) ||
EQUAL( pszTypName, "serial" ) )
{
oField.SetType( OFTInteger );
// 10 as hardcoded max int32 value length + 1 sig bit
oField.SetWidth( 11 );
}
else if ( EQUAL( pszTypName, "smallint" ) )
{
oField.SetType( OFTInteger );
// 5 as hardcoded max int16 value length + 1 sig bit
oField.SetWidth( 6 );
}
else
{
// leave as string:
// *char, character, character varing, *varchar
// interval. int8, serial8
}
//.........这里部分代码省略.........
开发者ID:drownedout,项目名称:datamap,代码行数:101,代码来源:ogridblayer.cpp
示例6: CPLGetConfigOption
int S57ClassRegistrar::LoadInfo( const char * pszDirectory,
const char * pszProfile,
int bReportErr )
{
FILE *fp;
char szTargetFile[1024];
if( pszDirectory == NULL )
pszDirectory = CPLGetConfigOption("S57_CSV",NULL);
/* ==================================================================== */
/* Read the s57objectclasses file. */
/* ==================================================================== */
if( pszProfile == NULL )
pszProfile = CPLGetConfigOption( "S57_PROFILE", "" );
if( EQUAL(pszProfile, "Additional_Military_Layers") )
{
sprintf( szTargetFile, "s57objectclasses_%s.csv", "aml" );
}
else if ( EQUAL(pszProfile, "Inland_Waterways") )
{
sprintf( szTargetFile, "s57objectclasses_%s.csv", "iw" );
}
else if( strlen(pszProfile) > 0 )
{
sprintf( szTargetFile, "s57objectclasses_%s.csv", pszProfile );
}
else
{
strcpy( szTargetFile, "s57objectclasses.csv" );
}
if( !FindFile( szTargetFile, pszDirectory, bReportErr, &fp ) )
return FALSE;
/* -------------------------------------------------------------------- */
/* Skip the line defining the column titles. */
/* -------------------------------------------------------------------- */
const char * pszLine = ReadLine( fp );
if( !EQUAL(pszLine,
"\"Code\",\"ObjectClass\",\"Acronym\",\"Attribute_A\","
"\"Attribute_B\",\"Attribute_C\",\"Class\",\"Primitives\"" ) )
{
CPLError( CE_Failure, CPLE_AppDefined,
"s57objectclasses columns don't match expected format!\n" );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Read and form string list. */
/* -------------------------------------------------------------------- */
CSLDestroy( papszClassesInfo );
papszClassesInfo = (char **) CPLCalloc(sizeof(char *),MAX_CLASSES);
nClasses = 0;
while( nClasses < MAX_CLASSES
&& (pszLine = ReadLine(fp)) != NULL )
{
papszClassesInfo[nClasses] = CPLStrdup(pszLine);
if( papszClassesInfo[nClasses] == NULL )
break;
nClasses++;
}
if( nClasses == MAX_CLASSES )
CPLError( CE_Warning, CPLE_AppDefined,
"MAX_CLASSES exceeded in S57ClassRegistrar::LoadInfo().\n" );
/* -------------------------------------------------------------------- */
/* Cleanup, and establish state. */
/* -------------------------------------------------------------------- */
if( fp != NULL )
VSIFClose( fp );
iCurrentClass = -1;
if( nClasses == 0 )
return FALSE;
/* ==================================================================== */
/* Read the attributes list. */
/* ==================================================================== */
if( EQUAL(pszProfile, "Additional_Military_Layers") )
{
sprintf( szTargetFile, "s57attributes_%s.csv", "aml" );
}
else if ( EQUAL(pszProfile, "Inland_Waterways") )
{
sprintf( szTargetFile, "s57attributes_%s.csv", "iw" );
}
else if( strlen(pszProfile) > 0 )
{
sprintf( szTargetFile, "s57attributes_%s.csv", pszProfile );
}
//.........这里部分代码省略.........
开发者ID:Chaduke,项目名称:bah.mod,代码行数:101,代码来源:s57classregistrar.cpp
示例7: CPLFree
void DTEDDataset::SetFileName(const char* pszFilenameIn)
{
CPLFree(this->pszFilename);
this->pszFilename = CPLStrdup(pszFilenameIn);
}
开发者ID:StephenHolzman,项目名称:UVAmisc,代码行数:6,代码来源:dteddataset.cpp
示例8: CPLAssert
//.........这里部分代码省略.........
{
const char *pszTimeoutLength =
CPLGetConfigOption( "MYSQL_TIMEOUT", "0" );
unsigned int timeout = atoi(pszTimeoutLength);
mysql_options(hConn, MYSQL_OPT_CONNECT_TIMEOUT, (char*)&timeout);
mysql_options(hConn, MYSQL_SET_CHARSET_NAME, "utf8" );
}
/* -------------------------------------------------------------------- */
/* Perform connection. */
/* -------------------------------------------------------------------- */
if( hConn
&& mysql_real_connect( hConn,
oHost.length() ? oHost.c_str() : NULL,
oUser.length() ? oUser.c_str() : NULL,
oPassword.length() ? oPassword.c_str() : NULL,
oDB.length() ? oDB.c_str() : NULL,
nPort, NULL, CLIENT_INTERACTIVE ) == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"MySQL connect failed for: %s\n%s",
pszNewName + 6, mysql_error( hConn ) );
mysql_close( hConn );
hConn = NULL;
}
if( hConn == NULL )
{
CSLDestroy( papszTableNames );
return FALSE;
}
else
{
// Enable automatic reconnection
// Must be called after mysql_real_connect() on MySQL < 5.0.19
// and at any point on more recent versions.
my_bool reconnect = 1;
mysql_options(hConn, MYSQL_OPT_RECONNECT, &reconnect);
}
pszName = CPLStrdup( pszNewName );
bDSUpdate = bUpdate;
/* -------------------------------------------------------------------- */
/* Get a list of available tables. */
/* -------------------------------------------------------------------- */
if( papszTableNames == NULL )
{
MYSQL_RES *hResultSet;
MYSQL_ROW papszRow;
if( mysql_query( hConn, "SHOW TABLES" ) )
{
ReportError( "SHOW TABLES Failed" );
return FALSE;
}
hResultSet = mysql_store_result( hConn );
if( hResultSet == NULL )
{
ReportError( "mysql_store_result() failed on SHOW TABLES result.");
return FALSE;
}
while( (papszRow = mysql_fetch_row( hResultSet )) != NULL )
{
if( papszRow[0] == NULL )
continue;
if( EQUAL(papszRow[0],"spatial_ref_sys")
|| EQUAL(papszRow[0],"geometry_columns") )
continue;
papszTableNames = CSLAddString(papszTableNames, papszRow[0] );
}
mysql_free_result( hResultSet );
}
/* -------------------------------------------------------------------- */
/* Get the schema of the available tables. */
/* -------------------------------------------------------------------- */
int iRecord;
for( iRecord = 0;
papszTableNames != NULL && papszTableNames[iRecord] != NULL;
iRecord++ )
{
// FIXME: This should be fixed to deal with tables
// for which we can't open because the name is bad/
OpenTable( papszTableNames[iRecord], bUpdate );
}
CSLDestroy( papszTableNames );
return nLayers > 0 || bUpdate;
}
开发者ID:nextgis-borsch,项目名称:lib_gdal,代码行数:101,代码来源:ogrmysqldatasource.cpp
示例9: VSIFOpenL
//.........这里部分代码省略.........
"Reference_Meridian", 0.0 );
}
else {
//All other projections: Mercator, Transverse Mercator, Lambert Conformal, etc.
//Geographic, so set an ellipse
if (bIsGeographic) {
oSRS.SetGeogCS( geog_name, datum_name, sphere_name,
semi_major, iflattening,
"Reference_Meridian", 0.0 );
} else {
//Geocentric, so force a sphere. I hope...
oSRS.SetGeogCS( geog_name, datum_name, sphere_name,
semi_major, 0.0,
"Reference_Meridian", 0.0 );
}
}
// translate back into a projection string.
char *pszResult = NULL;
oSRS.exportToWkt( &pszResult );
poDS->osProjection = pszResult;
CPLFree( pszResult );
}
/* END ISIS3 Label Read */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* -------------------------------------------------------------------- */
/* Is the CUB detached - if so, reset name to binary file? */
/* -------------------------------------------------------------------- */
#ifdef notdef
// Frank - is this correct?
//The extension already added on so don't add another. But is this needed?
char *pszPath = CPLStrdup( CPLGetPath( poOpenInfo->pszFilename ) );
char *pszName = CPLStrdup( CPLGetBasename( poOpenInfo->pszFilename ) );
if (bIsDetached)
pszCUBFilename = CPLFormCIFilename( pszPath, detachedCub, "" );
#endif
/* -------------------------------------------------------------------- */
/* 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 || nBands < 1 )
{
delete poDS;
return NULL;
}
/* -------------------------------------------------------------------- */
/* Capture some information from the file that is of interest. */
/* -------------------------------------------------------------------- */
poDS->nRasterXSize = nCols;
poDS->nRasterYSize = nRows;
/* -------------------------------------------------------------------- */
/* Open target binary file. */
/* -------------------------------------------------------------------- */
if( poOpenInfo->eAccess == GA_ReadOnly )
poDS->fpImage = VSIFOpenL( osQubeFile, "r" );
else
poDS->fpImage = VSIFOpenL( osQubeFile, "r+" );
if( poDS->fpImage == NULL )
{
开发者ID:drownedout,项目名称:datamap,代码行数:67,代码来源:isis3dataset.cpp
示例10: CPLGetConfigOption
OGRDGNLayer::OGRDGNLayer( const char * pszName, DGNHandle hDGN,
int bUpdate )
{
this->hDGN = hDGN;
this->bUpdate = bUpdate;
/* -------------------------------------------------------------------- */
/* Work out what link format we are using. */
/* -------------------------------------------------------------------- */
OGRFieldType eLinkFieldType;
pszLinkFormat = (char *) CPLGetConfigOption( "DGN_LINK_FORMAT", "FIRST" );
if( EQUAL(pszLinkFormat,"FIRST") )
eLinkFieldType = OFTInteger;
else if( EQUAL(pszLinkFormat,"LIST") )
eLinkFieldType = OFTIntegerList;
else if( EQUAL(pszLinkFormat,"STRING") )
eLinkFieldType = OFTString;
else
{
CPLError( CE_Warning, CPLE_AppDefined,
"DGN_LINK_FORMAT=%s, but only FIRST, LIST or STRING supported.",
pszLinkFormat );
pszLinkFormat = (char *) "FIRST";
eLinkFieldType = OFTInteger;
}
pszLinkFormat = CPLStrdup(pszLinkFormat);
/* -------------------------------------------------------------------- */
/* Create the feature definition. */
/* -------------------------------------------------------------------- */
poFeatureDefn = new OGRFeatureDefn( pszName );
poFeatureDefn->Reference();
OGRFieldDefn oField( "", OFTInteger );
/* -------------------------------------------------------------------- */
/* Element type */
/* -------------------------------------------------------------------- */
oField.SetName( "Type" );
oField.SetType( OFTInteger );
oField.SetWidth( 2 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* Level number. */
/* -------------------------------------------------------------------- */
oField.SetName( "Level" );
oField.SetType( OFTInteger );
oField.SetWidth( 2 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* graphic group */
/* -------------------------------------------------------------------- */
oField.SetName( "GraphicGroup" );
oField.SetType( OFTInteger );
oField.SetWidth( 4 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* ColorIndex */
/* -------------------------------------------------------------------- */
oField.SetName( "ColorIndex" );
oField.SetType( OFTInteger );
oField.SetWidth( 3 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* Weight */
/* -------------------------------------------------------------------- */
oField.SetName( "Weight" );
oField.SetType( OFTInteger );
oField.SetWidth( 2 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* Style */
/* -------------------------------------------------------------------- */
oField.SetName( "Style" );
oField.SetType( OFTInteger );
oField.SetWidth( 1 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
/* -------------------------------------------------------------------- */
/* EntityNum */
/* -------------------------------------------------------------------- */
oField.SetName( "EntityNum" );
oField.SetType( eLinkFieldType );
oField.SetWidth( 0 );
oField.SetPrecision( 0 );
poFeatureDefn->AddFieldDefn( &oField );
//.........这里部分代码省略.........
开发者ID:Mofangbao,项目名称:node-gdal,代码行数:101,代码来源:ogrdgnlayer.cpp
示例11: CPLStrdup
int OGRARCGENDataSource::Open( const char * pszFilename, int bUpdateIn)
{
if (bUpdateIn)
{
return FALSE;
}
pszName = CPLStrdup( pszFilename );
// --------------------------------------------------------------------
// Does this appear to be a Arc/Info generate file?
// --------------------------------------------------------------------
VSILFILE* fp = VSIFOpenL(pszFilename, "rb");
if (fp == NULL)
return FALSE;
/* Check that the first line is compatible with a generate file */
/* and in particular contain >= 32 && <= 127 bytes */
char szFirstLine[256+1];
int nRet = VSIFReadL(szFirstLine, 1, 256, fp);
szFirstLine[nRet] = '\0';
int i;
int bFoundEOL = FALSE;
for(i=0;szFirstLine[i] != '\0';i++)
{
if (szFirstLine[i] == '\n' || szFirstLine[i] == '\r')
{
bFoundEOL = TRUE;
szFirstLine[i] = '\0';
break;
}
if (szFirstLine[i] < 32)
{
VSIFCloseL(fp);
return FALSE;
}
}
if (!bFoundEOL)
{
VSIFCloseL(fp);
return FALSE;
}
char** papszTokens = CSLTokenizeString2( szFirstLine, " ,", 0 );
int nTokens = CSLCount(papszTokens);
if (nTokens != 1 && nTokens != 3 && nTokens != 4)
{
VSIFCloseL(fp);
CSLDestroy(papszTokens);
return FALSE;
}
for(int i=0;i<nTokens;i++)
{
if( CPLGetValueType(papszTokens[i]) == CPL_VALUE_STRING )
{
VSIFCloseL(fp);
CSLDestroy(papszTokens);
return FALSE;
}
}
CSLDestroy(papszTokens);
/* Go to end of file, and count the number of END keywords */
/* If there's 1, it's a point layer */
/* If there's 2, it's a linestring or polygon layer */
VSIFSeekL( fp, 0, SEEK_END );
vsi_l_offset nSize = VSIFTellL(fp);
if (nSize < 10)
{
VSIFCloseL(fp);
return FALSE;
}
char szBuffer[10+1];
VSIFSeekL( fp, nSize - 10, SEEK_SET );
VSIFReadL( szBuffer, 1, 10, fp );
szBuffer[10] = '\0';
VSIFSeekL( fp, 0, SEEK_SET );
OGRwkbGeometryType eType;
const char* szPtr = szBuffer;
const char* szEnd = strstr(szPtr, "END");
if (szEnd == NULL) szEnd = strstr(szPtr, "end");
if (szEnd == NULL)
{
VSIFCloseL(fp);
return FALSE;
}
szPtr = szEnd + 3;
szEnd = strstr(szPtr, "END");
if (szEnd == NULL) szEnd = strstr(szPtr, "end");
if (szEnd == NULL)
{
const char* pszLine = CPLReadLine2L(fp,256,NULL);
if (pszLine == NULL)
{
//.........这里部分代码省略.........
开发者ID:imincik,项目名称:pkg-gdal,代码行数:101,代码来源:ograrcgendatasource.cpp
示例12: RPFTOCReadFromBuffer
//.........这里部分代码省略.........
if (!bOK || pathLength > 256)
{
CPLError( CE_Failure, CPLE_NotSupported,
"Path length is big : %d. Probably corrupted TOC file.",
static_cast<int>( pathLength ) );
RPFTOCFree(toc);
return NULL;
}
frameEntry->directory = reinterpret_cast<char *>( CPLMalloc(pathLength+1) );
bOK &= VSIFReadL( frameEntry->directory, 1, pathLength, fp) == pathLength;
if( !bOK )
{
CPLError(CE_Failure, CPLE_FileIO, "I/O error");
RPFTOCFree(toc);
return NULL;
}
frameEntry->directory[pathLength] = 0;
if (pathLength > 0 && frameEntry->directory[pathLength-1] == '/')
frameEntry->directory[pathLength-1] = 0;
if (frameEntry->directory[0] == '.' && frameEntry->directory[1] == '/')
{
memmove(frameEntry->directory, frameEntry->directory+2, strlen(frameEntry->directory+2)+1);
// Some A.TOC have subdirectory names like ".//X/" ... (#5979)
// Check if it was not intended to be "./X/" instead.
VSIStatBufL sStatBuf;
if( frameEntry->directory[0] == '/' &&
VSIStatL(CPLFormFilename(CPLGetDirname(pszFilename), frameEntry->directory+1, NULL), &sStatBuf) == 0 &&
VSI_ISDIR(sStatBuf.st_mode) )
{
memmove(frameEntry->directory, frameEntry->directory+1, strlen(frameEntry->directory+1)+1);
}
}
{
char* baseDir = CPLStrdup(CPLGetDirname(pszFilename));
VSIStatBufL sStatBuf;
char* subdir;
if (CPLIsFilenameRelative(frameEntry->directory) == FALSE)
subdir = CPLStrdup(frameEntry->directory);
else if (frameEntry->directory[0] == '.' && frameEntry->directory[1] == 0)
subdir = CPLStrdup(baseDir);
else
subdir = CPLStrdup(CPLFormFilename(baseDir, frameEntry->directory, NULL));
#if !defined(_WIN32) && !defined(_WIN32_CE)
if( VSIStatL( subdir, &sStatBuf ) != 0 && strlen(subdir) > strlen(baseDir) && subdir[strlen(baseDir)] != 0)
{
char* c = subdir + strlen(baseDir)+1;
while(*c)
{
if (*c >= 'A' && *c <= 'Z')
*c += 'a' - 'A';
c++;
}
}
#endif
frameEntry->fullFilePath = CPLStrdup(CPLFormFilename(
subdir,
frameEntry->filename, NULL));
if( VSIStatL( frameEntry->fullFilePath, &sStatBuf ) != 0 )
{
#if !defined(_WIN32) && !defined(_WIN32_CE)
char* c = frameEntry->fullFilePath + strlen(subdir)+1;
while(*c)
{
if (*c >= 'A' && *c <= 'Z')
*c += 'a' - 'A';
c++;
}
if( VSIStatL( frameEntry->fullFilePath, &sStatBuf ) != 0 )
#endif
{
frameEntry->fileExists = 0;
CPLError( CE_Warning, CPLE_AppDefined,
"File %s does not exist.", frameEntry->fullFilePath );
}
#if !defined(_WIN32) && !defined(_WIN32_CE)
else
{
frameEntry->fileExists = 1;
}
#endif
}
else
{
frameEntry->fileExists = 1;
}
CPLFree(subdir);
CPLFree(baseDir);
}
CPLDebug("RPFTOC", "Entry %d : %s,%s (%d, %d)", boundaryId, frameEntry->directory, frameEntry->filename, frameRow, frameCol);
frameEntry->exists = 1;
}
return toc;
}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:101,代码来源:rpftocfile.cpp
示例13: strlen
static GDALDataset *OGRSQLiteDriverOpen( GDALOpenInfo* poOpenInfo )
{
if( OGRSQLiteDriverIdentify(poOpenInfo) == FALSE )
return NULL;
/* -------------------------------------------------------------------- */
/* Check VirtualShape:xxx.shp syntax */
/* -------------------------------------------------------------------- */
int nLen = (int) strlen(poOpenInfo->pszFilename);
if (EQUALN(poOpenInfo->pszFilename, "VirtualShape:", strlen( "VirtualShape:" )) &&
nLen > 4 && EQUAL(poOpenInfo->pszFilename + nLen - 4, ".SHP"))
{
OGRSQLiteDataSource *poDS;
poDS = new OGRSQLiteDataSource();
char** papszOptions = CSLAddString(NULL, "SPATIALITE=YES");
int nRet = poDS->Create( ":memory:", papszOptions );
poDS->SetDescription(poOpenInfo->pszFilename);
CSLDestroy(papszOptions);
if (!nRet)
{
delete poDS;
return NULL;
}
char* pszSQLiteFilename = CPLStrdup(poOpenInfo->pszFilename + strlen( "VirtualShape:" ));
GDALDataset* poSQLiteDS = (GDALDataset*) GDALOpenEx(pszSQLiteFilename,
GDAL_OF_VECTOR, NULL, NULL, NULL);
if (poSQLiteDS == NULL)
{
CPLFree(pszSQLiteFilename);
delete poDS;
return NULL;
}
delete poSQLiteDS;
char* pszLastDot = strrchr(pszSQLiteFilename, '.');
if (pszLastDot)
*pszLastDot = '\0';
const char* pszTableName = CPLGetBasename(pszSQLiteFilename);
char* pszSQL = CPLStrdup(CPLSPrintf("CREATE VIRTUAL TABLE %s USING VirtualShape(%s, CP1252, -1)",
pszTableName, pszSQLiteFilename));
poDS->ExecuteSQL(pszSQL, NULL, NULL);
CPLFree(pszSQL);
CPLFree(pszSQLiteFilename);
poDS->SetUpdate(FALSE);
return poDS;
}
/* -------------------------------------------------------------------- */
/* We think this is really an SQLite database, go ahead and try */
/* and open it. */
/* -------------------------------------------------------------------- */
OGRSQLiteDataSource *poDS;
poDS = new OGRSQLiteDataSource();
if( !poDS->Open( poOpenInfo->pszFilename, poOpenInfo->eAccess == GA_Update,
poOpenInfo->papszOpenOptions ) )
{
delete poDS;
return NULL;
}
else
return poDS;
}
开发者ID:drownedout,项目名称:datamap,代码行数:70,代码来源:ogrsqlitedriver.cpp
示例14: CPLAssert
int OGRGMLDataSource::Create( const char *pszFilename,
char **papszOptions )
{
if( fpOutput != NULL || poReader != NULL )
{
CPLAssert( FALSE );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Create the output file. */
/* -------------------------------------------------------------------- */
pszName = CPLStrdup( pszFilename );
if( EQUAL(pszFilename,"stdout") )
fpOutput = stdout;
else
fpOutput = VSIFOpen( pszFilename, "wt+" );
if( fpOutput == NULL )
{
CPLError( CE_Failure, CPLE_OpenFailed,
"Failed to create GML file %s.",
pszFilename );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Write out "standard" header. */
/* -------------------------------------------------------------------- */
VSIFPrintf( fpOutput, "%s",
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" );
nSchemaInsertLocation = VSIFTell( fpOutput );
VSIFPrintf( fpOutput, "%s",
"<ogr:FeatureCollection\n" );
/* -------------------------------------------------------------------- */
/* Write out schema info if provided in creation options. */
/* --
|
请发表评论