Hi Even,

I'm playing with the C API for the GDAL programs inside GMT. More specifically 
with the gdal_grid C API. All in all I managed to make it work but there are 
some issues.
The main problem is that apparently the API was not thought to keep the result 
in memory.

What ended up doing was this

               hDstDS = GDALGrid("NUL", hSrcDS, psOptions, &bUsageError);
...
               if ((tmp = calloc((size_t)nYSize * (size_t)nXSize, nPixelSize)) 
== NULL) {
                              GMT_Report (GMT->parent, GMT_MSG_NORMAL, 
"gdalread: failure to allocate enough memory\n");
                              GDALDestroyDriverManager();
                              return -1;
               }

               if ((gdal_code = GDALRasterIO(hBand, GF_Read, 0, 0, nXSize, 
nYSize, tmp,
                               nXSize, nYSize, GDALGetRasterDataType(hBand), 0, 
0)) != CE_None) {
                              GMT_Report (GMT->parent, GMT_MSG_NORMAL, 
"GDALRasterIO failed to open band [err = %d]\n", gdal_code);
               }

-Note that I'm using "NUL" for the output file name because that was the only 
way I found to prevent saving the file in disk (remember, I want to have it 
memory).

-The second thing not shown above is that I had to use "-ot GTiff" in the 
psOptions. Using "-ot Memory" lead to errors.

-Although using "NUL" works, GDAL prints these error messages when at the end I 
close the DS (GDALClose(hSrcDS);)
               ERROR 1: TIFFScanlineSize64:Computed scanline size is zero
               ERROR 1: TIFFWriteEncodedStrip:Must set "ImageWidth" before 
writing data
               ERROR 1: FillEmptyTiles() failed because panByteCounts == NULL

-Last thing. I was forced to make a copy of the array in order to extract the 
grid  from the hDstDS handle via GDALRasterIO().

Ok, so my questions are. Is there a better way to do this? Could we, by some 
mean, send in a pre-allocated array and owned by the external program to the 
API so the duplication step could be avoided?

Thanks

Joaquim
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to