结合C++和GDAL实现shapefile(shp)文件的读取

工具:vs2012+GDAL 2.0

数据:中国省界SHP文件bou2_4p.shp   可点击下载

包含头文件:

#include "ogrsf_frmts.h"

代码:

int main()
{
GDALAllRegister(); GDALDataset
*poDS; CPLSetConfigOption("SHAPE_ENCODING",""); //解决中文乱码问题 //读取shp文件 poDS = (GDALDataset*) GDALOpenEx("d:/shapefile/bou2_4p.shp", GDAL_OF_VECTOR, NULL, NULL, NULL ); if( poDS == NULL ) { printf( "Open failed.\n%s" ); return 0; } OGRLayer *poLayer; poLayer = poDS->GetLayer(0); //读取层 OGRFeature *poFeature; poLayer->ResetReading(); int i=0; while( (poFeature = poLayer->GetNextFeature()) != NULL ) { if(poFeature->GetFieldAsDouble("AREA")<1) continue; //去掉面积过小的polygon i=i++; cout<<i<<" "; OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn(); int iField; int n=poFDefn->GetFieldCount(); //获得字段的数目,不包括前两个字段(FID,Shape); for( iField = 0; iField <n; iField++ ) { //输出每个字段的值 cout<<poFeature->GetFieldAsString(iField)<<" "; } cout<<endl; OGRFeature::DestroyFeature( poFeature ); } GDALClose( poDS ); system("pause"); return 1;
}

结果显示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值