Google Earth Engine ee.Number to integer - PullRequest
0 голосов
/ 05 декабря 2018

Это, вероятно, простой вопрос для людей, знакомых с Редактором кода Google Earth Engine (https://code.earthengine.google.com/) или вообще Javascript.

В моем коде мне нужно использовать размер объектадля логического условия (например, n> 0). Однако вывод .size (), который я буду хранить в n, возвращает не простое целое число, а структуру ee.Number, и я не могу преобразовать его вцелое число для правильной оценки условного выражения.

Пример со структурой ee.Number of Earth Engine:

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)

возвращает объект (JSON):

object

Любая помощь очень ценится. Спасибо

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Это связано с тем, как работает GEE.Этапы обработки создаются локально как объекты и затем оцениваются сервером только тогда, когда это требуется для другой функции.

print - это одна из функций, которая требует выполнения, поэтому она отображается как целое число в вашей консоли.

Вы можете принудительно выполнить оценку с помощью .getInfo() ... однако это следует использовать с осторожностью, поскольку все тянется на сторону клиента, что может быть проблематично для больших объектов.

Так что это работает:

var n=ee.Number(1)

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

, дающий

1
true

В этом разделе документации объясняется история вопроса.

0 голосов
/ 05 декабря 2018

Если значение n действительно является JSON, попробуйте проанализировать его:

n = JSON.parse(n);

Затем преобразовать его в целое число:

n = parseInt(n);
...