Google Earth Engine ee.Number 为整数

Google Earth Engine ee.Number to integer

对于熟悉 Google Earth Engine (https://code.earthengine.google.com/) 或一般 Javascript.

的代码编辑器的人来说,这可能是一个简单的问题

在我的代码中,我需要将对象的大小用于布尔条件(例如 n>0)。但是,我将存储在 n 中的 .size() 的输出不是 return 普通整数,而是 ee.Number 结构,我无法将其转换为整数以正确评估有条件的。

Earth Engine 结构 ee.Number 的示例:

var n=ee.Number(1)
print(n)
print(n.int())
print(n==1)
print(n===1)
print(n.int()==1)
print(n.int()===1)
print(n.int()== parseInt(1))

这输出这些评估为假,即使当我尝试将数字结构转化为 int 时也是如此。

1
1
false
false
false
false
false

注:

print(typeof n)

return一个对象(JSON):

object

非常感谢任何帮助。谢谢

如果n的值确实是JSON,尝试解析它:

n = JSON.parse(n);

然后转换成整数:

n = parseInt(n);

这是因为 GEE 的工作原理。处理步骤在本地构造为对象,然后仅在另一个函数需要时才由服务器评估。

print 是需要执行的函数之一,这就是它在您的控制台中显示为整数的原因。

您可以使用 .getInfo() 强制求值...但是应该谨慎使用,因为所有内容都被拉到客户端,这对于大对象可能会有问题。

所以这有效:

var n=ee.Number(1)

print(n)
print(n.getInfo()==1)

给予

1
true

This 文档部分解释了背景。