[GRASS-user] find (x,y) index of data

Moritz Lennert mlennert at club.worldonline.be
Sun Feb 7 00:16:37 PST 2016


Le Thu, 04 Feb 2016 19:55:13 -0500,
Ken Mankoff <mankoff at gmail.com> a écrit :

> Hi,
> 
> I think I've solved this. I can compute i,j with:
> 
> On 2016-02-04 at 16:48, Ken Mankoff <mankoff at gmail.com> wrote:
> > I'd like to do additional processing elsewhere (Python), outside of
> > grass, based on the index (i,j) of each point in a raster. Is
> > it possible to loop through the lon,lat or x,y coordinates in grass,
> > perform a calculation, and then also generate the i,j grid index
> > values for each point?
> >  
> 
> eval `g.region -pg`
> r.out.xyz input=surf output=- fs=, | cut -d"," -f1-2 | while read -r
> line do
>   x=$(echo $line | cut -f1 -d,)
>   y=$(echo $line | cut -f2 -d,)
>   i=`echo "(($x)-($w))/$ewres"|bc`
>   j=`echo "(($y)-($s))/$nsres"|bc`
>   echo $x   $y   $i   $j
> done

You can also do this directly in GRASS using
r.mapcalc. Something like this:

g.region rast=YourMap
r.mapcalc "row = row()"
r.mapcalc "col = col()"
r.stats -g in=row,col output=results.csv

By adding YourMap (or others) to the in= parameter of r.stats you can
get the x,y and i,j coordinates directly with the respective pixel
values.


Moritz


More information about the grass-user mailing list