写一个用gdal读取shpfile数据的c++代码
时间: 2024-03-09 20:44:43 浏览: 241
好的,以下是一个使用GDAL读取Shpfile数据的C++代码示例:
```c++
#include "gdal/gdal_priv.h"
#include "gdal/cpl_conv.h"
int main() {
GDALAllRegister(); // 注册所有驱动程序
// 打开Shapefile文件
GDALDataset* dataset = (GDALDataset*)GDALOpenEx("test.shp", GDAL_OF_VECTOR, NULL, NULL, NULL);
if (dataset == NULL) {
printf("Open shapefile failed!\n");
return 1;
}
// 获取图层数量
int layerCount = dataset->GetLayerCount();
printf("Layer count: %d\n", layerCount);
// 获取第一个图层
OGRLayer* layer = dataset->GetLayer(0);
// 获取要素数量
int featureCount = layer->GetFeatureCount();
printf("Feature count: %d\n", featureCount);
// 遍历所有要素
OGRFeature* feature = nullptr;
layer->ResetReading();
while ((feature = layer->GetNextFeature()) != NULL) {
// 获取要素的几何形状
OGRGeometry* geometry = feature->GetGeometryRef();
if (geometry != NULL) {
OGRwkbGeometryType geometryType = geometry->getGeometryType();
printf("Geometry Type: %s\n", OGRGeometryTypeToName(geometryType));
}
// 获取要素的属性
OGRFeatureDefn* featureDefn = layer->GetLayerDefn();
for (int i = 0; i < featureDefn->GetFieldCount(); i++) {
OGRFieldDefn* fieldDefn = featureDefn->GetFieldDefn(i);
printf("%s: %s\n", fieldDefn->GetNameRef(), feature->GetFieldAsString(i));
}
OGRFeature::DestroyFeature(feature);
}
// 关闭数据集
GDALClose(dataset);
return 0;
}
```
这个示例代码使用GDAL的C++ API打开Shpfile文件,获取第一个图层,遍历所有要素,输出每个要素的几何形状和属性。需要注意的是,为了使用GDAL的C++ API,需要添加GDAL头文件,并链接GDAL库。
阅读全文
相关推荐














