使用RasterIO
结构GDALResampleAlg
方法有GDALRasterIOExtraArg
选项:
http://www.gdal.org/structGDALRasterIOExtraArg.html
GDAL tutorial有一个这样的示例,用于从栅格波段读取数据:
poBand->RasterIO( GF_Read, Xoffset, Yoffset, nXSize, nYSize,
pafScanline, outXSize, outYSize, GDT_Float32,
0, 0);
并且未使用的第12个参数可以采用GDALRasterIOExtraArg
中的重采样选项。
http://www.gdal.org/classGDALRasterBand.html#a30786c81246455321e96d73047b8edf1
如何编写C ++实际传入选项?我可以从常量中实例化选项:
// how to pass this option in to RasterIO?
GDALResampleAlg eResampleAlg = GRA_NearestNeighbour;
但是我不太了解C ++,看看如何实际使用它,我找不到任何足以让它发挥作用的例子。
答案 0 :(得分:0)
这是一种方法,有一个宏INIT_RASTERIO_EXTRA_ARG
设置了额外的arg结构,在这里列出:
http://www.gdal.org/gdal_8h.html#a16efcda82b88e49244dbbf4d5d2157c4
然后将eResampleAlg
属性设置为适当的常量。某些情况下需要一些其他额外的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);
请点击此处查看更多http://www.gdal.org/structGDALRasterIOExtraArg.html