Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#3296 closed defect (fixed)

r.mapcalc: nmedian() unexpected results

Reported by: sbl Owned by: grass-dev@…
Priority: normal Milestone: 7.2.1
Component: Raster Version: svn-releasebranch72
Keywords: r.mapcalc, nmedian() Cc:
CPU: Unspecified Platform: Unspecified

Description

Seems that the nmedian() function in r.mapcalc for both GRASS 7.0, GRASS 7.2 and trunk gives unexpected results. The neighborhood modifer I used do not seem to cause the issue...

This:

g.region -p n=3 s=0 e=3 w=0 res=1
r.mapcalc expression="test=row()*col()" --o
r.mapcalc expression="nbh_test_r=(test[0,-1] - test)^2.0" --o
r.mapcalc expression="nbh_test_l=(test[0,1] - test)^2.0" --o
r.mapcalc expression="nmed_test=nmedian(((test[0,-1] - test)^2.0,(test[0,1] - test)^2.0))" --o

should result in a horizontally striped map with values covering 1 (top row), 4 (middle row, and 9 (bottom row). However, the leftmost column contains values 0.2, 2.5, 6.5 (from top to bottom).

Yet, here - where values only differ from column to column -

r.mapcalc expression="test=col()" --o
r.mapcalc expression="nmed_test=nmedian(((test[0,-1] - test)^2.0,(test[0,1] - test)^2.0))" --o

only the top-left cell has an odd value of 0.5 while the rest has value 1 as expected...

Change History (10)

comment:1 by martinl, 5 years ago

Component: DefaultRaster

comment:2 by marisn, 5 years ago

Resolution: fixed
Status: newclosed

In 70674:

Do not calculate median if only one variable is provided.
Fixes #3296

comment:3 by martinl, 5 years ago

Resolution: fixed
Status: closedreopened

Milestone set to 7.2.1, backport is needed.

comment:4 by marisn, 5 years ago

Resolution: fixed
Status: reopenedclosed

In 70675:

Do not calculate median if only one variable is provided.
Fixes #3296 (backport of r70674)

comment:5 by marisn, 5 years ago

In 70676:

Do not calculate median if only one variable is provided.
Fixes #3296 (backport of r70674)

in reply to:  2 ; comment:6 by mmetz, 5 years ago

Replying to marisn:

In 70674:

Do not calculate median if only one variable is provided.
Fixes #3296

Fixed in trunk r70683. You need to use the actual number of non-NULL values to set the pointers a1, a2.

in reply to:  6 ; comment:7 by neteler, 5 years ago

Resolution: fixed
Status: closedreopened

Replying to mmetz:

Replying to marisn:

In 70674:

Do not calculate median if only one variable is provided.
Fixes #3296

Fixed in trunk r70683. You need to use the actual number of non-NULL values to set the pointers a1, a2.

Does(n't) this need to be backported?

in reply to:  7 comment:8 by mmetz, 5 years ago

Replying to neteler:

Replying to mmetz:

Replying to marisn:

In 70674:

Do not calculate median if only one variable is provided.
Fixes #3296

Fixed in trunk r70683. You need to use the actual number of non-NULL values to set the pointers a1, a2.

Does(n't) this need to be backported?

Already done in r70684 (Feb 2017).

comment:9 by neteler, 5 years ago

Resolution: fixed
Status: reopenedclosed

OK, thanks. I just saw (further) differences between trunk and relbranch72 in this file..

in reply to:  9 comment:10 by mmetz, 5 years ago

Replying to neteler:

OK, thanks. I just saw (further) differences between trunk and relbranch72 in this file..

These are improvements for trunk.

Note: See TracTickets for help on using tickets.