6

I wrote some simple code to test the if/else structure in GEE:

var flag = ee.Algorithms.IsEqual(1,5);
print(flag)
if (flag) {
 print("this is true");
} else {
 print("this is false");
}

the output was:

false;
this is true

Does anyone know how to adjust the above statement to be effective?

3
  • Note that you are using a server-side Earth Engine object in a client-side operation. Earth Engine objects in the client are interpreted as a JSON strings and strings are converted to boolean in JavaScript if() if there is no expression to evaluate. Since the JSON string is not null it converts to true. More on Client vs Server, More on JS if() and strings. Commented Dec 4, 2019 at 20:17
  • The EE code editor print() function hides some of this semantic. Your print(flag) outputs false, but like Justin points out, it's not a boolean. Look here: code.earthengine.google.com/f4801a5b13115c04486c1785c273ce43 At the time you do your if(flag), the value of flag is actually not evaluated yet. Commented Dec 4, 2019 at 20:42
  • Good point, Daniel, thanks for noting: The EE code editor print() function hides some of this semantic Commented Dec 4, 2019 at 20:54

1 Answer 1

7

You typically try to not end up in situations where you do conditionals in EE. If you really, really need it, you can do like this:

var flag = ee.Algorithms.IsEqual(1, 5)
print(flag)
var s = ee.Algorithms.If(flag, "this is true", "this is false")
print(s)

https://code.earthengine.google.com/d7e786473db194bdb01c32aab034e5d3

1
  • 3
    See the If/Else section of the Earth Engine developer docs for more info on why ee.Algorithms.If() should be avoided if possible. Commented Dec 6, 2019 at 23:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.