[gdal-dev] read whole elevation data from geotif to vector[x][y]

peb aryan peb.aryan at student.tuwien.ac.at
Wed Jun 18 05:20:21 PDT 2014


Hi Robert,

if you use opencv there is an easy way to pass buffer from RasterIO to a
cv::Mat

double *padRasterData =
(double*)CPLMalloc(iGridsizeX*iGridsizeY*sizeof(double));

h_dataset->RasterIO(GF_Read, 0, 0, iGridsizeX, iGridsizeY, padRasterData,
iGridsizeX, iGridsizeY, GDT_Float64, 1,NULL,0,0,0);

cv::Mat img = cv::Mat(iGridsizeY, iGridsizeX, CV_64F, &padRasterData[0]);

...

CPLFree( padRasterData );

cheers,

peb


On Tue, Jun 17, 2014 at 8:56 PM, Robert Grah <smilingmolecule at web.de> wrote:

> Hallo,
>
> i think this question is somehow a bit stupid but I have to ask it anyway
> because i can not find a good working solution.
> I try to read the whole elevation data from a band of a GeoTiff image into
> a c++ 2d vector so that I can read the values like vector[x][y].
> I also like to convert the data to an image and perform other operations.
>
> I tried it like this, but this gives me the data in a strange order:
>
> poBand->RasterIO( GF_Read, 0, 0, nXSize, nYSize,
>  pafScanline2, nXSize, nYSize, GDT_Float32,
>  0, 0 );
>  int totalCount = 0;
>  for (int i = 0; i GetXSize(); i++){
>
>  vector yVal;
>  for (int j = 0; j GetYSize(); j++){
>  yVal.push_back(pafScanline2[totalCount]);
>  totalCount++;
>  }
>  altData.push_back(yVal);
>  }
>
>
> I also tried to read every single value step by step, but this was really
> slow.
> Is there an easy way to get the values ordered like the pixels of an image?
> From left to right and top to bottom? I think i am overlooking something...
>
> Cheers,
> Robert
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20140618/79ee39c8/attachment.html>


More information about the gdal-dev mailing list