GDAL中对矢量数据的读写操作都是基于OGR库,只要编译了GDAL库就可以使用OGR库,不用另外编译,但须添加相应的头文件#include “ogrsf_frmts.h”。我读取的文件为shp文件,shp文件只有一个图层,相对比较简单。对于点、线矢量文件,这里不只是if (wkbPoint==geotype)和if ( wkbLineString==geotype),还有multiPoint和multiLine类型,具体的读入到下一篇读取polygon时在说明。
获取图层
int iLayerCount=poSrcDS->GetLayerCount();
OGRLayer*poLayer=poSrcDS->GetLayer(0);
if (poLayer==NULL)
{
QMessageBox::information(this,tr(“Waring”), tr(“获取图层失败!”));
OGRDataSource::DestroyDataSource(poSrcDS);
return;
}
初始化图层
poLayer->ResetReading();
///获取属性表表头信息
int iFeatureCount=poLayer->GetFeatureCount(); //获得要素个数
OGRSpatialReference *shp_spf;
shp_spf=poLayer->GetSpatialRef(); //获得矢量数据的投影信息
int PNum=0; //记录点的个数