Ошибка записи TIFF из данных сетки с GDAL - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь преобразовать набор точек (определенных как векторы) в tif.Я нашел код для создания сетки, но я не знаю, как сохранить сетку в формате TIF на диске.Я использую GDALGrid, но появляется следующая ошибка:

Исключение, выданное в 0x00007FF845FF6BAF (gdal202.dll) в Prueba open.exe: 0xC0000005: Место чтения нарушения доступа 0xFFFFFFFFFFFFFFFF.

GDALAllRegister();
int nWidth = 1981;
int nHeight = 1842;
double *pGridData = new double[nWidth*nHeight];
memset(pGridData, 0, sizeof(double)*nWidth*nHeight);

// Vector data
double dfX[] = {3646.4312434374951,3165.9293659374962,3198.8404534375004,2323.4055259374945,2112.7745659374996,2876.3117959374940,2112.7745659374996,2112.7745659374996,3646.4312434374951,3646.4312434374951};
double dfY[] = {2429.1661706250161,2889.9213956250169,3929.9117606249929,3311.1833156249777,2343.5973431250022,1981.5753806249995,1981.5753806249995,3929.9117606249929,1981.5753806249995,3929.9117606249929};
double dfZ[] = {26.009000778198242,70.081001281738281,81.489997863769531,91.760002136230469,227.47500610351562,44.508998870849609,73.625880031847814,435.36212516732496,195.52794381616283,59.967212370570905};


std::vector<double> padfX(dfX, dfX + 10);
std::vector<double> padfY(dfY, dfY + 10);
std::vector<double> padfZ(dfZ, dfZ + 10);

std::vector<double>::iterator it = std::min_element(padfX.begin(), padfX.end());
double  dfXMin = *it;
it = std::max_element(padfX.begin(), padfX.end());
double  dfXMax = *it;
it = std::min_element(padfY.begin(), padfY.end());
double  dfYMin = *it;
it = std::max_element(padfY.begin(), padfY.end());
double  dfYMax = *it;

// Create Grid
memset(pGridData, 0, sizeof(double)*nWidth*nHeight);

GDALGridLinearOptions  *poOptions = new GDALGridLinearOptions();
poOptions->dfNoDataValue = 0;
poOptions->dfRadius = 0;


GDALGridCreate(GGA_Linear, poOptions, padfX.size(), &(padfX[0]), &(padfY[0]), &(padfZ[0]), \
dfXMin, dfXMax, dfYMin, dfYMax, nWidth, nHeight, GDT_Float64, pGridData, NULL, NULL);

// Save Grid
char *tiffFile = "test.tif";
GDALGrid(tiffFile, pGridData, NULL, NULL);
...