使用libgdal从文件中获取地形的轮廓

Get contours of the terrain from file with libgdal

本文关键字:轮廓 获取 libgdal 文件 使用      更新时间:2023-10-16

我正在尝试使用C++和libgdal库将GeoTIFF图像转换为GEOJson数据。

我可以这样做:

gdal_contour -i <shift> -snodata 32767 -f "GeoJSON" -a height <input.file> <output.file>

文件说:

此实用程序的功能可以通过 C 和GDALContourGenerate()完成。

这个函数有一组相当明确的参数,除了两个:GDALRasterBandH hBandvoid *hLayer.据我了解,这实际上是输入和输出。但是,我不知道如何初始化这两个对象。

我试着这样做:

OGRLayerH *lr = new OGRLayerH;
if (GDALContourGenerate(GDALOpen("/file/path.tif", GA_ReadOnly), 10, 0, 0, nullptr, false, 0, lr, -1, -1, nullptr, nullptr) == CE_None)
{
printf("success");
}
else
{
printf("fail");
}

但我认为我犯了一些错误。你能建议一下吗?

您需要从图像文件中读取波段。nBandIn是带有波段号的整数值。然后,您可以在代码中使用hBand。也不要忘记打电话给GDALAllRegister();ro能够读取文件

GDALDatasetH hSrcDS = GDALOpen("/file/path.tif", GA_ReadOnly);
if( hSrcDS == nullptr )
exit( 2 );
GDALRasterBandH hBand = GDALGetRasterBand( hSrcDS, nBandIn );
if( hBand == nullptr )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Band %d does not exist on dataset.",
nBandIn );
exit(2);
}