gdal 读取点要素

阅读: 评论:0

gdal 读取点要素

gdal 读取点要素

本人log中所有未注明转载的文章和blog一般为本人原创或整理加工,

原创文章版权本人(lonefox)所有;转载文章版权归原作者所有;

欢迎转载,但请注明出处,保留作者和版权信息。

===================================

最近项目中使用GDAL/OGR库读写mif和tab文件, 经过几天的折腾,积累了点点经验,且记之.

1. OGRSFDriverRegistrar::Open(Path, FALSE);只能读文件

对于OGRSFDriverRegistrar::Open方法, ogr内置的mif/TAB读写库MITAB是不支持该方法的更新的,看下面的MITAB源码:

OGRDataSource *OGRTABDriver::Open(constchar* pszFilename,

intbUpdate )

{

OGRTABDataSource    *poDS;

if( bUpdate )//请注意这儿,如果bUpdate为TRUE,则直接返回NULL

{

returnNULL;

}

//other code

}

OGRDataSource *OGRTABDriver::Open( const char * pszFilename,

int bUpdate )

{

OGRTABDataSource *poDS;

if( bUpdate )//请注意这儿,如果bUpdate为TRUE,则直接返回NULL

{

return NULL;

}

//other code

}

再深入源码,你会发现,通过Open方法传给IMapInfoFile类访问文件的方式是TABRead,而非TABWrite

也许你会说"这是OGRTABDriver的方法, 可以看看OGRMIFDriver的方法?", 遗憾, 我们只能用 RegisterOGRTAB(); 注册mif和tab通用的驱动,RegisterOGRMIF();是一个只有定义而没有函数实现的美丽谎言, 不知道OGR库留着这个定义的目的何在。也不存在OGRMIFDriver,OGRTABDriver通吃mif和tab文件。这也是我们的第二点。

2.只使用RegisterOGRTAB();注册tab/MIF文件读写驱动

原因上面已经提过。单凭RegisterOGRTAB();已足够。

mif和tab文件的读取都是通过Open方法,MITAB库内部会调用SmartOpen方法区分是mif/mid后缀或是tab后缀。

3.写mif/tab文件的方法

OGRSFDriver *pDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("MapInfo File");

OGRDataSource *pDSTAB = pDriver->CreateDataSource(strTabPath);//创建一个文件,根据扩展名自动判断是创建mif文件或tab文件

lonefox的解释: MITAB库在实现CreateDataS

本文发布于:2024-02-01 04:53:23,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673440234009.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:要素   gdal
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23