[GRASS-dev] weird bug(?) with r.mapcalc neighborhood modifier
Moritz Lennert
mlennert at club.worldonline.be
Sat Feb 13 06:16:06 PST 2016
Hi,
I'm not sure if this is a bug or just some feature of r.mapcalc that I
don't really understand, so I'm posting here, not yet on track.
I'm working on a module that calculate Moran's I for raster segments
(i.e. clumps). For this I need to identify neighboring regions. I do
that on a pixel-base, identifying in each direction of a given pixel
those neighbors that have a different value than the current pixel.
Here's an example of what I do, identifying neighbors lying below the
current pixel:
g.region n=224480.25 s=223910.25 w=635623 e=636449.5 res=28.5
r.mapcalc "nd = if(landclass96[1,0]!=landclass96, landclass96[1,0], null())"
r.stats -1n landclass96,nd sep=comma --q | awk -F, '{if($1==$2) print $0}'
5,5
5,5
1,1
1,1
5,5
This r.stats result should not happen, IIUC: as I explicitly test for
inequality in the r.mapcalc call, pixels should not have the same values
in landclass96 and nd.
The weird thing is this:
r.mapcalc "nd_temp = landclass96[1,0]"
r.mapcalc "nd2 = if(nd_temp!=landclass96, nd_temp, null())"
r.stats -1n landclass96,nd2 sep=comma --q | awk -F, '{if($1==$2) print $0}'
[empty result]
i.e. by decomposing the r.mapcalc call into two separate calls, first
identifying the below neighbor value of each pixel, then only keeping
values for those pixels where that below neighbor value is different,
everything works as expected.
I'm I not using neighborhood modifiers as I should, or is this a bug ?
Moritz
More information about the grass-dev
mailing list