Google Earth Engine ee. Число в целое число

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

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

Пример со структурой ee.Number 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))

Это выводит их как false, даже когда я пытаюсь попробовать числовую структуру в int.

1
1
false
false
false
false
false

Заметка:

print(typeof n)

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

object

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


person Moisés Expósito Alonso    schedule 05.12.2018    source источник


Ответы (2)


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

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

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

Итак, это работает:

var n=ee.Number(1)

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

давая

1
верно

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

person Val    schedule 05.12.2018

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

n = JSON.parse(n);

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

n = parseInt(n);
person Peter    schedule 05.12.2018
comment
Я попробовал это потенциальное решение, но не сработало. Может, я что-то упускаю. - person Moisés Expósito Alonso; 06.12.2018