Opened 4 years ago

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

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

comment:2 Changed 4 years ago by madi

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 Changed 4 years ago by 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?

comment:4 in reply to:  3 ; Changed 4 years ago by 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?

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

comment:5 in reply to:  4 ; Changed 4 years ago by 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?

comment:6 in reply to:  5 Changed 4 years ago by madi

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 Changed 4 years ago by madi

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.