[GRASS-user] else if in GRASS GIS

Hello guys,

I try to create conditional statement. When I running the formula in GRASS, there is error. Can someone help me to convert in GRASS formula format. The formula is something like :

if ( rgb.1 > 1810.877778) and ( rgb.1 < 23442.122222 ) and (rgb.2 > 673.148594) and (rgb.2 < 22729.389558) then 0 else if rgb.1 = 0 then 255 else 100

I have try, but with error. My false formula :
r.mapcalc --overwrite expression=awan = if ( rgb.1 > 1810.877778 & rgb.1 < 23442.122222 & rgb.2 > 673.148594 & rgb.2 < 22729.389558 , 0) else if ( rgb.1 = 0, 255, 100)
syntax error, unexpected NAME, expecting $end
Parse error

ERROR: parse error

Any suggestion?

Regards,
mega

···

On 1/1/21 3:25 PM, mega saputra wrote:

Hello guys,

I try to create conditional statement. When I running the formula in GRASS, there is error. Can someone help me to convert in GRASS formula format. The formula is something like :

if ( rgb.1 > 1810.877778) and ( rgb.1 < 23442.122222 ) and (rgb.2 > 673.148594) and (rgb.2 < 22729.389558) then 0 else if rgb.1 = 0 then 255 else 100

I have try, but with error. My false formula :
r.mapcalc --overwrite expression=awan = if ( rgb.1 > 1810.877778 & rgb.1 < 23442.122222 & rgb.2 > 673.148594 & rgb.2 < 22729.389558 , 0) else if ( rgb.1 = 0, 255, 100)

There is no “else” in mapcalc. You put the else expression after the second comma.

Should be:

r.mapcalc --o "awan = if(rgb.1 > 1810.877778 && rgb.1 < 23442.122222 && rgb.2 > 673.148594 & rgb.2 < 22729.389558 , 0, if(rgb.1 = 0, 255, 100))

syntax error, unexpected NAME, expecting $end
Parse error

ERROR: parse error

Any suggestion?

Regards,
mega

_______________________________________________
grass-user mailing list
[grass-user@lists.osgeo.org](mailto:grass-user@lists.osgeo.org)
[https://lists.osgeo.org/mailman/listinfo/grass-user](https://lists.osgeo.org/mailman/listinfo/grass-user)

-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918

It succeed with no error. I add a little syntax :

r.mapcalc --overwrite expression=awan = if( “rgb.1@PERMANENT” > 1810.877778 && “rgb.1@PERMANENT” < 23442.122222 && “rgb.3@PERMANENT” > 673.148594 && “rgb.3@PERMANENT” < 22729.389558 , 0, if(“rgb.1@PERMANENT” == 0, 255, 100))

Thank you

On Fri, Jan 1, 2021 at 9:32 PM Micha Silver <tsvibar@gmail.com> wrote:

On 1/1/21 3:25 PM, mega saputra wrote:

Hello guys,

I try to create conditional statement. When I running the formula in GRASS, there is error. Can someone help me to convert in GRASS formula format. The formula is something like :

if ( rgb.1 > 1810.877778) and ( rgb.1 < 23442.122222 ) and (rgb.2 > 673.148594) and (rgb.2 < 22729.389558) then 0 else if rgb.1 = 0 then 255 else 100

I have try, but with error. My false formula :
r.mapcalc --overwrite expression=awan = if ( rgb.1 > 1810.877778 & rgb.1 < 23442.122222 & rgb.2 > 673.148594 & rgb.2 < 22729.389558 , 0) else if ( rgb.1 = 0, 255, 100)

There is no “else” in mapcalc. You put the else expression after the second comma.

Should be:

r.mapcalc --o "awan = if(rgb.1 > 1810.877778 && rgb.1 < 23442.122222 && rgb.2 > 673.148594 & rgb.2 < 22729.389558 , 0, if(rgb.1 = 0, 255, 100))

syntax error, unexpected NAME, expecting $end
Parse error

ERROR: parse error

Any suggestion?

Regards,
mega

_______________________________________________
grass-user mailing list
[grass-user@lists.osgeo.org](mailto:grass-user@lists.osgeo.org)
[https://lists.osgeo.org/mailman/listinfo/grass-user](https://lists.osgeo.org/mailman/listinfo/grass-user)

-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918