Opened 4 years ago

Closed 3 years ago

Last modified 3 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 Changed 4 years ago by martinl

Component: DefaultRaster

comment:2 Changed 4 years ago by marisn

Resolution: fixed
Status: newclosed

In 70674:

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

comment:3 Changed 4 years ago by martinl

Resolution: fixed
Status: closedreopened

Milestone set to 7.2.1, backport is needed.

comment:4 Changed 4 years ago by marisn

Resolution: fixed
Status: reopenedclosed

In 70675:

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

comment:5 Changed 4 years ago by marisn

In 70676:

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

comment:6 in reply to:  2 ; Changed 4 years ago by 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.

comment:7 in reply to:  6 ; Changed 3 years ago by neteler

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?

comment:8 in reply to:  7 Changed 3 years ago by mmetz

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 Changed 3 years ago by neteler

Resolution: fixed
Status: reopenedclosed

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

comment:10 in reply to:  9 Changed 3 years ago by mmetz

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.