[..]
> I am looking for a way to compute r.neighbors for a ring only and not
> forthe
> whole 5x5, 7x7 etc. moving window.
> It is something like a 7x7 windows but minus the values in the 5x5
> windows.
>
> traditional way:
>
> a a a a a
> a b b b a
> a b x b a
> a b b b a
> a a a a a
>
> ring analysis:
>
> a a a a a
> a a
> a x a
> a a
> a a a a aI'm guessing that should be:
> a a a a a
> a a
> a x a
> a a
> a a a a a
>
>
> I think there is no post-r.neighbors way to compute statistics in such
> a "ring",It depends upon the aggregate. Some of them could be computed with a
combination of r.neighbors and r.mapcalc commands.They could all be done using r.mapcalc, but some of them might require
excessively complex expressions (at a minimum, they would all involve
16 map[r,c] terms). r.mapcalc has n-ary min, max, median and mode; sum
and mean are fairly easy to write (you would probably want to process
the nulls separately to simplify the expressions), variance and stddev
aren't hard but would be somewhat more verbose.
I wrote a short neighbourhood ring analysis for average and
variance analysis (currently only up to 11x11 but I will add rings up to
21x21).
Hamish advice how to improve a script (v.cellstats threat) is partly
incorporated but I am grateful for any further suggestions how to improve this
script.
Martin
Of course, the expressions get longer as the window size increases,
and you would need a separate expression for each size (although you
could probably generate it from a script).> hence I or somebody else has to modify the source code. I am
> willing to learn some more C programming, but definitely need some help
> to get started.I'm not sure it's worth modifying r.neighbors for this specific case
(it might be worth you modifying your version, but not us shipping a
modified version). More generally useful would be to allow the
neighbourhood set to be read from a file, similar to r.mfilter (or
even just have a list of offsets as an optional argument).
(attachments)
r.ring (13.3 KB)