[GRASSLIST:8461] Re: extracting the value of a raster cell

Jason Horn jhorn at bu.edu
Fri Sep 30 11:34:40 EDT 2005


Thank you Hamish, for the response.

As usual, I don't think I was specific enough. What I'm looking for
is a way to extract the value of a particular raster cell.  r.what
will do the trick, but only if you know the exact coordinates.  I
want to loop through in a script and extract the value of each cell
in a raster coverage.  For example, if a raster layer was a 10x10
grid, I want the value of cell (1,1), then cell(2,1), then cell
(3,1), etc..  If I were to use r.what, calculating the location of
the next cell using resolution and the coordinates of the first cell,
I might accidentally skip a cell due to rounding errors.  r.mapcalc
allows you to access the value of a cell directly, but the result is
always another raster map - you can't output the cell value directly.

The reason for all of this is that I am trying to write my own script
for calculating the spatial mean of a given raster map.  I am
surprised that there is no facility for this in GRASS already - it
seems like such a basic spatial statistic.  My solution, so far, is
to output the map as an ascii file, then load the ascii file into an
array within a script.  It works, but seems like a ridiculous
workaround for something so simple.

If anyone can think of another way, please post it.  All suggestions
welcome.

I guess I should probably write my own module in C, but I've never
had much luck getting GRASS to compile successfully in the first
place, so I'll stick with the script route for now.

- Jason



On Sep 28, 2005, at 7:57 PM, Hamish wrote:


>> Does anyone know how to extract the value of a cell at given
>> coordinates from a raster layer?
>>
>>
>
> r.what
>
>
>
>> I am writing a script that will calculate the spatial mean for a  
>> given
>> raster layer. Therefore, I need to be able to access the values of
>> raster cells.
>>
>>
>
> r.univar?
>
> If you want the stats within a buffer around a point, I would  
> suggest a
> vector point map -> v.buffer -> v.to.rast -> MASK map -> r.univar in a
> loop, or probably simpler with Markus's new v.rast.stats module in
> 6.1-cvs.
>
>
>
> Hamish
>
>
>
>




More information about the grass-user mailing list