对于烂大街的vs添加GDAL库就不说了,百度上一搜索一大片。
下面介绍windows下的QT(mingw版)+GDAL。
QT所有版本下载链接:https://download.qt.io/archive/qt/
1.QT自行下载.
2.已经编译好的GDAL库下载:https://download.csdn.net/download/carry_qt/10648004
3.添加GDAL库
①右键项目——>添加库——>外部库——>浏览选择对应文件——>完成。
4.添加完成后在.pro项目文件中会多出几行代码,要删除掉else:win32最后的d字母。
5.执行qmake,然后将解压的GDAL库文件夹下的bin目录下面的.dll动态链接库添加到Debug文件夹下面即可。
测试代码:
OGRRegisterAll();
OGRDataSource *poDS;
poDS = OGRSFDriverRegistrar::Open( "H:\\行政区\\县界.shp", FALSE );
if( poDS == NULL )
{
qDebug()<<"Open failed!";
exit( 1 );
}
OGRLayer *poLayer;
poLayer = poDS->GetLayerByName( "县界" );
OGRFeature *poFeature;
poLayer->ResetReading();
while( (poFeature = poLayer->GetNextFeature()) != NULL )//获得要素
{
OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();
int iField;
poFDefn->GetFieldCount(); //获得字段的数目
for( iField = 0; iField < poFDefn->GetFieldCount(); iField++ )
{
OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn( iField );
//根据字段值得类型,选择对应的输出
if( poFieldDefn->GetType() == OFTInteger )
qDebug()<<poFeature->GetFieldAsString(iField);
else if( poFieldDefn->GetType() == OFTReal )
qDebug()<<poFeature->GetFieldAsString(iField);
else if( poFieldDefn->GetType() == OFTString )
qDebug()<<poFeature->GetFieldAsString(iField);
else
qDebug()<<poFeature->GetFieldAsString(iField);
}
OGRGeometry *poGeometry;
poGeometry = poFeature->GetGeometryRef();
if( poGeometry != NULL
&& wkbFlatten(poGeometry->getGeometryType()) == wkbPoint )
{
OGRPoint *poPoint = (OGRPoint *) poGeometry;
qDebug()<<poPoint->getX();
qDebug()<<poPoint->getY();
}
else
{
qDebug()<<"no point geometry!";
}
OGRFeature::DestroyFeature( poFeature );
}
OGRDataSource::DestroyDataSource( poDS );
return;