这篇文档是为了说明怎样从一个文件里用OGR 的C++类读取和写入数据
强烈建议在读此文档之前首先阅读介绍 OGR 体系结构介绍文档,里面介绍了OGR 里主要的类以及他们所完成的功能
从OGR 读取数据 为了描述如何通过 OGR 读取数据,我们编写一个小的示例,从OGR 文件里读出数据,并按照一定格式输出
首先我们需要注册我们渴望读取的所有格式
这个通过调用OGRRegisterAll()就能很容易完成,这个函数注册了GDAL/OGR 支持的所有格式
#i nclude "ogrsf_frmts
h" int main() { OGRRegisterAll(); 下一步我们将打开输入的OGR 数据文件
数据文件可以是文件,关系型数据库,文件路径,甚至可能是远程的网络服务,这点取决于我们使用的驱动
但是,数据源的名字通常只是一个简单的字符串
既然这样拿我们就编写一个打开 shapefile 的程序
第二个参数(FLALSE)告诉 OGRSFDriverRegistrar::Open() 函数我们不需要 update access
如果失败返回 NULL,并报错
OGRDataSource *poDS; poDS = OGRSFDriverRegistrar::Open( "point
shp", FALSE ); if( poDS == NULL ) { printf( "Open failed
\n" ); exit( 1 ); } 一个OGRDataSource 可 能 包 含 很 多 的层
所 包 含 层 的数量 我 们 可 以 用过 调OGRDataSource::GetLayerCount() 得 到 , 并 且 其 中 每 一个曾 我 们 利 用索 引 调 用OGRDataSource::GetLayer()得到
不过,我们现在利用层的名字