这篇教程C++ CPLGetExtension函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CPLGetExtension函数的典型用法代码示例。如果您正苦于以下问题:C++ CPLGetExtension函数的具体用法?C++ CPLGetExtension怎么用?C++ CPLGetExtension使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CPLGetExtension函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CPLErrorOGRDataSource *OGRWalkDriver::Open( const char * pszFilename, int bUpdate ){ if( EQUALN(pszFilename, "PGEO:", strlen("PGEO:")) ) return NULL; if( EQUALN(pszFilename, "GEOMEDIA:", strlen("GEOMEDIA:")) ) return NULL; if( !EQUALN(pszFilename,"WALK:", strlen("WALK:")) && !EQUAL(CPLGetExtension(pszFilename), "MDB") ) return NULL;#ifndef WIN32 // Try to register MDB Tools driver // // ODBCINST.INI NOTE: // This operation requires write access to odbcinst.ini file // located in directory pointed by ODBCINISYS variable. // Usually, it points to /etc, so non-root users can overwrite this // setting ODBCINISYS with location they have write access to, e.g.: // $ export ODBCINISYS=$HOME/etc // $ touch $ODBCINISYS/odbcinst.ini // // See: http://www.unixodbc.org/internals.html // if ( !InstallMdbDriver() ) { CPLError( CE_Warning, CPLE_AppDefined, "Unable to install MDB driver for ODBC, MDB access may not supported./n" ); } else CPLDebug( "Walk", "MDB Tools driver installed successfully!");#endif /* ndef WIN32 */ OGRWalkDataSource *poDS = new OGRWalkDataSource(); if( !poDS->Open( pszFilename, bUpdate ) ) { delete poDS; return NULL; } else return poDS;}
开发者ID:drownedout,项目名称:datamap,代码行数:46,
示例2: Identifyint ARGDataset::Identify( GDALOpenInfo *poOpenInfo ){ json_object * pJSONObject; if (!EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "arg")) { return FALSE; } pJSONObject = GetJsonObject(poOpenInfo->pszFilename); if (pJSONObject == NULL) { return FALSE; } json_object_put(pJSONObject); pJSONObject = NULL; return TRUE;}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:17,
示例3: GetOutputDriversForstd::vector<CPLString> GetOutputDriversFor(const char* pszDestFilename, int nFlagRasterVector){ std::vector<CPLString> aoDriverList; CPLString osExt = CPLGetExtension(pszDestFilename); const int nDriverCount = GDALGetDriverCount(); for( int i = 0; i < nDriverCount; i++ ) { GDALDriverH hDriver = GDALGetDriver(i); if( (GDALGetMetadataItem( hDriver, GDAL_DCAP_CREATE, nullptr ) != nullptr || GDALGetMetadataItem( hDriver, GDAL_DCAP_CREATECOPY, nullptr ) != nullptr ) && (((nFlagRasterVector & GDAL_OF_RASTER) && GDALGetMetadataItem( hDriver, GDAL_DCAP_RASTER, nullptr ) != nullptr) || ((nFlagRasterVector & GDAL_OF_VECTOR) && GDALGetMetadataItem( hDriver, GDAL_DCAP_VECTOR, nullptr ) != nullptr)) ) { if( !osExt.empty() && DoesDriverHandleExtension(hDriver, osExt) ) { aoDriverList.push_back( GDALGetDriverShortName(hDriver) ); } else { const char* pszPrefix = GDALGetMetadataItem(hDriver, GDAL_DMD_CONNECTION_PREFIX, nullptr); if( pszPrefix && STARTS_WITH_CI(pszDestFilename, pszPrefix) ) { aoDriverList.push_back( GDALGetDriverShortName(hDriver) ); } } } } // GMT is registered before netCDF for opening reasons, but we want // netCDF to be used by default for output. if( EQUAL(osExt, "nc") && aoDriverList.size() == 2 && EQUAL(aoDriverList[0], "GMT") && EQUAL(aoDriverList[1], "NETCDF") ) { aoDriverList.clear(); aoDriverList.push_back("NETCDF"); aoDriverList.push_back("GMT"); } return aoDriverList;}
开发者ID:jef-n,项目名称:gdal,代码行数:45,
示例4: CheckExtensionConsistencyvoid 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* pszDriverExtension = GDALGetMetadataItem( hDriver, GDAL_DMD_EXTENSION, NULL ); if (pszDriverExtension && 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; } } } 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:TUW-GEO,项目名称:OGRSpatialRef3D,代码行数:45,
示例5: EQUALint RDataset::Identify( GDALOpenInfo *poOpenInfo ){ if( poOpenInfo->nHeaderBytes < 50 ) return FALSE; // If the extension is .rda and the file type is gzip // compressed we assume it is a gzipped R binary file. if( memcmp(poOpenInfo->pabyHeader, "/037/213/b", 3) == 0 && EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "rda") ) return TRUE; // Is this an ASCII or XDR binary R file? if( !STARTS_WITH_CI((const char *)poOpenInfo->pabyHeader, "RDA2/nA/n") && !STARTS_WITH_CI((const char *)poOpenInfo->pabyHeader, "RDX2/nX/n") ) return FALSE; return TRUE;}
开发者ID:ksshannon,项目名称:gdal,代码行数:18,
示例6: Identifyint ARGDataset::Identify( GDALOpenInfo *poOpenInfo ){#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION if (!EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "arg")) { return FALSE; }#endif json_object *pJSONObject = GetJsonObject(poOpenInfo->pszFilename); if (pJSONObject == nullptr) { return FALSE; } json_object_put(pJSONObject); pJSONObject = nullptr; return TRUE;}
开发者ID:AsgerPetersen,项目名称:gdal,代码行数:18,
示例7: lockerbool wxGISDataset::Rename(const wxString &sNewName, ITrackCancel* const pTrackCancel){ wxCriticalSectionLocker locker(m_CritSect); Close(); CPLString szDirPath = CPLGetPath(m_sPath); CPLString szName = CPLGetBasename(m_sPath); CPLString szNewName(ClearExt(sNewName).mb_str(wxConvUTF8)); char** papszFileList = GetFileList(); papszFileList = CSLAddString( papszFileList, m_sPath ); if(!papszFileList) { if(pTrackCancel) pTrackCancel->PutMessage(_("No files to rename"), wxNOT_FOUND, enumGISMessageErr); return false; } char **papszNewFileList = NULL; for(int i = 0; papszFileList[i] != NULL; ++i ) { CPLString szNewPath(CPLFormFilename(szDirPath, szNewName, GetExtension(papszFileList[i], szName))); papszNewFileList = CSLAddString(papszNewFileList, szNewPath); if(!RenameFile(papszFileList[i], papszNewFileList[i], pTrackCancel)) { // Try to put the ones we moved back. for( --i; i >= 0; i-- ) RenameFile( papszNewFileList[i], papszFileList[i]); CSLDestroy( papszFileList ); CSLDestroy( papszNewFileList ); return false; } } m_sPath = CPLString(CPLFormFilename(szDirPath, szNewName, CPLGetExtension(m_sPath))); CSLDestroy( papszFileList ); CSLDestroy( papszNewFileList ); return true;}
开发者ID:Mileslee,项目名称:wxgis,代码行数:43,
示例8: OGRDWGDataSourceOGRDataSource *OGRDWGDriver::Open( const char * pszFilename, int /*bUpdate*/ ){ if( !EQUAL(CPLGetExtension(pszFilename),"dwg") ) return NULL; if( !OGRTEIGHAInitialize() ) return NULL; OGRDWGDataSource *poDS = new OGRDWGDataSource(); if( !poDS->Open( OGRDWGGetServices(), pszFilename ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:19,
示例9: GetGxCatalogbool wxGxWebConnectionFactory::GetChildren(wxGxObject* pParent, char** &pFileNames, wxArrayLong & pChildrenIds){ wxGxCatalogBase* pCatalog = GetGxCatalog(); for(int i = CSLCount(pFileNames) - 1; i >= 0; i-- ) { CPLString szExt = CPLGetExtension(pFileNames[i]); if(wxGISEQUAL(szExt, "wconn")) { if( m_bHasDriver ) { wxGxObject* pObj = GetGxObject(pParent, GetConvName(pFileNames[i]), pFileNames[i]); if(pObj) pChildrenIds.Add(pObj->GetId()); } pFileNames = CSLRemoveStrings( pFileNames, i, 1, NULL ); } } return true;}
开发者ID:Mileslee,项目名称:wxgis,代码行数:19,
示例10: memcmpint BAGDataset::Identify( GDALOpenInfo * poOpenInfo ){/* -------------------------------------------------------------------- *//* Is it an HDF5 file? *//* -------------------------------------------------------------------- */ static const char achSignature[] = "/211HDF/r/n/032/n"; if( poOpenInfo->pabyHeader == NULL || memcmp(poOpenInfo->pabyHeader,achSignature,8) != 0 ) return FALSE;/* -------------------------------------------------------------------- *//* Does it have the extension .bag? *//* -------------------------------------------------------------------- */ if( !EQUAL(CPLGetExtension(poOpenInfo->pszFilename),"bag") ) return FALSE; return TRUE;}
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:20,
示例11: OGRAeronavFAADataSourcestatic GDALDataset *OGRAeronavFAADriverOpen( GDALOpenInfo* poOpenInfo ){ if (poOpenInfo->eAccess == GA_Update || poOpenInfo->fpL == NULL || !EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "dat") ) { return NULL; } OGRAeronavFAADataSource *poDS = new OGRAeronavFAADataSource(); if( !poDS->Open( poOpenInfo->pszFilename ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:20,
示例12: OGRPDFDataSourceOGRDataSource *OGRPDFDriver::Open( const char * pszFilename, int bUpdate ){ if( !EQUAL(CPLGetExtension(pszFilename), "pdf") || bUpdate ) return NULL;/* -------------------------------------------------------------------- *//* Try to create datasource. *//* -------------------------------------------------------------------- */ OGRPDFDataSource *poDS; poDS = new OGRPDFDataSource(); if( !poDS->Open( pszFilename ) ) { delete poDS; return NULL; } else return poDS;}
开发者ID:sylvainallard,项目名称:gdal,代码行数:21,
示例13: OGRGMLDriverIdentifystatic int OGRGMLDriverIdentify( GDALOpenInfo* poOpenInfo ){ if( poOpenInfo->fpL == NULL ) { if( strstr(poOpenInfo->pszFilename, "xsd=") != NULL ) return -1; /* must be later checked */ return FALSE; } /* Might be a OS-Mastermap gzipped GML, so let be nice and try to open */ /* it transparently with /vsigzip/ */ else if ( poOpenInfo->pabyHeader[0] == 0x1f && poOpenInfo->pabyHeader[1] == 0x8b && EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "gz") && strncmp(poOpenInfo->pszFilename, "/vsigzip/", strlen("/vsigzip/")) != 0 ) { return -1; /* must be later checked */ } else { const char* szPtr = (const char*)poOpenInfo->pabyHeader; if( ( (unsigned char)szPtr[0] == 0xEF ) && ( (unsigned char)szPtr[1] == 0xBB ) && ( (unsigned char)szPtr[2] == 0xBF) ) { szPtr += 3; }/* -------------------------------------------------------------------- *//* Here, we expect the opening chevrons of GML tree root element *//* -------------------------------------------------------------------- */ if( szPtr[0] != '<' ) return FALSE; if( !poOpenInfo->TryToIngest(4096) ) return FALSE; return OGRGMLDataSource::CheckHeader((const char*)poOpenInfo->pabyHeader); }}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:40,
示例14: GetGxCatalogbool wxGxLocalDBFactory::GetChildren(wxGxObject* pParent, char** &pFileNames, wxArrayLong & pChildrenIds){ wxGxCatalogBase* pCatalog = GetGxCatalog(); bool bCheckNames = CSLCount(pFileNames) < CHECK_DUBLES_MAX_COUNT; for(int i = CSLCount(pFileNames) - 1; i >= 0; i-- ) { VSIStatBufL BufL; int ret = VSIStatL(pFileNames[i], &BufL); if(ret == 0) { if (VSI_ISDIR(BufL.st_mode) && wxGISEQUAL(CPLGetExtension(pFileNames[i]), "gdb")) { wxGxObject* pObj = GetGxObject(pParent, wxString(CPLGetFilename(pFileNames[i]), wxConvUTF8), pFileNames[i], enumContGDBFolder, bCheckNames); if(pObj) pChildrenIds.Add(pObj->GetId()); pFileNames = CSLRemoveStrings( pFileNames, i, 1, NULL ); } //TODO: mdb, sqlite, db extensions } } return true;}
开发者ID:GimpoByte,项目名称:nextgismanager,代码行数:22,
示例15: CheckExtensionConsistencyvoid CheckExtensionConsistency(const char* pszDestFilename, const char* pszDriverName){ CPLString osExt = CPLGetExtension(pszDestFilename); if( !osExt.empty() ) { GDALDriverH hThisDrv = GDALGetDriverByName(pszDriverName); if( hThisDrv != NULL && DoesDriverHandleExtension(hThisDrv, osExt) ) return; const int nDriverCount = GDALGetDriverCount(); CPLString osConflictingDriverList; for( int i = 0; i < nDriverCount; i++ ) { GDALDriverH hDriver = GDALGetDriver(i); if( hDriver != hThisDrv && DoesDriverHandleExtension(hDriver, osExt) ) { if (osConflictingDriverList.size()) osConflictingDriverList += ", "; osConflictingDriverList += GDALGetDriverShortName(hDriver); } } if (osConflictingDriverList.size()) { fprintf( stderr, "Warning: The target file has a '%s' extension, " "which is normally used by the %s driver%s, " "but the requested output driver is %s. " "Is it really what you want?/n", osExt.c_str(), osConflictingDriverList.c_str(), strchr(osConflictingDriverList.c_str(), ',') ? "s" : "", pszDriverName); } }}
开发者ID:ryandavid,项目名称:rotobox,代码行数:39,
示例16: CheckDestDataSourceNameConsistencystaticvoid CheckDestDataSourceNameConsistency(const char* pszDestFilename, const char* pszDriverName){ int i; char* pszDestExtension = CPLStrdup(CPLGetExtension(pszDestFilename)); if( EQUAL(pszDriverName, "GMT") ) pszDriverName = "OGR_GMT"; CheckExtensionConsistency(pszDestFilename, pszDriverName); static const char* apszBeginName[][2] = { { "PG:" , "PostgreSQL" }, { "MySQL:" , "MySQL" }, { "CouchDB:" , "CouchDB" }, { "GFT:" , "GFT" }, { "MSSQL:" , "MSSQLSpatial" }, { "ODBC:" , "ODBC" }, { "OCI:" , "OCI" }, { "SDE:" , "SDE" }, { "WFS:" , "WFS" }, { NULL, NULL } }; for(i=0; apszBeginName[i][0] != NULL; i++) { if (EQUALN(pszDestFilename, apszBeginName[i][0], strlen(apszBeginName[i][0])) && !EQUAL(pszDriverName, apszBeginName[i][1])) { CPLError(CE_Warning, CPLE_AppDefined, "The target file has a name which is normally recognized by the %s driver,/n" "but the requested output driver is %s. Is it really what you want ?/n", apszBeginName[i][1], pszDriverName); break; } } CPLFree(pszDestExtension);}
开发者ID:ryandavid,项目名称:rotobox,代码行数:39,
示例17: CPLGetExtensionint ROIPACDataset::Identify( GDALOpenInfo *poOpenInfo ){/* -------------------------------------------------------------------- *//* Check if: *//* * 1. The data file extension is known *//* -------------------------------------------------------------------- */ const char *pszExtension = CPLGetExtension(poOpenInfo->pszFilename); if ( strcmp( pszExtension, "raw" ) == 0 ) { /* Since gdal do not read natively CInt8, more work is needed * to read raw files */ return false; } bool bExtensionIsValid = strcmp( pszExtension, "int" ) == 0 || strcmp( pszExtension, "slc" ) == 0 || strcmp( pszExtension, "amp" ) == 0 || strcmp( pszExtension, "cor" ) == 0 || strcmp( pszExtension, "hgt" ) == 0 || strcmp( pszExtension, "unw" ) == 0 || strcmp( pszExtension, "msk" ) == 0 || strcmp( pszExtension, "trans" ) == 0 || strcmp( pszExtension, "dem" ) == 0 || strcmp( pszExtension, "flg" ) == 0; if ( !bExtensionIsValid ) { return false; }/* -------------------------------------------------------------------- *//* * 2. there is a .rsc file *//* -------------------------------------------------------------------- */ CPLString osRscFilename = getRscFilename( poOpenInfo ); if ( osRscFilename.empty() ) { return false; } return true;}
开发者ID:nextgis-borsch,项目名称:lib_gdal,代码行数:39,
示例18: OGRXLSDataSourceOGRDataSource *OGRXLSDriver::Open( const char * pszFilename, int bUpdate ){ if (bUpdate) { return NULL; } if (!EQUAL(CPLGetExtension(pszFilename), "XLS")) { return NULL; } OGRXLSDataSource *poDS = new OGRXLSDataSource(); if( !poDS->Open( pszFilename, bUpdate ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:samalone,项目名称:gdal-ios,代码行数:23,
示例19: OGRXPlaneDataSourceOGRDataSource *OGRXPlaneDriver::Open( const char * pszFilename, int bUpdate ){ if ( bUpdate ) { return NULL; } if( !EQUAL(CPLGetExtension(pszFilename), "dat") ) return NULL; OGRXPlaneDataSource *poDS = new OGRXPlaneDataSource(); int bReadWholeFile = CSLTestBoolean(CPLGetConfigOption("OGR_XPLANE_READ_WHOLE_FILE", "TRUE")); if( !poDS->Open( pszFilename, bReadWholeFile ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:23,
示例20: OGRODBCDataSourceOGRDataSource *OGRODBCDriver::Open( const char * pszFilename, int bUpdate ){ OGRODBCDataSource *poDS; if( !EQUALN(pszFilename,"ODBC:",5) #ifdef WIN32 && !EQUAL(CPLGetExtension(pszFilename), "MDB")#endif ) return NULL; poDS = new OGRODBCDataSource(); if( !poDS->Open( pszFilename, bUpdate, TRUE ) ) { delete poDS; return NULL; } else return poDS;}
开发者ID:0004c,项目名称:node-gdal,代码行数:23,
示例21: VSIStatLOGRDataSource *OGRSXFDriver::Open( const char * pszFilename, int bUpdate ){/* -------------------------------------------------------------------- *//* Determine what sort of object this is. *//* -------------------------------------------------------------------- */ VSIStatBufL sStatBuf; if (!EQUAL(CPLGetExtension(pszFilename), "sxf") || VSIStatL(pszFilename, &sStatBuf) != 0 || !VSI_ISREG(sStatBuf.st_mode)) return FALSE; OGRSXFDataSource *poDS = new OGRSXFDataSource(); if( !poDS->Open( pszFilename, bUpdate ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:23,
示例22: memcpyint RIKDataset::Identify( GDALOpenInfo * poOpenInfo ){ if( poOpenInfo->fpL == NULL || poOpenInfo->nHeaderBytes < 50 ) return FALSE; if( EQUALN((const char *) poOpenInfo->pabyHeader, "RIK3", 4) ) { return TRUE; } else { GUInt16 actLength; memcpy(&actLength, poOpenInfo->pabyHeader, 2);#ifdef CPL_MSB CPL_SWAP16PTR( &actLength );#endif if( actLength + 2 > 1024 ) { return FALSE; } if( actLength == 0 ) return -1; for( int i=0;i<actLength;i++ ) { if( poOpenInfo->pabyHeader[2+i] == 0 ) return FALSE; } if( EQUAL( CPLGetExtension(poOpenInfo->pszFilename), "rik") ) return TRUE; // We really need Open to be able to conclude return -1; }}
开发者ID:MattLatt,项目名称:GDAL_2.0.x_VC,代码行数:37,
示例23: CPLGetExtensionOGRDataSource *OGRGeoconceptDriver::Open( const char* pszFilename, int bUpdate ){#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION/* -------------------------------------------------------------------- *//* We will only consider .gxt and .txt files. *//* -------------------------------------------------------------------- */ const char* pszExtension = CPLGetExtension(pszFilename); if( !EQUAL(pszExtension,"gxt") && !EQUAL(pszExtension,"txt") ) { return nullptr; }#endif OGRGeoconceptDataSource *poDS = new OGRGeoconceptDataSource(); if( !poDS->Open( pszFilename, true, CPL_TO_BOOL(bUpdate) ) ) { delete poDS; return nullptr; } return poDS;}
开发者ID:OSGeo,项目名称:gdal,代码行数:24,
示例24: OGRIdrisiDataSourceOGRDataSource *OGRIdrisiDriver::Open( const char * pszFilename, int bUpdate ){ if (bUpdate) { return NULL; }// --------------------------------------------------------------------// Does this appear to be a .vct file?// -------------------------------------------------------------------- if ( !EQUAL(CPLGetExtension(pszFilename), "vct") ) return NULL; OGRIdrisiDataSource *poDS = new OGRIdrisiDataSource(); if( !poDS->Open( pszFilename ) ) { delete poDS; poDS = NULL; } return poDS;}
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:24,
示例25: CPLGetExtensionOGRDataSource *OGRGeoconceptDriver::Open( const char* pszFilename, int bUpdate ){ OGRGeoconceptDataSource *poDS;/* -------------------------------------------------------------------- *//* We will only consider .gxt and .txt files. *//* -------------------------------------------------------------------- */ const char* pszExtension = CPLGetExtension(pszFilename); if( !EQUAL(pszExtension,"gxt") && !EQUAL(pszExtension,"txt") ) { return NULL; } poDS = new OGRGeoconceptDataSource(); if( !poDS->Open( pszFilename, TRUE, bUpdate ) ) { delete poDS; return NULL; } return poDS;}
开发者ID:samalone,项目名称:gdal-ios,代码行数:24,
示例26: CPLAssertint OGRTABDataSource::Create( const char * pszName, char **papszOptions ){ CPLAssert(m_pszName == nullptr); m_pszName = CPLStrdup(pszName); m_papszOptions = CSLDuplicate(papszOptions); m_bUpdate = TRUE; const char *pszOpt = CSLFetchNameValue(papszOptions, "FORMAT"); if( pszOpt != nullptr && EQUAL(pszOpt, "MIF") ) m_bCreateMIF = TRUE; else if( EQUAL(CPLGetExtension(pszName),"mif") || EQUAL(CPLGetExtension(pszName),"mid") ) m_bCreateMIF = TRUE; if( (pszOpt = CSLFetchNameValue(papszOptions,"SPATIAL_INDEX_MODE")) != nullptr ) { if( EQUAL(pszOpt, "QUICK") ) m_bQuickSpatialIndexMode = TRUE; else if( EQUAL(pszOpt, "OPTIMIZED") ) m_bQuickSpatialIndexMode = FALSE; } m_nBlockSize = atoi(CSLFetchNameValueDef(papszOptions, "BLOCKSIZE", "512")); // Create a new empty directory. VSIStatBufL sStat; if( strlen(CPLGetExtension(pszName)) == 0 ) { if( VSIStatL( pszName, &sStat ) == 0 ) { if( !VSI_ISDIR(sStat.st_mode) ) { CPLError(CE_Failure, CPLE_OpenFailed, "Attempt to create dataset named %s,/n" "but that is an existing file.", pszName); return FALSE; } } else { if( VSIMkdir(pszName, 0755) != 0 ) { CPLError(CE_Failure, CPLE_AppDefined, "Unable to create directory %s.", pszName); return FALSE; } } m_pszDirectory = CPLStrdup(pszName); } // Create a new single file. else { IMapInfoFile *poFile = nullptr; const char *pszEncoding( CSLFetchNameValue( papszOptions, "ENCODING" ) ); const char *pszCharset( IMapInfoFile::EncodingToCharset( pszEncoding ) ); if( m_bCreateMIF ) { poFile = new MIFFile; if( poFile->Open(m_pszName, TABWrite, FALSE, pszCharset) != 0 ) { delete poFile; return FALSE; } } else { TABFile *poTabFile = new TABFile; if( poTabFile->Open(m_pszName, TABWrite, FALSE, m_nBlockSize, pszCharset) != 0 ) { delete poTabFile; return FALSE; } poFile = poTabFile; } m_nLayerCount = 1; m_papoLayers = static_cast<IMapInfoFile **>(CPLMalloc(sizeof(void *))); m_papoLayers[0] = poFile; m_pszDirectory = CPLStrdup(CPLGetPath(pszName)); m_bSingleFile = TRUE; } return TRUE;}
开发者ID:ksshannon,项目名称:gdal,代码行数:96,
示例27: OGRGPSBabelDriverIdentifyInternalstatic bool OGRGPSBabelDriverIdentifyInternal( GDALOpenInfo* poOpenInfo, const char** ppszGSPBabelDriverName ){ if( STARTS_WITH_CI(poOpenInfo->pszFilename, "GPSBABEL:") ) return true; const char* pszGPSBabelDriverName = NULL; if( poOpenInfo->fpL == NULL ) return false; if (memcmp(poOpenInfo->pabyHeader, "MsRcd", 5) == 0) pszGPSBabelDriverName = "mapsource"; else if (memcmp(poOpenInfo->pabyHeader, "MsRcf", 5) == 0) pszGPSBabelDriverName = "gdb"; else if (strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "<osm") != NULL) pszGPSBabelDriverName = "osm"; else if (strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "$GPGSA") != NULL || strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "$GPGGA") != NULL) pszGPSBabelDriverName = "nmea"; else if (STARTS_WITH_CI((const char*)poOpenInfo->pabyHeader, "OziExplorer")) pszGPSBabelDriverName = "ozi"; else if (strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "Grid") && strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "Datum") && strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "Header")) pszGPSBabelDriverName = "garmin_txt"; else if (poOpenInfo->pabyHeader[0] == 13 && poOpenInfo->pabyHeader[10] == 'M' && poOpenInfo->pabyHeader[11] == 'S' && (poOpenInfo->pabyHeader[12] >= '0' && poOpenInfo->pabyHeader[12] <= '9') && (poOpenInfo->pabyHeader[13] >= '0' && poOpenInfo->pabyHeader[13] <= '9') && poOpenInfo->pabyHeader[12] * 10 + poOpenInfo->pabyHeader[13] >= 30 && (poOpenInfo->pabyHeader[14] == 1 || poOpenInfo->pabyHeader[14] == 2) && poOpenInfo->pabyHeader[15] == 0 && poOpenInfo->pabyHeader[16] == 0 && poOpenInfo->pabyHeader[17] == 0) pszGPSBabelDriverName = "mapsend"; else if (strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "$PMGNWPL") != NULL || strstr(reinterpret_cast<const char*>(poOpenInfo->pabyHeader), "$PMGNRTE") != NULL) pszGPSBabelDriverName = "magellan"; else if (poOpenInfo->pabyHeader[0] == 'A' && poOpenInfo->pabyHeader[1] >= 'A' && poOpenInfo->pabyHeader[1] <= 'Z' && poOpenInfo->pabyHeader[2] >= 'A' && poOpenInfo->pabyHeader[2] <= 'Z' && poOpenInfo->pabyHeader[3] >= 'A' && poOpenInfo->pabyHeader[3] <= 'Z' && EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "igc") ) pszGPSBabelDriverName = "igc"; static int bGPSBabelFound = -1; if( pszGPSBabelDriverName != NULL && bGPSBabelFound < 0 ) {#ifndef WIN32 VSIStatBufL sStat; bGPSBabelFound = VSIStatL("/usr/bin/gpsbabel", &sStat) == 0; if( !bGPSBabelFound )#endif { const char* const apszArgs[] = { "gpsbabel", "-V", NULL }; CPLString osTmpFileName("/vsimem/gpsbabel_tmp.tmp"); VSILFILE* tmpfp = VSIFOpenL(osTmpFileName, "wb"); bGPSBabelFound = (CPLSpawn(apszArgs, NULL, tmpfp, FALSE) == 0); VSIFCloseL(tmpfp); VSIUnlink(osTmpFileName); } } if( bGPSBabelFound ) *ppszGSPBabelDriverName = pszGPSBabelDriverName; return *ppszGSPBabelDriverName != NULL;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:65,
示例28: EQUALOGRDataSource *OGRGeomediaDriver::Open( const char * pszFilename, int bUpdate ){ OGRGeomediaDataSource *poDS; if( EQUALN(pszFilename, "WALK:", strlen("WALK:")) ) return NULL; if( EQUALN(pszFilename, "PGEO:", strlen("PGEO:")) ) return NULL; if( !EQUALN(pszFilename,"GEOMEDIA:",9) && !EQUAL(CPLGetExtension(pszFilename),"mdb") ) return NULL; /* Disabling the attempt to guess if a MDB file is a Geomedia database */ /* or not. See similar fix in PGeo driver for rationale. */#if 0 if( !EQUALN(pszFilename,"GEOMEDIA:",9) && EQUAL(CPLGetExtension(pszFilename),"mdb") ) { VSILFILE* fp = VSIFOpenL(pszFilename, "rb"); if (!fp) return NULL; GByte* pabyHeader = (GByte*) CPLMalloc(100000); VSIFReadL(pabyHeader, 100000, 1, fp); VSIFCloseL(fp); /* Look for GAliasTable table */ const GByte pabyNeedle[] = { 'G', 0, 'A', 0, 'l', 0, 'i', 0, 'a', 0, 's', 0, 'T', 0, 'a', 0, 'b', 0, 'l', 0, 'e'}; int bFound = FALSE; for(int i=0;i<100000 - (int)sizeof(pabyNeedle);i++) { if (memcmp(pabyHeader + i, pabyNeedle, sizeof(pabyNeedle)) == 0) { bFound = TRUE; break; } } CPLFree(pabyHeader); if (!bFound) return NULL; }#endif#ifndef WIN32 // Try to register MDB Tools driver // // ODBCINST.INI NOTE: // This operation requires write access to odbcinst.ini file // located in directory pointed by ODBCINISYS variable. // Usually, it points to /etc, so non-root users can overwrite this // setting ODBCINISYS with location they have write access to, e.g.: // $ export ODBCINISYS=$HOME/etc // $ touch $ODBCINISYS/odbcinst.ini // // See: http://www.unixodbc.org/internals.html // if ( !InstallMdbDriver() ) { CPLError( CE_Warning, CPLE_AppDefined, "Unable to install MDB driver for ODBC, MDB access may not supported./n" ); } else CPLDebug( "Geomedia", "MDB Tools driver installed successfully!");#endif /* ndef WIN32 */ // Open data source poDS = new OGRGeomediaDataSource(); if( !poDS->Open( pszFilename, bUpdate, TRUE ) ) { delete poDS; return NULL; } else return poDS;}
开发者ID:0004c,项目名称:node-gdal,代码行数:80,
注:本文中的CPLGetExtension函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ CPLGetFilename函数代码示例 C++ CPLGetConfigOption函数代码示例 |