[Gdal-dev] GDAL in delphi .. reading pixel values (Esri grids)
jk nz
jk_nzd at hotmail.com
Mon Apr 26 18:42:43 EDT 2004
Hi,
Thanks thats a start at least :) .. why does the code have GetRasterBand
repeated twice in a row, or is that a typo?
for (int layer = 1; layer <= poDataset->GetRasterCount(); layer++){
poBand = poDataset->GetRasterBand( layer );
poBand = poDataset->GetRasterBand( layer );
poBand->RasterIO( GF_Read, xPixel, yLine, 1, 1, pafScanline, 1, 1,
GDT_Float32, 0, 0 );
And what is the point of the transform? I thought I would be able to do
RasterIO and that would give me one line of the grid, and I would then just
read that line one element at a time .. or is it not that simple? I dont
really know too much about GIS stuff.. I have an application that works
fine with tab delimited ascii grids, but thats not going to be useful in the
real world :)
Regards
JK.
>From: Andrew Finley <afinley at gis.umn.edu>
>Reply-To: gdal-dev at remotesensing.org
>To: gdal-dev at remotesensing.org
>Subject: Re: [Gdal-dev] GDAL in delphi .. reading pixel values (Esri grids)
>Date: 26 Apr 2004 08:42:50 -0500
>
>Hi JK,
>I think there is a similar chunk of code in the list archives, but here
>it is again. Attached are two files, getPixelValueGdal.cpp and
>parameterfile. The parameterfile describes the image location and the
>coordinate file (i.e., point xy locations). This is set up for ERDAS
>images, I think you will only have to change the driver for it to read
>grids. Hope this helps. Let me know if you have any questions.
>-Andy
>
>
>On Mon, 2004-04-26 at 00:48, jk nz wrote:
> > Has anyone tried using GDAL from the Borland Delphi language?
> >
> > I have been mostly sucessful in doing so, but having problems reading
>pixel
> > values from an esri grid..
> >
> > Does anyone have sample code of reading pixels? C is ok .. I have seen
> > sample of reading blocks but that wasnt quite what I wanted ...
> >
> > I do not know how to extract the pixel values as I dont know how they
>are
> > laid out in memory .. is it a 2d grid, or a 1d grid?
> >
> > eg is it laid out in memory as
> >
> > row1 [px1][px2][px3][...]
> > row2 (possible some memory gap in between rows) [px10][px11][...]
> >
> > or as row1 [px1][px2][...] (row2, no gap in memory, next pixel is at
>address
> > pxN+ sizeof(px)) [px10][...]
> >
> > It appears I have to use pointer arithmetic to index the block, ie
>pixelN :=
> > block[index] works fine if it is a 1d grid in memory, but its not so
>easy if
> > its a 2d grid, as the operator block[x,y] is not valid in delphi
> >
> > So I'm trying to figure out what happens at the end of a row? is the
>first
> > element of the next row located in the next memory address or ...?
> >
> > Any help appreciated
> >
> > Regards
> >
> > JK.
> >
> >
> > Here is my code: - everything appears to work, apart from reading
>individual
> > pixel values.
> >
> > for i := 0 to nYBlocks - 1 do // i = Y block index
> > for j := 0 to nYBlocks - 1 do // j = X block index
> > begin
> > GDALReadBlock(RasterBand, j, i, pafScanline);
> >
> > // compute which part of the block is valid for partial
> > blocks
> > if(i * nBlockYSize > nY) then
> > nYValid := nY - i * nBlockYSize
> > else
> > nYValid := nBlockYSize;
> >
> > if(j * nBlockXSize > nX) then
> > nXValid := nX - j * nBlockXSize
> > else
> > nXValid := nBlockXSize;
> >
> > doubleptr := @pafScanline;
> >
> > for k := 0 to nYValid - 1 do // k = Y cell index
> > for l := 0 to nXValid - 1 do // l = X cell index
> > begin
> > inc(doubleptr);
> > cell := doubleptr^;
> > // debugging stuff, did we get an ok value or not?
> > if cell > 0 then
> > ShowMessage(FloatToStr(cell));
> > end; // for l, for k
> > end; // for j, for i
> >
> > _________________________________________________________________
> > Need more speed? Get Xtra JetStream @ http://xtra.co.nz/jetstream
> >
> > _______________________________________________
> > Gdal-dev mailing list
> > Gdal-dev at remotesensing.org
> > http://remotesensing.org/mailman/listinfo/gdal-dev
>--
>Andrew Finley, Research Fellow
>Department of Forest Resources
>College of Natural Resources
>University of Minnesota
>305 Green Hall
>1530 Cleveland Avenue N.
>St. Paul, MN 55108
>
>Ph 612-624-1714 office
>www.cnr.umn.edu/FR/people/facstaff/finley/index.html
><< getPixelValueGdal.cpp >>
><< parameterfile >>
_________________________________________________________________
Surf the net and talk on the phone with Xtra JetStream @
http://xtra.co.nz/jetstream
More information about the Gdal-dev
mailing list