最新版GDAL 读取shape文件

_BetterZ 2017-07-06 03:04:16
项目需求,用了新版的GDAL,以前的读写shape方法:
OGRSFDriverRegistrar * pRegistrar = OGRSFDriverRegistrar::GetRegistrar();
OGRSFDriver *pOGRDriver = pRegistrar->GetDriverByName("ESRI Shapefile");
OGRDataSource * pOGRDataSource = pOGRDriver->Open( shpFileName,TRUE );
OGRLayer *pLayer =pOGRDataSource->GetLayer(0);

pLayer->ResetReading();
int count = pLayer->GetFeatureCount();
for (int i = 0; i < count; i++)
{
OGRFeature * pFeature = pLayer->GetFeature(i);
……
} 现在用不了了,因为GetDriverByName() 这个函数返回的GDALDriver,现在我是不知道怎么获取OGRSFLayer了,求助各位大神了。

新版的ogrsf_frmts.h/好像是2015年的
******************************************************************************
* $Id: ogrsf_frmts.h 29035 2015-04-27 12:38:54Z rouault $
*
* Project: OpenGIS Simple Features Reference Implementation
* Purpose: Classes related to format registration, and file opening.
* Author: Frank Warmerdam, warmerda@home.com
*
******************************************************************************
...全文
466 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_BetterZ 2017-07-06
  • 打赏
  • 举报
回复
找到了新旧版的区别了,1.x和2.x http://blog.csdn.net/liminlu0314/article/details/72961663
_BetterZ 2017-07-06
  • 打赏
  • 举报
回复
附上新版部分代码: class CPL_DLL OGRSFDriverRegistrar { OGRSFDriverRegistrar(); ~OGRSFDriverRegistrar(); static GDALDataset* OpenWithDriverArg(GDALDriver* poDriver, GDALOpenInfo* poOpenInfo); static GDALDataset* CreateVectorOnly( GDALDriver* poDriver, const char * pszName, char ** papszOptions ); static CPLErr DeleteDataSource( GDALDriver* poDriver, const char * pszName ); public: static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED("Use GDALDriverManager class instead"); void RegisterDriver( OGRSFDriver * poDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead"); int GetDriverCount( void ) OGR_DEPRECATED("Use GDALDriverManager class instead"); GDALDriver *GetDriver( int iDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead"); GDALDriver *GetDriverByName( const char * ) OGR_DEPRECATED("Use GDALDriverManager class instead"); int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead"); OGRDataSource *GetOpenDS( int ) OGR_DEPRECATED("Use GDALDriverManager class instead"); }; class CPL_DLL GDALDriver : public GDALMajorObject { public: GDALDriver(); ~GDALDriver(); virtual CPLErr SetMetadataItem( const char * pszName, const char * pszValue, const char * pszDomain = "" ); /* -------------------------------------------------------------------- */ /* Public C++ methods. */ /* -------------------------------------------------------------------- */ GDALDataset *Create( const char * pszName, int nXSize, int nYSize, int nBands, GDALDataType eType, char ** papszOptions ) CPL_WARN_UNUSED_RESULT; CPLErr Delete( const char * pszName ); CPLErr Rename( const char * pszNewName, const char * pszOldName ); CPLErr CopyFiles( const char * pszNewName, const char * pszOldName ); GDALDataset *CreateCopy( const char *, GDALDataset *, int, char **, GDALProgressFunc pfnProgress, void * pProgressData ) CPL_WARN_UNUSED_RESULT; /* -------------------------------------------------------------------- */ /* The following are semiprivate, not intended to be accessed */ /* by anyone but the formats instantiating and populating the */ /* drivers. */ /* -------------------------------------------------------------------- */ GDALDataset *(*pfnOpen)( GDALOpenInfo * ); GDALDataset *(*pfnCreate)( const char * pszName, int nXSize, int nYSize, int nBands, GDALDataType eType, char ** papszOptions ); CPLErr (*pfnDelete)( const char * pszName ); GDALDataset *(*pfnCreateCopy)( const char *, GDALDataset *, int, char **, GDALProgressFunc pfnProgress, void * pProgressData ); void *pDriverData; void (*pfnUnloadDriver)(GDALDriver *); /* Return 1 if the passed file is certainly recognized by the driver */ /* Return 0 if the passed file is certainly NOT recognized by the driver */ /* Return -1 if the passed file may be or may not be recognized by the driver, and that a potentially costly test must be done with pfnOpen */ int (*pfnIdentify)( GDALOpenInfo * ); CPLErr (*pfnRename)( const char * pszNewName, const char * pszOldName ); CPLErr (*pfnCopyFiles)( const char * pszNewName, const char * pszOldName ); /* For legacy OGR drivers */ GDALDataset *(*pfnOpenWithDriverArg)( GDALDriver*, GDALOpenInfo * ); GDALDataset *(*pfnCreateVectorOnly)( GDALDriver*, const char * pszName, char ** papszOptions ); CPLErr (*pfnDeleteDataSource)( GDALDriver*, const char * pszName ); /* -------------------------------------------------------------------- */ /* Helper methods. */ /* -------------------------------------------------------------------- */ GDALDataset *DefaultCreateCopy( const char *, GDALDataset *, int, char **, GDALProgressFunc pfnProgress, void * pProgressData ) CPL_WARN_UNUSED_RESULT; static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS, GDALDataset *poDstDS, int bStrict ); static CPLErr QuietDelete( const char * pszName ); CPLErr DefaultRename( const char * pszNewName, const char * pszOldName ); CPLErr DefaultCopyFiles( const char * pszNewName, const char * pszOldName ); };

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧