如何将GDALResampleAlg传递给GDAL的RasterIO?

how to pass in a GDALResampleAlg to GDAL's RasterIO?

本文关键字:GDAL RasterIO GDALResampleAlg      更新时间:2023-10-16

RasterIO方法使用GDALRasterIOExtraArg结构:

具有GDALResampleAlg选项

链接

GDAL教程具有这样的示例,用于读取栅格频段的数据:

  poBand->RasterIO( GF_Read, Xoffset, Yoffset, nXSize, nYSize,
                    pafScanline, outXSize, outYSize, GDT_Float32,
                    0, 0);

和未使用的第12个参数可以在GDALRasterIOExtraArg中采用重新采样选项。

链接

一个人如何编写C 以实际通过该选项?我可以从常数实例化选项:

 // how to pass this option in to RasterIO?
  GDALResampleAlg eResampleAlg = GRA_NearestNeighbour;

但我不太了解C ,无法看到如何实际使用它,而且我找不到任何可以遵循的示例以使其正常工作。

这是一种方法,有一个宏INIT_RASTERIO_EXTRA_ARG设置超级ARG结构,此处列出:

链接

然后将eResampleAlg属性设置为适当的常数。在某些情况下,需要其他一些ARTR-ARG参数,但这不在此问题的范围之内。

float *pafScanline;
GDALRasterIOExtraArg psExtraArg;
INIT_RASTERIO_EXTRA_ARG(psExtraArg);
// TODO expose the resampling options to user
psExtraArg.eResampleAlg = GRIORA_NearestNeighbour;
pafScanline = (float *) CPLMalloc(sizeof(float)*outXSize*outYSize);
CPLErr err = poBand->RasterIO( GF_Read, Xoffset, Yoffset, nXSize, nYSize,
                pafScanline, outXSize, outYSize, GDT_Float32,
                0, 0, &psExtraArg);

请参阅此处有关更多链接