本文整理汇总了C++中CSLTokenizeString函数的典型用法代码示例。如果您正苦于以下问题:C++ CSLTokenizeString函数的具体用法?C++ CSLTokenizeString怎么用?C++ CSLTokenizeString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CSLTokenizeString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: while
const char * E00GRIDRasterBand::GetUnitType()
{
E00GRIDDataset *poGDS = (E00GRIDDataset *) poDS;
poGDS->ReadMetadata();
if (poGDS->papszPrj == NULL)
return GDALPamRasterBand::GetUnitType();
char** papszIter = poGDS->papszPrj;
const char* pszRet = "";
while(*papszIter)
{
if (STARTS_WITH_CI(*papszIter, "Zunits"))
{
char** papszTokens = CSLTokenizeString(*papszIter);
if (CSLCount(papszTokens) == 2)
{
if (EQUAL(papszTokens[1], "FEET"))
pszRet = "ft";
else if (EQUAL(papszTokens[1], "METERS"))
pszRet = "m";
}
CSLDestroy(papszTokens);
break;
}
papszIter ++;
}
return pszRet;
}
开发者ID:ryandavid,项目名称:rotobox,代码行数:31,代码来源:e00griddataset.cpp
示例2: CSLTokenizeString
GBool MIDDATAFile::IsValidFeature(const char *pszString)
{
char **papszToken ;
papszToken = CSLTokenizeString(pszString);
// printf("%s\n",pszString);
if (CSLCount(papszToken) == 0)
{
CSLDestroy(papszToken);
return FALSE;
}
if (EQUAL(papszToken[0],"NONE") || EQUAL(papszToken[0],"POINT") ||
EQUAL(papszToken[0],"LINE") || EQUAL(papszToken[0],"PLINE") ||
EQUAL(papszToken[0],"REGION") || EQUAL(papszToken[0],"ARC") ||
EQUAL(papszToken[0],"TEXT") || EQUAL(papszToken[0],"RECT") ||
EQUAL(papszToken[0],"ROUNDRECT") || EQUAL(papszToken[0],"ELLIPSE") ||
EQUAL(papszToken[0],"MULTIPOINT")|| EQUAL(papszToken[0],"COLLECTION") )
{
CSLDestroy(papszToken);
return TRUE;
}
CSLDestroy(papszToken);
return FALSE;
}
开发者ID:drownedout,项目名称:datamap,代码行数:29,代码来源:mitab_middatafile.cpp
示例3: OSR_GDS
static CPLString OSR_GDS( char **papszNV, const char *pszField,
const char *pszDefaultValue )
{
if( papszNV == nullptr || papszNV[0] == nullptr )
return pszDefaultValue;
int iLine = 0; // Used after for.
for( ;
papszNV[iLine] != nullptr &&
!EQUALN(papszNV[iLine],pszField,strlen(pszField));
iLine++ ) {}
if( papszNV[iLine] == nullptr )
return pszDefaultValue;
else
{
char **papszTokens = CSLTokenizeString(papszNV[iLine]);
CPLString osResult;
if( CSLCount(papszTokens) > 1 )
osResult = papszTokens[1];
else
osResult = pszDefaultValue;
CSLDestroy(papszTokens);
return osResult;
}
}
开发者ID:hdfeos,项目名称:gdal,代码行数:29,代码来源:aaigriddataset.cpp
示例4: CheckExtensionConsistency
void CheckExtensionConsistency(const char* pszDestFilename,
const char* pszDriverName)
{
char* pszDestExtension = CPLStrdup(CPLGetExtension(pszDestFilename));
if (pszDestExtension[0] != '\0')
{
int nDriverCount = GDALGetDriverCount();
CPLString osConflictingDriverList;
for(int i=0;i<nDriverCount;i++)
{
GDALDriverH hDriver = GDALGetDriver(i);
const char* pszDriverExtensions =
GDALGetMetadataItem( hDriver, GDAL_DMD_EXTENSIONS, NULL );
if( pszDriverExtensions )
{
char** papszTokens = CSLTokenizeString( pszDriverExtensions );
for(int j=0; papszTokens[j]; j++)
{
const char* pszDriverExtension = papszTokens[j];
if (EQUAL(pszDestExtension, pszDriverExtension))
{
if (GDALGetDriverByName(pszDriverName) != hDriver)
{
if (osConflictingDriverList.size())
osConflictingDriverList += ", ";
osConflictingDriverList += GDALGetDriverShortName(hDriver);
}
else
{
/* If the request driver allows the used extension, then */
/* just stop iterating now */
osConflictingDriverList = "";
break;
}
}
}
CSLDestroy(papszTokens);
}
}
if (osConflictingDriverList.size())
{
fprintf(stderr,
"Warning: The target file has a '%s' extension, which is normally used by the %s driver%s,\n"
"but the requested output driver is %s. Is it really what you want ?\n",
pszDestExtension,
osConflictingDriverList.c_str(),
strchr(osConflictingDriverList.c_str(), ',') ? "s" : "",
pszDriverName);
}
}
CPLFree(pszDestExtension);
}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:54,代码来源:commonutils.cpp
示例5: atoi
CPLErr VRTKernelFilteredSource::XMLInit( CPLXMLNode *psTree,
const char *pszVRTPath,
void* pUniqueHandle,
std::map<CPLString, GDALDataset*>& oMapSharedSources )
{
{
const CPLErr eErr = VRTFilteredSource::XMLInit( psTree, pszVRTPath,
pUniqueHandle,
oMapSharedSources );
if( eErr != CE_None )
return eErr;
}
const int nNewKernelSize = atoi(CPLGetXMLValue(psTree,"Kernel.Size","0"));
if( nNewKernelSize == 0 )
return CE_None;
char **papszCoefItems =
CSLTokenizeString( CPLGetXMLValue(psTree,"Kernel.Coefs","") );
const int nCoefs = CSLCount(papszCoefItems);
const bool bSquare = nCoefs == nNewKernelSize * nNewKernelSize;
const bool bSeparable = nCoefs == nNewKernelSize && nCoefs != 1;
if( !bSquare && !bSeparable )
{
CSLDestroy( papszCoefItems );
CPLError( CE_Failure, CPLE_AppDefined,
"Got wrong number of filter kernel coefficients (%s). "
"Expected %d or %d, got %d.",
CPLGetXMLValue(psTree,"Kernel.Coefs",""),
nNewKernelSize * nNewKernelSize, nNewKernelSize, nCoefs );
return CE_Failure;
}
double *padfNewCoefs = static_cast<double *>(
CPLMalloc( sizeof(double) * nCoefs ) );
for( int i = 0; i < nCoefs; i++ )
padfNewCoefs[i] = CPLAtof(papszCoefItems[i]);
const CPLErr eErr = SetKernel( nNewKernelSize, bSeparable, padfNewCoefs );
CPLFree( padfNewCoefs );
CSLDestroy( papszCoefItems );
SetNormalized( atoi(CPLGetXMLValue(psTree,"Kernel.normalized","0")) );
return eErr;
}
开发者ID:OSGeo,项目名称:gdal,代码行数:53,代码来源:vrtfilters.cpp
示例6: CSLTokenizeString
std::vector<double>
OGRDXFWriterLayer::PrepareLineTypeDefinition( OGRStylePen *poPen )
{
/* -------------------------------------------------------------------- */
/* Fetch pattern. */
/* -------------------------------------------------------------------- */
GBool bDefault;
const char *pszPattern = poPen->Pattern( bDefault );
if( bDefault || strlen(pszPattern) == 0 )
return std::vector<double>();
/* -------------------------------------------------------------------- */
/* Split into pen up / pen down bits. */
/* -------------------------------------------------------------------- */
char **papszTokens = CSLTokenizeString(pszPattern);
std::vector<double> adfWeightTokens;
for( int i = 0; papszTokens != nullptr && papszTokens[i] != nullptr; i++ )
{
const char *pszToken = papszTokens[i];
CPLString osAmount;
CPLString osDXFEntry;
// Split amount and unit.
const char *pszUnit = pszToken; // Used after for.
for( ;
strchr( "0123456789.", *pszUnit) != nullptr;
pszUnit++ ) {}
osAmount.assign(pszToken,(int) (pszUnit-pszToken));
// If the unit is other than 'g' we really should be trying to
// do some type of transformation - but what to do? Pretty hard.
// Even entries are "pen down" represented as positive in DXF.
// "Pen up" entries (gaps) are represented as negative.
if( i%2 == 0 )
adfWeightTokens.push_back( CPLAtof( osAmount ) );
else
adfWeightTokens.push_back( -CPLAtof( osAmount ) );
}
CSLDestroy( papszTokens );
return adfWeightTokens;
}
开发者ID:OSGeo,项目名称:gdal,代码行数:48,代码来源:ogrdxfwriterlayer.cpp
示例7: while
void OGRXPlaneNavReader::Read()
{
const char* pszLine = NULL;
while( (pszLine = CPLReadLineL(fp)) != NULL )
{
papszTokens = CSLTokenizeString(pszLine);
nTokens = CSLCount(papszTokens);
nLineNumber++;
if (nTokens == 1 && strcmp(papszTokens[0], "99") == 0)
{
CSLDestroy(papszTokens);
papszTokens = NULL;
bEOF = true;
return;
}
else if( nTokens == 0 || !assertMinCol(9) )
{
CSLDestroy(papszTokens);
papszTokens = NULL;
continue;
}
const int nType = atoi(papszTokens[0]);
if (!((nType >= NAVAID_NDB && nType <= NAVAID_IM) ||
nType == NAVAID_DME_COLOC || nType == NAVAID_DME_STANDALONE))
{
CPLDebug("XPlane", "Line %d : bad feature code '%s'",
nLineNumber, papszTokens[0]);
CSLDestroy(papszTokens);
papszTokens = NULL;
continue;
}
ParseRecord(nType);
CSLDestroy(papszTokens);
papszTokens = NULL;
if( poInterestLayer && !poInterestLayer->IsEmpty() )
return;
}
papszTokens = NULL;
bEOF = true;
}
开发者ID:ryandavid,项目名称:rotobox,代码行数:47,代码来源:ogr_xplane_nav_reader.cpp
示例8: atoi
CPLErr VRTKernelFilteredSource::XMLInit( CPLXMLNode *psTree,
const char *pszVRTPath )
{
CPLErr eErr = VRTFilteredSource::XMLInit( psTree, pszVRTPath );
int nNewKernelSize, i, nCoefs;
double *padfNewCoefs;
if( eErr != CE_None )
return eErr;
nNewKernelSize = atoi(CPLGetXMLValue(psTree,"Kernel.Size","0"));
if( nNewKernelSize == 0 )
return CE_None;
char **papszCoefItems =
CSLTokenizeString( CPLGetXMLValue(psTree,"Kernel.Coefs","") );
nCoefs = CSLCount(papszCoefItems);
if( nCoefs != nNewKernelSize * nNewKernelSize )
{
CSLDestroy( papszCoefItems );
CPLError( CE_Failure, CPLE_AppDefined,
"Got wrong number of filter kernel coefficients (%s).\n"
"Expected %d, got %d.",
CPLGetXMLValue(psTree,"Kernel.Coefs",""),
nNewKernelSize * nNewKernelSize, nCoefs );
return CE_Failure;
}
padfNewCoefs = (double *) CPLMalloc(sizeof(double) * nCoefs);
for( i = 0; i < nCoefs; i++ )
padfNewCoefs[i] = CPLAtof(papszCoefItems[i]);
eErr = SetKernel( nNewKernelSize, padfNewCoefs );
CPLFree( padfNewCoefs );
CSLDestroy( papszCoefItems );
SetNormalized( atoi(CPLGetXMLValue(psTree,"Kernel.normalized","0")) );
return eErr;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:46,代码来源:vrtfilters.cpp
示例9: while
char *PAuxDataset::PCI2WKT( const char *pszGeosys,
const char *pszProjParms )
{
OGRSpatialReference oSRS;
while( *pszGeosys == ' ' )
pszGeosys++;
/* -------------------------------------------------------------------- */
/* Parse projection parameters array. */
/* -------------------------------------------------------------------- */
double adfProjParms[16];
memset( adfProjParms, 0, sizeof(adfProjParms) );
if( pszProjParms != NULL )
{
char **papszTokens;
int i;
papszTokens = CSLTokenizeString( pszProjParms );
for( i=0; papszTokens != NULL && papszTokens[i] != NULL && i < 16; i++)
adfProjParms[i] = atof(papszTokens[i]);
CSLDestroy( papszTokens );
}
/* -------------------------------------------------------------------- */
/* Convert to SRS. */
/* -------------------------------------------------------------------- */
if( oSRS.importFromPCI( pszGeosys, NULL, adfProjParms ) == OGRERR_NONE )
{
char *pszResult = NULL;
oSRS.exportToWkt( &pszResult );
return pszResult;
}
else
return NULL;
}
开发者ID:samalone,项目名称:gdal-ios,代码行数:43,代码来源:pauxdataset.cpp
示例10: DoesDriverHandleExtension
static bool DoesDriverHandleExtension( GDALDriverH hDriver, const char* pszExt )
{
bool bRet = false;
const char* pszDriverExtensions =
GDALGetMetadataItem( hDriver, GDAL_DMD_EXTENSIONS, NULL );
if( pszDriverExtensions )
{
char** papszTokens = CSLTokenizeString( pszDriverExtensions );
for(int j=0; papszTokens[j]; j++)
{
if( EQUAL(pszExt, papszTokens[j]) )
{
bRet = true;
break;
}
}
CSLDestroy(papszTokens);
}
return bRet;
}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:20,代码来源:commonutils.cpp
示例11: while
char *PAuxDataset::PCI2WKT( const char *pszGeosys,
const char *pszProjParms )
{
while( *pszGeosys == ' ' )
pszGeosys++;
/* -------------------------------------------------------------------- */
/* Parse projection parameters array. */
/* -------------------------------------------------------------------- */
double adfProjParms[16] = { 0.0 };
if( pszProjParms != nullptr )
{
char **papszTokens = CSLTokenizeString( pszProjParms );
for( int i = 0;
i < 16 && papszTokens != nullptr && papszTokens[i] != nullptr;
i++ )
adfProjParms[i] = CPLAtof(papszTokens[i]);
CSLDestroy( papszTokens );
}
/* -------------------------------------------------------------------- */
/* Convert to SRS. */
/* -------------------------------------------------------------------- */
OGRSpatialReference oSRS;
if( oSRS.importFromPCI( pszGeosys, nullptr, adfProjParms ) == OGRERR_NONE )
{
char *pszResult = nullptr;
oSRS.exportToWkt( &pszResult );
return pszResult;
}
return nullptr;
}
开发者ID:hdfeos,项目名称:gdal,代码行数:39,代码来源:pauxdataset.cpp
示例12: CSLTokenizeString
OGRLayer* OGRTABDataSource::ExecuteSQL( const char *pszStatement,
OGRGeometry *poSpatialFilter,
const char *pszDialect )
{
char **papszTokens = CSLTokenizeString(pszStatement);
if( CSLCount(papszTokens) == 6 &&
EQUAL(papszTokens[0], "CREATE") &&
EQUAL(papszTokens[1], "INDEX") &&
EQUAL(papszTokens[2], "ON") &&
EQUAL(papszTokens[4], "USING") )
{
IMapInfoFile* poLayer = dynamic_cast<IMapInfoFile*>(
GetLayerByName(papszTokens[3]));
if( poLayer == nullptr )
{
CPLError(CE_Failure, CPLE_AppDefined,
"`%s' failed failed, no such layer as `%s'.",
pszStatement, papszTokens[3]);
CSLDestroy(papszTokens);
return nullptr;
}
int nFieldIdx = poLayer->GetLayerDefn()->GetFieldIndex(papszTokens[5]);
CSLDestroy(papszTokens);
if( nFieldIdx < 0 )
{
CPLError(CE_Failure, CPLE_AppDefined,
"`%s' failed, field not found.",
pszStatement);
return nullptr;
}
poLayer->SetFieldIndexed(nFieldIdx);
return nullptr;
}
CSLDestroy(papszTokens);
return GDALDataset::ExecuteSQL(pszStatement, poSpatialFilter, pszDialect);
}
开发者ID:ksshannon,项目名称:gdal,代码行数:37,代码来源:mitab_ogr_datasource.cpp
示例13: while
void OGRXPlaneFixReader::Read()
{
const char* pszLine;
while((pszLine = CPLReadLine(fp)) != NULL)
{
papszTokens = CSLTokenizeString(pszLine);
nTokens = CSLCount(papszTokens);
nLineNumber ++;
if (nTokens == 1 && strcmp(papszTokens[0], "99") == 0)
{
CSLDestroy(papszTokens);
papszTokens = NULL;
bEOF = TRUE;
return;
}
else if (nTokens == 0 || assertMinCol(3) == FALSE)
{
CSLDestroy(papszTokens);
papszTokens = NULL;
continue;
}
ParseRecord();
CSLDestroy(papszTokens);
papszTokens = NULL;
if (poInterestLayer && poInterestLayer->IsEmpty() == FALSE)
return;
}
papszTokens = NULL;
bEOF = TRUE;
}
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:36,代码来源:ogr_xplane_fix_reader.cpp
示例14: CPLAssert
int OGRGPSBabelDataSource::Open( const char * pszDatasourceName,
const char* pszGPSBabelDriverNameIn,
char** papszOpenOptionsIn )
{
if (!STARTS_WITH_CI(pszDatasourceName, "GPSBABEL:"))
{
CPLAssert(pszGPSBabelDriverNameIn);
pszGPSBabelDriverName = CPLStrdup(pszGPSBabelDriverNameIn);
pszFilename = CPLStrdup(pszDatasourceName);
}
else
{
if( CSLFetchNameValue(papszOpenOptionsIn, "FILENAME") )
pszFilename = CPLStrdup(CSLFetchNameValue(papszOpenOptionsIn,
"FILENAME"));
if( CSLFetchNameValue(papszOpenOptionsIn, "GPSBABEL_DRIVER") )
{
if( pszFilename == NULL )
{
CPLError(CE_Failure, CPLE_AppDefined, "Missing FILENAME");
return FALSE;
}
pszGPSBabelDriverName
= CPLStrdup(CSLFetchNameValue(papszOpenOptionsIn, "DRIVER"));
/* A bit of validation to avoid command line injection */
if (!IsValidDriverName(pszGPSBabelDriverName))
return FALSE;
}
}
pszName = CPLStrdup( pszDatasourceName );
bool bExplicitFeatures = false;
bool bWaypoints = true;
bool bTracks = true;
bool bRoutes = true;
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 optional features= option */
if (STARTS_WITH_CI(pszSep+1, "features="))
{
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;
bool bErr = false;
bExplicitFeatures = true;
bWaypoints = false;
bTracks = false;
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)
//.........这里部分代码省略.........
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:101,代码来源:ogrgpsbabeldatasource.cpp
示例15: GetLayerByName
OGRLayer * OGRShapeDataSource::ExecuteSQL( const char *pszStatement,
OGRGeometry *poSpatialFilter,
const char *pszDialect )
{
/* ==================================================================== */
/* Handle command to drop a spatial index. */
/* ==================================================================== */
if( EQUALN(pszStatement, "REPACK ", 7) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 7 );
if( poLayer != NULL )
poLayer->Repack();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in REPACK.",
pszStatement + 7 );
}
return NULL;
}
/* ==================================================================== */
/* Handle command to drop a spatial index. */
/* ==================================================================== */
if( EQUALN(pszStatement, "DROP SPATIAL INDEX ON ", 22) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 22 );
if( poLayer != NULL )
poLayer->DropSpatialIndex();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in DROP SPATIAL INDEX.",
pszStatement + 19 );
}
return NULL;
}
/* ==================================================================== */
/* Handle all comands except spatial index creation generically. */
/* ==================================================================== */
if( !EQUALN(pszStatement,"CREATE SPATIAL INDEX ON ",24) )
return OGRDataSource::ExecuteSQL( pszStatement, poSpatialFilter,
pszDialect );
/* -------------------------------------------------------------------- */
/* Parse into keywords. */
/* -------------------------------------------------------------------- */
char **papszTokens = CSLTokenizeString( pszStatement );
if( CSLCount(papszTokens) < 5
|| !EQUAL(papszTokens[0],"CREATE")
|| !EQUAL(papszTokens[1],"SPATIAL")
|| !EQUAL(papszTokens[2],"INDEX")
|| !EQUAL(papszTokens[3],"ON")
|| CSLCount(papszTokens) > 7
|| (CSLCount(papszTokens) == 7 && !EQUAL(papszTokens[5],"DEPTH")) )
{
CSLDestroy( papszTokens );
CPLError( CE_Failure, CPLE_AppDefined,
"Syntax error in CREATE SPATIAL INDEX command.\n"
"Was '%s'\n"
"Should be of form 'CREATE SPATIAL INDEX ON <table> [DEPTH <n>]'",
pszStatement );
return NULL;
}
/* -------------------------------------------------------------------- */
/* Get depth if provided. */
/* -------------------------------------------------------------------- */
int nDepth = 0;
if( CSLCount(papszTokens) == 7 )
nDepth = atoi(papszTokens[6]);
/* -------------------------------------------------------------------- */
/* What layer are we operating on. */
/* -------------------------------------------------------------------- */
OGRShapeLayer *poLayer = (OGRShapeLayer *) GetLayerByName(papszTokens[4]);
CSLDestroy( papszTokens );
if( poLayer == NULL )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Layer %s not recognised.",
papszTokens[4] );
return NULL;
}
poLayer->CreateSpatialIndex( nDepth );
return NULL;
}
开发者ID:RyanHun,项目名称:World-Wind-Java,代码行数:96,代码来源:ogrshapedatasource.cpp
示例16: main
//.........这里部分代码省略.........
/* Create a transformation object from the source to */
/* destination coordinate system. */
/* -------------------------------------------------------------------- */
if( nGCPCount != 0 && nOrder == -1 )
{
pfnTransformer = GDALTPSTransform;
hTransformArg =
GDALCreateTPSTransformer( nGCPCount, pasGCPs, FALSE );
}
else if( nGCPCount != 0 )
{
pfnTransformer = GDALGCPTransform;
hTransformArg =
GDALCreateGCPTransformer( nGCPCount, pasGCPs, nOrder, FALSE );
}
else
{
pfnTransformer = GDALGenImgProjTransform;
hTransformArg =
GDALCreateGenImgProjTransformer2( hSrcDS, hDstDS, papszTO );
}
CSLDestroy( papszTO );
if( hTransformArg == NULL )
{
exit( 1 );
}
/* -------------------------------------------------------------------- */
/* Read points from stdin, transform and write to stdout. */
/* -------------------------------------------------------------------- */
while( !feof(stdin) )
{
char szLine[1024];
if( fgets( szLine, sizeof(szLine)-1, stdin ) == NULL )
break;
char **papszTokens = CSLTokenizeString(szLine);
double dfX, dfY, dfZ = 0.0;
int bSuccess = TRUE;
if( CSLCount(papszTokens) < 2 )
{
CSLDestroy(papszTokens);
continue;
}
dfX = atof(papszTokens[0]);
dfY = atof(papszTokens[1]);
if( CSLCount(papszTokens) >= 3 )
dfZ = atof(papszTokens[2]);
if( pfnTransformer( hTransformArg, bInverse, 1,
&dfX, &dfY, &dfZ, &bSuccess )
&& bSuccess )
{
printf( "%.15g %.15g %.15g\n", dfX, dfY, dfZ );
}
else
{
printf( "transformation failed.\n" );
}
CSLDestroy(papszTokens);
}
if( nGCPCount != 0 && nOrder == -1 )
{
GDALDestroyTPSTransformer(hTransformArg);
}
else if( nGCPCount != 0 )
{
GDALDestroyGCPTransformer(hTransformArg);
}
else
{
GDALDestroyGenImgProjTransformer(hTransformArg);
}
if (nGCPCount)
{
GDALDeinitGCPs( nGCPCount, pasGCPs );
CPLFree( pasGCPs );
}
if (hSrcDS)
GDALClose(hSrcDS);
if (hDstDS)
GDALClose(hDstDS);
GDALDumpOpenDatasets( stderr );
GDALDestroyDriverManager();
CSLDestroy( argv );
return 0;
}
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:101,代码来源:gdaltransform.cpp
示例17: GetLayerByName
OGRLayer * OGRShapeDataSource::ExecuteSQL( const char *pszStatement,
OGRGeometry *poSpatialFilter,
const char *pszDialect )
{
/* ==================================================================== */
/* Handle command to drop a spatial index. */
/* ==================================================================== */
if( EQUALN(pszStatement, "REPACK ", 7) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 7 );
if( poLayer != NULL )
{
if( poLayer->Repack() != OGRERR_NONE )
{
CPLError( CE_Failure, CPLE_AppDefined,
"REPACK of layer '%s' failed.",
pszStatement + 7 );
}
}
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in REPACK.",
pszStatement + 7 );
}
return NULL;
}
/* ==================================================================== */
/* Handle command to shrink columns to their minimum size. */
/* ==================================================================== */
if( EQUALN(pszStatement, "RESIZE ", 7) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 7 );
if( poLayer != NULL )
poLayer->ResizeDBF();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in RESIZE.",
pszStatement + 7 );
}
return NULL;
}
/* ==================================================================== */
/* Handle command to recompute extent */
/* ==================================================================== */
if( EQUALN(pszStatement, "RECOMPUTE EXTENT ON ", 20) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 20 );
if( poLayer != NULL )
poLayer->RecomputeExtent();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in RECOMPUTE EXTENT.",
pszStatement + 20 );
}
return NULL;
}
/* ==================================================================== */
/* Handle command to drop a spatial index. */
/* ==================================================================== */
if( EQUALN(pszStatement, "DROP SPATIAL INDEX ON ", 22) )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *)
GetLayerByName( pszStatement + 22 );
if( poLayer != NULL )
poLayer->DropSpatialIndex();
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"No such layer as '%s' in DROP SPATIAL INDEX.",
pszStatement + 22 );
}
return NULL;
}
/* ==================================================================== */
/* Handle all comands except spatial index creation generically. */
/* ==================================================================== */
if( !EQUALN(pszStatement,"CREATE SPATIAL INDEX ON ",24) )
{
char **papszTokens = CSLTokenizeString( pszStatement );
if( CSLCount(papszTokens) >=4
&& (EQUAL(papszTokens[0],"CREATE") || EQUAL(papszTokens[0],"DROP"))
&& EQUAL(papszTokens[1],"INDEX")
&& EQUAL(papszTokens[2],"ON") )
{
OGRShapeLayer *poLayer = (OGRShapeLayer *) GetLayerByName(papszTokens[3]);
//.........这里部分代码省略.........
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:101,代码来源:ogrshapedatasource.cpp
示例18: GDALSimpleWarpRemapping
static void
GDALSimpleWarpRemapping( int nBandCount, GByte **papabySrcData,
int nSrcXSize, int nSrcYSize,
char **papszWarpOptions )
{
/* ==================================================================== */
/* Process any and all single value REMAP commands. */
/* ==================================================================== */
char **papszRemaps = CSLFetchNameValueMultiple( papszWarpOptions,
"REMAP" );
for( int iRemap = 0; iRemap < CSLCount(papszRemaps); iRemap++ )
{
/* -------------------------------------------------------------------- */
/* What are the pixel values to map from and to? */
/* -------------------------------------------------------------------- */
char **papszTokens = CSLTokenizeString( papszRemaps[iRemap] );
if( CSLCount(papszTokens) != 2 )
{
CPLError( CE_Warning, CPLE_AppDefined,
"Ill formed REMAP `%s' ignored in GDALSimpleWarpRemapping()",
papszRemaps[iRemap] );
CSLDestroy( papszTokens );
continue;
}
const int nFromValue = atoi(papszTokens[0]);
const int nToValue = atoi(papszTokens[1]);
CSLDestroy( papszTokens );
/* -------------------------------------------------------------------- */
/* Pass over each band searching for matches. */
/* -------------------------------------------------------------------- */
for( int iBand = 0; iBand < nBandCount; iBand++ )
{
GByte *pabyData = papabySrcData[iBand];
int nPixelCount = nSrcXSize * nSrcYSize;
while( nPixelCount != 0 )
{
if( *pabyData == nFromValue )
*pabyData = static_cast<GByte>( nToValue );
pabyData++;
nPixelCount--;
}
}
}
CSLDestroy( papszRemaps );
/* ==================================================================== */
/* Process any and all REMAP_MULTI commands. */
/* ==================================================================== */
papszRemaps = CSLFetchNameValueMultiple( papszWarpOptions,
"REMAP_MULTI" );
for( int iRemap = 0; iRemap < CSLCount(papszRemaps); iRemap++ )
{
/* -------------------------------------------------------------------- */
/* What are the pixel values to map from and to? */
/* -------------------------------------------------------------------- */
char **papszTokens = CSLTokenizeString( papszRemaps[iRemap] );
if( CSLCount(papszTokens) % 2 == 1
|| CSLCount(papszTokens) == 0
|| CSLCount(papszTokens) > nBandCount * 2 )
{
CPLError( CE_Warning, CPLE_AppDefined,
"Ill formed REMAP_MULTI `%s' ignored in GDALSimpleWarpRemapping()",
papszRemaps[iRemap] );
CSLDestroy( papszTokens );
continue;
}
const int nMapBandCount = CSLCount(papszTokens) / 2;
int *panFromValue = static_cast<int *>(
CPLMalloc(sizeof(int) * nMapBandCount ) );
int *panToValue = static_cast<int *>(
CPLMalloc(sizeof(int) * nMapBandCount ) );
for( int iBand = 0; iBand < nMapBandCount; iBand++ )
{
panFromValue[iBand] = atoi(papszTokens[iBand]);
panToValue[iBand] = atoi(papszTokens[iBand+nMapBandCount]);
}
CSLDestroy( papszTokens );
/* -------------------------------------------------------------------- */
/* Search for matching values to replace. */
/* -------------------------------------------------------------------- */
const int nPixelCount = nSrcXSize * nSrcYSize;
//.........这里部分代码省略.........
开发者ID:StephenHolzman,项目名称:UVAmisc,代码行数:101,代码来源:gdalsimplewarp.cpp
示例19: main
//.........这里部分代码省略.........
/* -------------------------------------------------------------------- */
/* If histogram equalization is requested, do it now. */
/* -------------------------------------------------------------------- */
if( EQUAL(pszMethod,"equalize") )
{
ComputeEqualizationLUTs( hDataset, nLUTBins,
&padfScaleMin, &padfScaleMax,
&papanLUTs, pfnProgress );
}
/* -------------------------------------------------------------------- */
/* If we have a config file, assume it is for input and read */
/* it. */
/* -------------------------------------------------------------------- */
else if( pszConfigFile != NULL )
{
char **papszLines = CSLLoad( pszConfigFile );
if( CSLCount(papszLines) == 0 )
exit( 1 );
if( CSLCount(papszLines) != nBandCount )
{
fprintf( stderr, "Did not get %d lines in config file as expected.\n", nBandCount );
exit( 1 );
}
padfScaleMin = (double *) CPLCalloc(nBandCount,sizeof(double));
padfScaleMax = (double *) CPLCalloc(nBandCount,sizeof(double));
for( iBand = 0; iBand < nBandCount; iBand++ )
{
int iLUT;
char **papszTokens = CSLTokenizeString( papszLines[iBand] );
if( CSLCount(papszTokens) < 3
|| atoi(papszTokens[0]) != iBand+1 )
{
fprintf( stderr, "Line %d seems to be corrupt.\n", iBand+1 );
exit( 1 );
}
// Process scale min/max
padfScaleMin[iBand] = atof(papszTokens[1]);
padfScaleMax[iBand] = atof(papszTokens[2]);
if( CSLCount(papszTokens) == 3 )
continue;
// process lut
if( iBand == 0 )
{
nLUTBins = CSLCount(papszTokens) - 3;
papanLUTs = (int **) CPLCalloc(sizeof(int*),nBandCount);
}
papanLUTs[iBand] = (int *) CPLCalloc(nLUTBins,sizeof(int));
for( iLUT = 0; iLUT < nLUTBins; iLUT++ )
papanLUTs[iBand][iLUT] = atoi(papszTokens[iLUT+3]);
CSLDestroy( papszTokens );
}
}
开发者ID:brunosimoes,项目名称:WorldWind,代码行数:66,代码来源:gdalenhance.cpp
|
请发表评论