Can someone determine whether there's a problem with
"r.neighbors gauss=..." in 6.x?
Martin Album Ytre-Eide wrote:
I followed you examples and it did not work in grass 6.4.4 so I
tried them in grass7.1 and they worked for me as well.Tried my map - and it worked. I result looks good
Thanks!
(maybe there is a problem in r.neighbors for grass 6.4.4?)
Martin
________________________________________
Fra: Glynn Clements [glynn@gclements.plus.com]
Sendt: 2. oktober 2014 14:27
Til: Martin Album Ytre-Eide
Kopi: grass-user@lists.osgeo.org
Emne: Re: [GRASS-user] Gauss filter in r.neighborsMartin Album Ytre-Eide wrote:
> I am using the the r.neighbors function and I have an idea about
> what the 'Gauss' parameter will do for me, but I can't find any
> documentation for it. Experimenting with it, left me clueless.Using gauss= is equivalent to using weight= with a weights file
corresponding to a Gaussian filter.The exact weights which are used can be found in the
gaussian_weights() function in raster/r.neighbors/readweights.c. They
are effectively:ncb.weights[i][j] = exp(-(x*x+y*y)/(2*sigma2))/(2*M_PI*sigma2);
where x, y is the offset (in cells) from the centre of the
neighbourhood and sigma2 is the square of the value passed to the
gauss= option.> What I won't to do:
> Apply a Gaussian weighting of cell neighbors and sum the values of
> the neighbors. If all cells=1, I would get only 1's back.You need to use method=average to make the effective weights sum to
one (when weights are used, method=average divides the weighted sum of
the cell values by the sum of the weights).IIRC, the weights are such that they would sum to one if you had an
infinitely-large neighbourhood, but the fact that you're cropping the
curve to a finite neighbourhood means that the sum will always be less
than one.The weights are determined by sigma alone, and are unaffected by the
neighbourhood size.> I have a map of zeros and ones. I tried this:
>
> r.neighbors -c input='input_map' output='output_map' method=sum gauss=10 size=33
>
> The result is a map with only zeros.It works for me; e.g.
$ r.mapcalc --o 'foo = rand(0,2)' seed=1
$ r.neighbors --o -c in=foo out=bar method=average size=33 gauss=10
$ r.info -r bar
min=0.442173333781042
max=0.568925311919939
$ r.neighbors --o -c in=foo out=bar method=sum size=33 gauss=10
$ r.info -r bar
min=0.0985901293262625
max=0.449425795562072$ r.mapcalc --o 'foo = 1'
$ r.neighbors --o -c in=foo out=bar method=average size=33 gauss=10
$ r.info -r bar
min=1
max=1
$ r.neighbors --o -c in=foo out=bar method=sum size=33 gauss=10
$ r.info -r bar
min=0.221413499330273
max=0.812157275619236
--
Glynn Clements <glynn@gclements.plus.com>