Я следую учебному пособию на официальных сайтах GDAL, чтобы прочитать растр в память, но у меня появилась такая ошибка:
ERROR 6: Unhandled type for StripOffset/StripByteCount
ERROR 1: /*.tif, band 1: IReadBlock failed at X offset 0, Y offset 0: Unhandled type for StripOffset/StripByteCount
Вот пример, который я использую:
#include <iostream>
#include <gdal_priv.h>
#include <cpl_conv.h>
using namespace std;
int main()
{
const char* pszFile;
GDALAllRegister();
pszFile = "/*.tif";
GDALDataset* poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);
GDALRasterBand* poBand = poDataset->GetRasterBand(1);
float* pafScanline;
int nXSize = poBand->GetXSize();
pafScanline = (float*)CPLMalloc(sizeof(float) * nXSize);
poBand->RasterIO(GF_Read, 0, 0, nXSize, 1,
pafScanline, nXSize, 1, GDT_Float32,
0, 0);
system("pause");
return 0;
}
Я заменяю tif-файл на samllaer JPG-файл, все работает нормально, затем я использую Python API для чтения того же tif-файла, все тоже отлично работает, включая чтение этого большого растра, я ищу по inte rnet Выясните, что у некоторых людей есть такая же проблема, он рассказал, что не может прочитать растр больше 2G, но ему удается это обработать, преобразовав файл tif в файл img, и все работает прямо сейчас. Я хочу знать глубинную причину, по которой это происходит. Используемый мной Python API - это GDAL 2.4.1, а C ++ API - это GDAL 3.0.2. Это из-за версии gdal, которая вызывает эту проблему?