Opened 10 years ago

Closed 10 years ago

#2686 closed defect (invalid)

r.hazard.flood error output

Reported by: zimbogisgeek Owned by: grass-dev@…
Priority: normal Milestone: 7.0.1
Component: Addons Version: svn-releasebranch70
Keywords: r.hazard.flood Cc: madi
CPU: All Platform: All

Description

Running r.hazard.flood produces an erroneous map mainly because in the r.hazard.py script there is a mistake in calculating the final map. The command that produces the error is

grass.mapcalc("$r_flood_map = $rast1 / $rast1", r_flood_map = r_flood_map, rast1 = 'r_flood_th')

which should be

grass.mapcalc("$r_flood_map = $rast1 / $rast2", r_flood_map = r_flood_map, rast1 = 'r_flood_th', rast2 = 'r_flood')

Change History (7)

comment:1 by neteler, 10 years ago

Cc: madi added
Component: PythonAddons
Keywords: r.hazard.flood added

comment:2 by madi, 10 years ago

Priority: criticalnormal

Hi, thank you for pointing this out, but does this actually produce an erroneous result? could you give an example? Thanks

comment:3 by lucadelu, 10 years ago

Hi Madi, but the code is dividing the same maps

"$r_flood_map = $rast1 / $rast1"

so it return for every pixel 1, is it the right behavior?

in reply to:  3 ; comment:4 by madi, 10 years ago

Replying to lucadelu:

Hi Madi, but the code is dividing the same maps

"$r_flood_map = $rast1 / $rast1"

so it return for every pixel 1, is it the right behavior?

yes, the expected result is a binary map (yes=1, no=null) Thanks, madi

in reply to:  4 ; comment:5 by neteler, 10 years ago

Replying to madi:

Replying to lucadelu:

Hi Madi, but the code is dividing the same maps

"$r_flood_map = $rast1 / $rast1"

so it return for every pixel 1, is it the right behavior?

The behaviour in question comes from r.mapcalc:

yes, the expected result is a binary map (yes=1, no=null)

Here a quick test:

r.mapcalc "result = 1/1"
r.univar -g result | grep 'min\|max\|null'
null_cells=0
min=1
max=1

r.mapcalc "result2 = 0/0"
r.info result2 | grep 'min\|max\|null'
 |   Range of data:    min = NULL  max = NULL

r.mapcalc "result3 = null()/null()"
r.info result3 | grep 'min\|max\|null'
 |   Range of data:    min = NULL  max = NULL

Is this what should happen in r.hazard.flood?

in reply to:  5 comment:6 by madi, 10 years ago

Replying to neteler:

Replying to madi:

Replying to lucadelu:

Hi Madi, but the code is dividing the same maps

"$r_flood_map = $rast1 / $rast1"

so it return for every pixel 1, is it the right behavior?

The behaviour in question comes from r.mapcalc:

yes, the expected result is a binary map (yes=1, no=null)

Here a quick test:

r.mapcalc "result = 1/1"
r.univar -g result | grep 'min\|max\|null'
null_cells=0
min=1
max=1

r.mapcalc "result2 = 0/0"
r.info result2 | grep 'min\|max\|null'
 |   Range of data:    min = NULL  max = NULL

r.mapcalc "result3 = null()/null()"
r.info result3 | grep 'min\|max\|null'
 |   Range of data:    min = NULL  max = NULL

Is this what should happen in r.hazard.flood?

Precisely so.

comment:7 by madi, 10 years ago

Resolution: invalid
Status: newclosed

I double checked the code and unless I can't see the obvious it looks alright to me. Therefore I'm closing this ticket as invalid. Please feel free to reopen it if something looks amiss. However, the expected result of this tool is indeed a binary map.

Note: See TracTickets for help on using tickets.